多渠道打包框架packer-ng-plugin简单使用

    packer-ng-plugin是一个快速生成渠道包的工具,android使用的apk包的压缩方式是zip,与zip有相同的文件结构,在zip的Central directory file header中包含一个File comment区域,可以存放一些数据。File comment是zip文件如果可以正确的修改这个部分,就可以在不破坏压缩包、不用重新打包的的前提下快速的给apk文件写入自己想要的数据。 不同于在build.gradle设置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环境和Gradle环境类似配置java环境

不做解释网上搜吧

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

gradlew -Pmarket=markets.txt clean apkRelease

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

六、渠道获取方法

String market = PackerNg.getMarket(Context)

七、注意事项

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

猜测可能加固工具(360、乐固等)时不光干掉了签名,也干掉了通过该方法写入的渠道信息。

更详细的配置请参考github开源项目packer-ng-plugin

你可能感兴趣的:(多渠道打包框架packer-ng-plugin简单使用)