Android Studio 利用gradlew多渠道打包

       前面我们已经介绍了使用蓝贝壳儿打包,但是那只能使用eclipse来进行,因为好像没有发现android studio有那个插件,以前也介绍了打jar(gradlew makeJar),这里介绍使用AS利用gradlew多渠道打包(APK):

1.as手动添加渠道


然后我们去看Modul的gradle文件:

productFlavors {
    meizu {
        minSdkVersion 21
        proguardFile 'E:/AndroidStudioProjects/RevealLayout/app/proguard-rules.pro'  targetSdkVersion 23
        versionName '1.0'  }
}
显然我们不太喜欢去手动添加,因为感觉还是相对的麻烦。

所以我们可以直接在gradle脚本里操作:

productFlavors {
    dev {
        manifestPlaceholders = [channel: "dev"]
    }
    xiaomi {
        manifestPlaceholders = [channel: "xiaomi"]
    }
    wandoujia {
        manifestPlaceholders = [channel: "wandoujia"]
    }
    "360" {
        manifestPlaceholders = [channel: "360"]
    }
}
这样我们就轻松的配置了4个渠道信息,是不是感觉比那个还是简单点。。

接着我们去同步(asyn now)一次,发现Build Variant会多了很多渠道是不是

Android Studio 利用gradlew多渠道打包_第1张图片Android Studio 利用gradlew多渠道打包_第2张图片

渠道配置好了,接下来我们就是来打包了

直接在终端:gradlew build


等所有的apk都打完我使用了 2 mins 28.212 secs,感觉机子还是相当的渣。

Android Studio 利用gradlew多渠道打包_第3张图片

这样就会把所有的包打好,每种渠道的debug和release版本都会打包。当然这些都是没有签名文件的,我这里是演示一下gradlew build命令而已。

没有签名文件的就需要生成签名文件


(不会去百度,我艹),有签名文件的那就好办了,直接来配置build.gradle

buildTypes {
    debug {
        manifestPlaceholders = [app_label:"@string/app_name_debug"]
    }
    release {
        manifestPlaceholders = [app_label:"@string/app_name"]
    }
    preview{
        manifestPlaceholders = [app_label:"@string/app_name_preview"]
    }
}
签名信息的配置

signingConfigs {
    debug {
        storeFile file("C:/Users/test1/Desktop/android.jks")
        storePassword "xxxxxx"  keyAlias "xxxxx"  keyPassword "xxxxxx"  }
    preview {
        storeFile file("C:/Users/test1/Desktop/android.jks")
        storePassword "xxxxxx"  keyAlias "xxxxxx"  keyPassword "xxxxx"  }
    release {
        storeFile file("C:/Users/test1/Desktop/android.jks")
        storePassword "xxxxxx"  keyAlias "xxxxxx"  keyPassword "xxxxxx"  }
}
接下来我们就来根据配置的渠道,来输出目录:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(
                output.outputFile.parent,
                "RevealLayout-${variant.buildType.name}-${variant.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())
    }
}
接下来就是看图,新生成的apk文件:

Android Studio 利用gradlew多渠道打包_第4张图片

是不是生成了签名的apk文件了,不扯了,我也是醉了。

我靠,AS多渠道打包就搞完了,不解释,你要学习

gradlew 命令

  • ./gradlew clean 删除HelloWord/app目录下的build文件夹

  • ./gradlew build 检查依赖并编译打包

这里注意的是./gradlewbuild命令把debug、release环境的包都打出来,生成的包在目录XXX/app/build/outputs/apk/下。如果正式发布只需要打release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如

  • ./gradlew assembleDebug 编译并打Debug包

  • ./gradlew assemblexiaomiDebug 编译并打xiaomi的debug包,其他类似

  • ./gradlew assembleRelease 编译并打Release的包

  • ./gradlew assemblexiaomiRelease 编译并打xiaomi的Release包,其他类似

  • ./gradlew installRelease Release模式打包并安装

  • ./gradlew uninstallRelease 卸载Release模式包

补充

gradlew build 和 gradle build 有区别吗?

使用gradle wrapper是gradle官方推荐的build方式,而gradlew正是运行了wrapper task之后生成的(运行wrapper task是Android Studio自动做的)。使用gralde wrapper的一个好处就是每个项目可以依赖不同版本的gradle,构建的时候gradle wrapper会帮你自动下载所依赖的版本的gradle。而如果你使用gradle build的话,同时你又有多个项目使用不同版本的gradle,那就需要你手动在自己的机器上配置多个版本的gradle,稍微麻烦一些


本文参考http://www.jayfeng.com/2015/11/07/Android%E6%89%93%E5%8C%85%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/

哈哈哈,里面还包含了AS下的代码混淆等。

你可能感兴趣的:(多渠道打包,gradlew,AS签名打包)