// 签名配置
1 2 3 4 5 6 7 8 9 10 11 12
| signingConfigs { release { try { storeFile file("key.jks") storePassword "******" keyAlias "key" keyPassword "******" } catch (ex) { throw new InvalidUserDataException(ex.toString()) } } }
|
必须要配置
多渠道签名和热更新需要的
1 2 3 4
| app.build apply from: 'tinker-support.gradle' // 多渠道使用walle示例(注:多渠道使用) apply plugin: 'walle'
|
1 2 3 4 5 6
| // 热更新 热升级 compile "com.android.support:multidex:1.0.1" // 多dex配置 compile 'com.tencent.bugly:crashreport_upgrade:1.3.1'//其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0 compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.2.0 //瓦力的多渠道打包 compile 'com.meituan.android.walle:library:1.1.3'
|
1 2 3 4 5 6 7 8 9
| walle { // 打包执行的命令 gradlew clean assembleReleaseChannels // 指定渠道包的输出路径 apkOutputFolder = new File("${project.buildDir}/outputs/channels"); // 定制渠道包的APK的文件名称 apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk'; // 渠道配置文件 channelFile = new File("${project.getProjectDir()}/channel") }
|
项目.build
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| // tinkersupport插件, 其中lastest.release指拉取最新版本,也可以指定明确版本号,例如1.0.4 classpath "com.tencent.bugly:tinker-support:1.0.8" classpath 'com.meituan.android.walle:plugin:1.1.3'
public class App extends Application { @Override public void onCreate() { super.onCreate(); //设置是开发者的设备 Bugly.setIsDevelopmentDevice(getApplicationContext(),true); String channel = WalleChannelReader.getChannel(getApplication()); Bugly.setAppChannel(getApplication(), channel);
Bugly.init(this, "******", true); Beta.smallIconId = R.drawable.pikaqiu; Beta.defaultBannerId = R.drawable.pikaqiu; Beta.canShowUpgradeActs.add(MainActivity.class); Beta.storageDir = Environment. getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); Beta.initDelay = 1 * 1000; Beta.autoInit = false; } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); // you must install multiDex whatever tinker is installed! MultiDex.install(base); // 安装tinker Beta.installTinker(); } }
|
这个是 正式版打包(目前上的基准包)
发布 补丁的话 要求
1 2 3 4 5 6 7 8 9 10 11 12
| 里面的 /** * 此处填写每次构建生成的基准包目录 新版本发布的时候 建议保存一份 */ def baseApkDir = "app-0630-13-26-10"
// 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性 tinkerId = "1.0.4"(唯一的一个名字就行 不用和项目的版本号一样) 要更改 安装正式包的 需要安装基带下的apk 或者用瓦力打包 瓦力打包下的 相当于加了基带
修改需要改动的bug代码
|
执行buildAllFlavorsTinkerPatchRelease生成所有渠道补丁包
得到的patch文件夹的 7zip这个文件就是补丁啦
最后更新:
加油,为了更好的明天!