您好,登錄后才能下訂單哦!
1、packerNg 式打包
Android應用使用的APK文件就是一個帶簽名信息的ZIP文件,根據 ZIP文件格式規范,每個ZIP文件的最后都必須有一個叫 Central Directory Record 的部分,這個CDR的最后部分叫”end of central directory record”,這一部分包含一些元數據,它的末尾是ZIP文件的注釋。注釋包含Comment Length和File Comment兩個字段,前者表示注釋內容的長度,后者是注釋的內容,正確修改這一部分不會對ZIP文件造成破壞,利用這個字段,我們可以添加一些自定義的數據,PackerNg項目就是在這里添加和讀取渠道信息。
<a > 對應github地址</a>
2、META-INF 式打包
可以只修改已有apk的渠道標志,快,批量,原理簡單
3、Gradle 打渠道包
基本原理是利用Gradle的 manifest merger 功能
這個功能的主要用途是能夠在運行時替換AndroidManifest.xml里面的內容
第一步 在AndroidManifest.xml里配置meta-data
<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看看,發現友盟這一段的配置已經相應的被修改了。
<meta-data
android:name="UMENG_CHANNEL"
android:value="default_channel" />
還可以利用Gradle生成單獨的渠道包
如 gradlew assembleWandoujiaRelease
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。