多渠道打包框架packer-ng-plugin簡單使用

    packer-ng-plugin是一個快速生成渠道包的工具,android使用的apk包的壓縮方式是zip,與zip有相同的文件結(jié)構(gòu),在zip的Central directory file header中包含一個File comment區(qū)域,可以存放一些數(shù)據(jù)。File comment是zip文件如果可以正確的修改這個部分,就可以在不破壞壓縮包、不用重新打包的的前提下快速的給apk文件寫入自己想要的數(shù)據(jù)。 不同于在build.gradle設(shè)置productFlavors需要多次編譯,該方式只需要build一次,所以效率很高。集成方式如下:

一、項目根目錄的 build.gradle

buildscript {
    ......
    dependencies{
    // add packer-ng
        classpath 'com.mcxiaoke.gradle:packer-ng:1.0.9'
    }
}  

二、在app\build.gradle中添加

apply plugin: 'packer' 

packer {
    checkSigningConfig = true
    checkZipAlign = true
//    archiveNameFormat = '${appPkg}-${flavorName}-${buildType}-v${versionName}-${versionCode}-${fileMD5}'
    archiveNameFormat = 'yidu-${flavorName}-${buildType}-v${versionName}-${versionCode}'
    archiveOutput = file(new File(project.rootProject.buildDir.path, "myapks"))
}

dependencies {
    //打包工具
    compile 'com.mcxiaoke.gradle:packer-helper:1.0.9'
} 

 android {
    //...
    signingConfigs {
      debug {
            storeFile file("text.jks")
            storePassword "123456"
            keyAlias "text_app"
            keyPassword "123456"
            v2SigningEnabled false
        }

        release {
            storeFile file("text.jks")
            storePassword "123456"
            keyAlias "text_app"
            keyPassword "123456"
            v2SigningEnabled false
        }
    }
  }

三、在項目根目錄下新建一個markets.txt文件,一個渠道一行如圖

image

四、配置好android環(huán)境和Gradle環(huán)境類似配置java環(huán)境

不做解釋網(wǎng)上搜吧

五、在Terminal中一行指令生成渠道包

gradlew -Pmarket=markets.txt clean apkRelease

注:渠道包在項目的build\apks里。

六、渠道獲取方法

String market = PackerNg.getMarket(Context)

七、注意事項

加固后渠道信息就取不到了,需要重新寫入渠道。

猜測可能加固工具(360、樂固等)時不光干掉了簽名,也干掉了通過該方法寫入的渠道信息。

更詳細(xì)的配置請參考github開源項目packer-ng-plugin

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容