配置部分:
1、把channel文件和 打包key放入项目中
项目选择Project模式,注意文件所放位置,在app文件下
channel文件的渠道名字 # 后写备注内容
2、
配置build.gradle
在位于项目的根目录 build.gradle
文件中添加Walle Gradle插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.3'
}
}
并在当前App的 build.gradle
文件中apply这个插件,并添加上用于读取渠道号的AAR
apply
plugin:
'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.3'
}
dependencies {
compile 'com.meituan.android.walle:library:1.1.3'
}
3、
配置插件
这里是我的设置,具体规则参考文档
walle {
// 指定渠道包的输出路径
// apkOutputFolder = new File("${project.buildDir}/outputs/channels");
apkOutputFolder = new File( "D:/APK/MakeAPK")
// 定制渠道包的 APK 的文件名称
apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
// 渠道配置文件
channelFile = new File( "${ project. getProjectDir()} /channel.txt")
}
// 指定渠道包的输出路径
// apkOutputFolder = new File("${project.buildDir}/outputs/channels");
apkOutputFolder = new File( "D:/APK/MakeAPK")
// 定制渠道包的 APK 的文件名称
apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
// 渠道配置文件
channelFile = new File( "${ project. getProjectDir()} /channel.txt")
}
3、关联打包key 和密码
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.zs.login.myvarioustest"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
pkg {
storeFile file( "keystore/test.jks")
storePassword "qazwsx"
keyAlias "test"
keyPassword "qazwsx"
v2SigningEnabled true // 是否启用 APK Signature Scheme v2
}
}
buildTypes {
release {
minifyEnabled false //minifyEnabled 是否启用混淆
shrinkResources false // 删除无效的 Resource
proguardFiles getDefaultProguardFile( 'proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.pkg
}
}
}
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.zs.login.myvarioustest"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
pkg {
storeFile file( "keystore/test.jks")
storePassword "qazwsx"
keyAlias "test"
keyPassword "qazwsx"
v2SigningEnabled true // 是否启用 APK Signature Scheme v2
}
}
buildTypes {
release {
minifyEnabled false //minifyEnabled 是否启用混淆
shrinkResources false // 删除无效的 Resource
proguardFiles getDefaultProguardFile( 'proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.pkg
}
}
}
4、查看 渠道
我是写在了application中,安装批量打包成功后得包,检测渠道是否写入成功
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate() ;
String channel = WalleChannelReader. getChannel( this.getApplicationContext()) ;
Log. d( "My_Channel" , "channel = " + channel) ;
}
}
5、
打包方案:
方法一: Studio中直接打包
此方法异常简单,就一步:
Terminal 下 运行一句命令:gradlew clean assembleReleaseChannels
这是打所有渠道的包,其他操作(打单独的包)参看文档
耐心等待打包结束就好了,去指定的文件查看打出的包即可
方法二:命令行打包
1、下载美团提供的jar包,我是在csdn中下的
2、新建一个文件夹,把打包的channel文件,和 Studio中打的一个包(默认渠道或者没有的)放进去,批量打完的包会在这里。
3、打开cmd,命令行进入第一步放jar的地方
4、检差jar包是否正常(这步可以不要)
输入:
java -jar walle-cli-all.jar -h
5、开始打包输入命令:
java -jar walle-cli-all.jar batch -f D:/APK/MakeAPK/channel.txt D:/APK/MakeAPK/MyVariousTest.apk
注意,里面channel 文件和 先打的包的位置,请替换你的文件所在的位置
6、打包完成,查看包
7、
8、