美文网首页Android开发
美团walle打包教程

美团walle打包教程

作者: 繁体字遇上简体字 | 来源:发表于2018-05-09 14:42 被阅读142次

    美团walle打包教程

    我们在android开发的时候经常会遇到多渠道打包,传统是使用productFlavors来进行多渠道打包,但是这个随着公司的需求越来越多,安装包越来越大。开始12个渠道包的速度还可以,可是安转包过大的时候,通常渠道包要打半个小时左右,这是十分不能容忍的。而且你的as说不好就会随便的抽风。又要从头开始,于是就推荐了walle来打包。

    1.walle介绍

    Walle:美团介绍;https://tech.meituan.com/mt-apk-packaging.html

    Github地址:https://github.com/Meituan-Dianping/walle

    以下是个人使用步骤:如果有遗漏,或者你在使用的过程中有任何问题欢迎在简书留言。

    2. 个人推荐先配置gradle环境,配置成功后查看

    显示这个表示配置正确

    3. jdk环境,要安装1.8以上的版本

    4. 使用步骤

    (1)在你的build.gradle中添加插件依赖

    classpath 'com.meituan.android.walle:plugin:1.1.6'

    (2)在你的项目build.gradle中添加

    implementation 'com.meituan.android.walle:library:1.1.6'

    由于本人项目使用的是

    classpath 'com.android.tools.build:gradle:3.1.2'

    官方的compile 'com.meituan.android.walle:library:1.1.6'中compile 不再使用,你可以查看as官方的文档

    apply plugin: 'walle'

    (3)在你项目中build.gradle中添加(注意这个是在android外面)

    附代码

    walle {    apkOutputFolder = new File("${project.buildDir}/outputs/channels")    apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}-${flavorName}.apk'    //configFile与channelFile两者必须存在一个,否则无法生成渠道包。两者都存在时优先执行configFile    channelFile = new File("${project.getProjectDir()}/channel")    //configFile = new File("${project.getProjectDir()}/config.json")}// 根据不同的applicationId来配置不同的channelFile/configFileafterEvaluate {    project.android.applicationVariants.all { BaseVariant variant ->        variant.assemble.doFirst {            if (variant.applicationId.endsWith(".debug")) {                project.walle.channelFile = new File("${project.getProjectDir()}/channel_debug")            }        }    }}

    (4)在你项目中的build.gradle中android

    附代码

     signingConfigs {        sankuai {            storeFile file("签名路径")            storePassword '密码'            keyPassword '密码'            keyAlias ''        }    }    buildTypes {        release {            buildConfigField("boolean", "PUBLIC", "false")            zipAlignEnabled true            minifyEnabled false//            shrinkResources true//去掉不用资源            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.sankuai        }        debug {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            buildConfigField("boolean", "PUBLIC", "false")            signingConfig signingConfigs.sankuai            applicationIdSuffix 'debug'        }           }

    (5)在你的项目文件下新建文件

    文件内容:渠道包名称测试随便写

    (6)注意如果你的项目中有用c的代码,请添加(在你项目中的build.gradle中android下添加)

    附代码

    task ndkBuild(type: Exec) {    commandLine 'cmd', "C:/D/sdk/ndk-bundle", '-C', file('src/main/jni').absolutePath}tasks.withType(JavaCompile) {    compileTask -> compileTask.dependsOn ndkBuild}

    查看ndk路径

    Ndk路径

    5. 开始打包

    附命令

    (a)replease包:gradlew clean assembReleaseChannels

    (b)Debug包 gradlew clean assembDebugChannels

    成功如图所示

    安装包25兆,打包用时2分钟

    6验证渠道包正确

    在你的application中添加代码

    定义String channel;

    附代码

    /** * 得到渠道标识 */private void readChanel() {    channel= WalleChannelReader.getChannel(this.getApplicationContext());    if(!TextUtils.isEmpty(channel)){        Log.e("xxxxxxxxxxxxxxxxxxxxx",channel);    }}

    就这样多渠道打包完成了

    7总结:

    由于公司项目以前是classpath 'com.android.tools.build:gradle:2.2.3'

    升级跟换了很多,遇到了很多坑。以前混淆的无法使用,加上会报错,所以现在去掉了混淆,如果哪位大神遇到了混淆报错,并且解决了,请留言谢谢了。

    相关文章

      网友评论

        本文标题:美团walle打包教程

        本文链接:https://www.haomeiwen.com/subject/jignrftx.html