1. 包名 & icon等一些应用级别的配置
通过配置Gradle来实现这样的多包
productFlavors {
zhuoShiXiong {
applicationId "com.example.app1"
resValue "string", "app_name", "包名1"
buildConfigField "string", "WX_ID", '"wx999999999999999"'
buildConfigField "string", "APP_SECRET", '"00dsadsadsadae"'
manifestPlaceholders = [
app_name:"APP名称1",
app_icon:"@mipmap/zsx"
]
}
wxHuiFu {
applicationId "com.example.app2"
resValue "string", "app_name", "包名2"
buildConfigField "string", "WX_ID", '"wx999999999999999"'
buildConfigField "string", "APP_SECRET", '"00dsadsadsadae"'
manifestPlaceholders = [
app_name:"APP名称2",
app_icon:"@mipmap/wx_huifu"
]
}
}
清单文件的配置如下,文件路径名全部改为绝对路径
<application
android:icon="${app_icon}"
android:label="@string/app_name"
android:name="com.company.aaa.MyApplication"
>
<activity
android:name="com.company.aaa.Activities.Startup.HelpActivity" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
.....
</application>
2. 第三方和包名相关的配置
支付宝支付
支付宝无论是H5支付还是V2支付方式,客户端均不需要配置。后台的支付回调参数需要根据不同app的请求,返回对应的支付请求参数。
微信支付和微信登录
微信需要在Application入口,注册APP_ID和APP_SECRET,通过gradle文件配置方式,来实现多包变化。方法见第一条的配置Demo。后台的支付回调参数同支付宝一样,需要变化。
埋点
神策没有对包名有依赖,需要的渠道名也是通过签名工具注入清单文件,无需额外配置。
3. 资源文件的分发
资源文件涉及到皮肤概念,但是分包的皮肤不会有额外的动态换肤功能。所以不通过切换上下文来实现换肤的方式。而是通过配置皮肤主题管理器来实现资源分发。
代码和资源是放在同一个工程里面,这样带来的好处,代码及共用的资源可以在一起,不必维护多次。通过分包打包的方式,可以避免资源放在一起增加包容量大小的问题。
这里的资源包括:图片,颜色,字体大小,样式等等
原加载资源的方式:

现在加载方式通过SkinManager做分发

4. 布局或者应用流程变化
因为分包设计没有一定标准化的东西,所以没办法做碎片化。所以针对布局或者流程变化我们会重新开辟新的页面。然后跳转通过路由的方式调整。

混淆 加固 打包等方式都不需要改变。
通过实践总结,除去具体的分包业务需求改变外,还需要修改的地方有:
- 支付宝和微信的支付配置信息的修改,后台接口支持多包的支付参数返回
- 版本检测接口需要支持多包
- 如果用户是独立的,那所有和用户相关的接口都需要支持多包。
网友评论