多渠道打包
最近项目用到多渠道打包,虽然网上又很多资料, 但是我在实际使用的过程中还是遇到了些问题, 在这里记录下,希望能帮助到你!
首先配置你的渠道信息 :
配置渠道信息
这个时候渠道使用的签名配置都是和主工程一致的, 如果需要修改, 只需要配置Signing Config就可以了.
开始以为只要这样就行了, 但实际编译的时候, 抛出了 All flavors must now belong to a named flavor dimension 的错误, 这是由于各渠道需要对版本号进行统一
统一渠道版本
同步Gradle后, 会生成各渠道的配置信息, 这里列举百度的:
productFlavors {
app_baidu {
applicationId = "你的appid"
manifestPlaceholders = [
CHANNEL_VALUE: "app_baidu", // 对应的渠道名称
JPUSH_PKGNAME: "", // 你的appid
JPUSH_APPKEY : "", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "", //暂时填写默认值即可.
]
}
}
如果你的项目中还用到了友盟统计和极光推送, 那么你要去配置不同的CHANNEL_VALUE, 以确保对不同渠道的统计:
在Manifest的application节点下, 添加
<meta-data
android:name="UMENG_CHANNEL"
android:value="${CHANNEL_VALUE}" />
然后在不同的渠道里对这个值进行修改
极光推送的配置也是类型, 将所有用到包名的地方替换为${applicationId} 然后就可以对不同渠道进行打包了!
马甲包
马甲包的情况和多渠道其实很相似, 只需要在配置渠道的地方修改不同的applicationId, 就可以生成一个马甲包了,可以和主包安装在一个手机上了, 但是往往实际情况没有这么简单, 我在这中间就碰到了一些问题
-
首先是马甲包要引用不同的资源 , 这里就需要创建不同的资源目录
创建马甲包资源目录
马甲包资源
然后就可以对资源进行修改, 达到对不同资源的引用
- 第三方库的兼容问题
我在项目中用到了知乎的开源图片选择器(吐槽一下,个人感觉不是很好用, 还有bug) , 里面对存储空间的provider进行配置
配置provider
其实就是Context.getPackageName()
以上就是关于Android多渠道打包和马甲包的操作中我遇到的问题, 如果对你有所帮助, 还请点赞,谢谢你!