场景说明
通过OEM定制,客户可以在原来Smartbi Android APP基础上进行修改,修改其中的应用信息、桌面图标、启动图片、加载中的图片、主界面、登录界面等,最后打包生成一个OEM定制的Android APK文件。
在Android设备上安装该APK文件,会安装一个经过OEM定制的APP,得到在APP界面上显示客户的LOGO等显示效果。
Smartbi支持OEM定制以下内容:
1.应用信息
下表是一些OEM定制中常需修改的值。其中“名称”一列在修改应用信息时会使用到,在后文中会有说明。
名称 | 示例 | 说明 |
---|---|---|
app_name | Smartbi | 应用显示名称 |
DEFAULT_SERVER_ADDR${n} | http://demo.smartbi.com.cn/smartbi | 配置第n个服务器的地址 |
DEFAULT_USER_NAME${n} | demo | 配置第n个服务器的登录用户名 |
DEFAULT_PASSWORD${n} | demo | 配置第n个服务器的登录密码 |
2.相关图片资源
OEM定制过程中,一般需要修改以下6张图片。注意,在修改时,图片的名称和尺寸必须与下表严格一致。
下表中所说的“路径”在后面修改图片资源时会使用到,在后文中会有说明。
图片 | 尺寸 | 路径 |
---|---|---|
桌面图标 | 144×144 | Smartbi for Android Packager\smartbi\res\drawable\logo_icon.png |
LOGO | 550×320 | Smartbi for Android Packager\smartbi\res\drawable\logo.png |
加载中图片 | 1024×768 | Smartbi for Android Packager\smartbi\res\drawable\loading_pad.png |
加载中LOGO | 400×100 | Smartbi for Android Packager\smartbi\res\drawable\loading_logo.png |
主界面背景 | 1024×768 | Smartbi for Android Packager\smartbi\res\drawable\mainview_background.png |
桌面图标(高分辨率设备) | 144×144 | Smartbi for Android Packager\smartbi\res\drawable-hdpi\logo_icon.png |
OEM定制步骤
注:若是希望后期oem更新后,APP自动提醒用户更新,可先查看wiki文档,移动端oem定制更新后提醒用户下载 再进行OEM定制 |
---|
为了方便客户进行OEM定制,我们提供了Smartbi for Android Packager工具,按以下步骤可以完成OEM定制:
- 下载Smartbi for Android Packager.zip并解压。
- 在http://app.smartbi.com.cn下载最新Smartbi apk文件,放到解压后的Smartbi for Android Packager目录中,并重命名为smartbi.apk。
修改Smartbi for Android Packager\decode.cmd中的Java路径,建议先设置好JAVA_HOME环境变量,然后像下图那样设置。注意,JAVA路径最好包含在双引号中,否则会在路径中包含空格时报错。
- 执行Smartbi for Android Packager\decode.cmd,执行完毕后smartbi.apk会被解压生成Smartbi for Android Packager\smartbi文件夹。
- OEM定制的APP应该避免收到各安卓商店的升级提示信息,因为升级相当于将定制内容重置。
用文本编辑器打开Smartbi for Android Packager\smartbi\AndroidManifest.xml,修改<manifest>元素的android:versionCode属性的值(即下图中的值)为一个较大的数值。
该数值是APP的版本号信息,后续发布新的版本,会持续提升这个值。设置一个较大的值,例如9999,可以避免收到各个安桌应用商店的升级提示信息。 - 应用信息修改:用文本编辑器打开Smartbi for Android Packager\smartbi\res\values\strings.xml,就可以对目标信息进行修改。
应用信息的修改可以参考该表,表中的“名称”列对应的就是strings.xml中<string>的name属性。
除了上表提到的信息外,还需修改<string name="updateCheckType">这一元素的值为private,如下图所示,这样可以避免访问app.smartbi.com.cn去获取新版本。
其中,app_name是app的显示名称,updateCheckType设置为private避免访问app.smartbi.com.cn去获取新版本,version_n / webaddr_v /support_v / copyright_v等在设置界面显示,DEFAULT_SERVER_ADDR1 / DEFAULT_USER_NAME1 / DEFAULT_PASSWORD1D等设置了默认的服务器地址和默认访问用户/密码 - 相关图片资源修改:
相关图片资源都在Smartbi for Android Packager\smartbi\res\drawable-xxx(各目录对应不同分辨率的设备)下。
OEM定制中主要涉及到6张图片,如该表所示。表中“路径”一列表示的就是对应图片文件在解压目录下的位置及名称。
要修改这些资源,只需替换对应的图片文件即可。注意,必须保证替换图片的文件名和图片尺寸与原图片文件完全一致。 修改Smartbi for Android Packager\encode.cmd中的Java路径,然后执行encode.cmd。
执行完成后,Smartbi for Android Packager\smartbi目录下的内容将会被编译成Smartbi for Android Packager\Smartbi_new.apk文件。
APK文件签名
上文中生成的APK文件其实已经可以安装到Android设备中,但为了安全性起见,一般都要对APK文件进行签名。
对APK文件进行签名的主要目的,是防止第三方通过在设备上安装包名完全一致的APP来替换掉自己的APP,而且没有签名的APK文件有可能会被某些设备认为不安全而拒绝安装。
如果对这方面没有需求,理论上可以跳过APK文件签名,直接安装到Android设备上,但不建议这么做。
进行APK文件签名,可以按以下步骤来完成:
- 生成keystore证书,这是Android应用签名必须的。
- 如果已经有自己的证书,直接将自己的证书文件重命名为Smartbi.keystore然后放在Smartbi for Android Packager目录下,然后跳到第2步;
- 如果上次已经生成过证书,且证书已经在Smartbi for Android Packager目录下,则直接跳到第2步;
- 如果这是第一次操作,且没有证书,请按以下步骤生成证书文件:
- 修改Smartbi for Android Packager\makekey.cmd中的Java路径、keypass和storepass。
其中keypass和storepass是keystore中需要设置的两个密码,两个密码需要保持一致。 - 执行Smartbi for Android Packager\makekey.cmd,执行完成后,将生成Smartbi for Android Packager\Smartbi.keystore证书文件。
- 修改Smartbi for Android Packager\makekey.cmd中的Java路径、keypass和storepass。
- 修改Smartbi for Android Packager\resign.cmd中的Java路径、keypass和storepass,其中keypass和storepass需要与第1步中设置的值一样。
- 执行Smartbi for Android Packager\resign.cmd。
执行完成后,Smartbi for Android Packager\Smartbi_new.apk文件已经被签名成功。
可以注意到还生成了一个Smartbi for Android Packager\Smartbi_new_Unsigned.apk文件,这个文件是原来没有签名的APK文件的备份。
移动端首页资源修改
移动端首页等资源的修改没有在上面的工具中提供,因为它们是服务器提供、APP加载的。
要修改移动端首页,可以下载MobilePortalChange.ext扩展包,用压缩工具打开扩展包,然后替换其中相应的图片资源。注意,替换的图片资源名称和尺寸必须与对应图片文件一致。
移动端首页对应的图片资源在这扩展包中这两个目录下: 【MobilePortalChange.ext\vision\android\login\img】,【MobilePortalChange.ext\vision\android\portraitweb\img】
下面两个对应LOGO的文件:
MobilePortal.ext\vision\android\login\img\login_logo.png (544×72)
MobilePortal.ext\vision\android\portraitweb\img\homepage_banner.png (280×58)
这一步必做的:为了防止修改的logo后出现不生效的问题,修改了MobilePortalChange.ext 中哪个目录下的图片,就需要保证这个目录下的version.txt上的时间和产品war包中mobileprotal.ext扩展包中的相同路径下的version.txt的时间不能相同。安卓版本的version.txt路径为:MobilePortalChange.ext\vision\android\login(如下图) ,将里边的时间信息重新修改下,保持和war包版本中的mobileprotal.ext扩展包(war包中扩展包路径为:C:\Smartbi_Insight\Tomcat\webapps\smartbi\WEB-INF\extensions)中的version时间不一样即可:
最后,将扩展包部署到服务器上,详见扩展包部署。
“分享到微信”功能
由于“分享到微信”功能已经绑定了Smartbi的数字签名,因此按以上步骤生成的apk将无法使用“分享到微信”的功能。如果还需要此功能,有两种方式处理:
- 将“OEM定制步骤”中第8步生成的smartbi_new.apk发到support邮箱进行签名。这种方式的缺点是,此apk在微信中显示的小图标还是Smartbi的图标。
- 用户自行在微信开发平台上申请新的应用,并将申请的app包名发到support邮箱进行定制化开发。