当前位置:   article > 正文

android 多渠道打包配置,android 多渠道打包

多渠道包,对apk本身有什么要求?

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/253096
推荐阅读
相关标签
  

闽ICP备14008679号