android多渠道打包
1、packerNg 式打包
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网站空间、营销软件、网站建设、安吉网站维护、网站推广。
Android应用使用的APK文件就是一个带签名信息的ZIP文件,根据 ZIP文件格式规范,每个ZIP文件的最后都必须有一个叫 Central Directory Record 的部分,这个CDR的最后部分叫”end of central directory record”,这一部分包含一些元数据,它的末尾是ZIP文件的注释。注释包含Comment Length和File Comment两个字段,前者表示注释内容的长度,后者是注释的内容,正确修改这一部分不会对ZIP文件造成破坏,利用这个字段,我们可以添加一些自定义的数据,PackerNg项目就是在这里添加和读取渠道信息。
2、META-INF 式打包
可以只修改已有apk的渠道标志,快,批量,原理简单
3、Gradle 打渠道包
基本原理是利用Gradle的 manifest merger 功能
这个功能的主要用途是能够在运行时替换AndroidManifest.xml里面的内容
第一步 在AndroidManifest.xml里配置meta-data
android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> 第二步 在模块的build.gradle文件的defaultConfig里加上PlaceHolder定义 android { ... defaultConfig { ... manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"default_channel" ] } } 这里的作用有两个,一是声明UMENG_CHANNEL_VALUE是可替换值的PlaceHolder,二是为其设置默认值。 第三步 在模块的build.gradle文件里添加ProductFlavors配置 android { productFlavors { default_channel{} wandoujia{} _360{} yingyongbao{} xiaomi{} baidu{} huawei{} jifeng{} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ] } } 第四步 一次生成所有渠道包 到工程目录下运行gradlew assembleRelease。 可以看到这次编译一共产生了对应productFlavors段的不同渠道包。 可以反编译每个apk,打开AndroidManifest.xml看看,发现友盟这一段的配置已经相应的被修改了。 android:name="UMENG_CHANNEL" android:value="default_channel" /> 还可以利用Gradle生成单独的渠道包 如 gradlew assembleWandoujiaRelease
新闻标题:android多渠道打包
文章分享:http://scyanting.com/article/gojcjs.html