这里介绍其多渠道打包:

1 建立多渠道

这里介绍一种简单的,直接as操作:

直接上图咯,在项目结构你添加flavor就好了


1

确定后,项目会自动同步,完成后,渠道就配置好了。

当然,也可以直接在gradle脚本里操作:

android { productFlavors { dev { manifestPlaceholders = [channel: "dev"] } official { manifestPlaceholders = [channel: "official"] } xiaomi { manifestPlaceholders = [channel: "xiaomi"] } wandoujia { manifestPlaceholders = [channel: "wandoujia"] } "360" { manifestPlaceholders = [channel: "360"] } } }

项目同步好后,会发现Build Variant会多了很多渠道


variant

2 打包

上面的各种variant,你需要选择一个,然后build和run的时候只会构建运行这一个variant,全部打包的话,这里采用命令行,我知道的as全部打包是需要签名的,大家有知道的不需要签名的方法麻烦告知。

gradlew build

这样就会把所有的包打好,每种渠道的debug和release版本都会打包。


2

上面几个包一共用了半分钟多点。这个包的文件名带时间版本号等信息是怎么来的呢,当然这得益于gradle强大的功能,后面会讲到的。

而as打包需要就是build --> Generated signed APK,这样你选择下就可以把所有渠道打包。

最近发现了个下一代Android打包工具,1000个渠道包只需要5秒钟

gradlew 命令

gradlew 是什么东西呢,和gradle貌似不大一样,肯定有关系。没错,他就是 gradle wrapper,意思是gradle的一个包装,大家可以理解为在这个项目本地就封装了gradle,比如我的项目是HelloWord, 在HelloWord/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本,比如我的内容是:

#Thu Dec 28 20:02:55 CST 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

如果你项目没有该文件的话,那么gradlew会到~/.gradle/wrapper/dists/gradle-2.10-all下寻找,或者你新建给文件,内容复制到里面。其实你会发现是同一个目录咯。里面会有个随机数的文件夹,里面就是gradle,只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。

常用命令如下:(linux下是./gradlew,该脚本在项目下,windows直接gradlew即可)

  • ./gradlew -v 版本号,首次运行,没有gradle的要下载的哦。

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

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

这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,生成的包在目录HelloWord/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模式包

补充

1 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,稍微麻烦一些

2 自定义apk包名

gradle脚本大法好:

 //自定义apk安装包名 applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent + "/${variant.buildType.name}", "HelloWord-${variant.buildType.name}-v${variant.versionName}-${variant.productFlavors[0].name}-${releaseTime()}.apk".toLowerCase()) } }

更多相关文章

  1. Android(安卓)Studio重构之路,我们重新来了解一下Google官方的And
  2. Android:BottomNavigationView设置noActionbar主题后闪退的解决方
  3. Android(安卓)Shell 常用命令
  4. 其实android也可以使用jetty的comet客户端
  5. Android- NDK编译APK中native死机调试
  6. 配置android app 方法数超过65k问题
  7. android平台的几个编译命令----make,mmm,mm,mma
  8. Android(安卓)项目实战视频资料 学习充电必备
  9. Android(安卓)APN开发流程分析

随机推荐

  1. 浅析Android权限机制(一) —— Android的权
  2. Android(安卓)调用系统Email --多附件
  3. [置顶] Android(安卓)API Guides – Intr
  4. 《Android学习指南》目录
  5. Android(安卓)Auido(2)- AudioTrack to A
  6. android ---spannableStringBuilder
  7. Android中Handler源码解析(一)
  8. 利用百度词典API和Volley网络库开发的and
  9. 详解android:scaleType属性
  10. Android(安卓)DatePickerDialog 只显示年