使用Gradle生成apk文件

1.在gradle.properties文件中添加如下内容:

KEY_PATH=D\:\\Documents\\ein.jksKEY_PASS=1234567ALIAS_NAME=EinALIAS_PASS=1234567

其中从上至下依次为签名keystore文件的路径,密码,别名,别名密码。

2.编辑app/build.gradle文件,在android闭包中添加如下内容:

signingConfigs {    config {        storeFile file(KEY_PATH)        storePassword KEY_PASS        keyAlias ALIAS_NAME        keyPassword ALIAS_PASS    }}

3.再编辑app/build.gradle文件,在buildTypes闭包中添加signingConfig使用上述配置

buildTypes {    release {        minifyEnabled false        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        signingConfig signingConfigs.config    }}

4.最后生成APK文件

打开右侧工具栏的Gradle→项目名→:app→Tasks→build,其中assembleDebug用于生成测试版的APK文件,assembleRelease用于生成正式版的APK文件,assemble用于生成测试版和正式版的APK文件。在生成APK文件之前,先要双击clean这个Task来清理一下当前项目。

PS:生成的文件在app/build/outputs/apk目录下

生成多渠道APK文件

1.编辑app/build.gradle文件,在android闭包中添加productFlavors闭包:

android {    compileSdkVersion 27    defaultConfig {        applicationId "com.xxxx.xxxxx.xxxxxx"        minSdkVersion 15        targetSdkVersion 27        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    flavorDimensions "mode"    productFlavors {        demo {            dimension "mode"            applicationIdSuffix ".demo"            versionNameSuffix "-demo"        }        full {            dimension "mode"            applicationIdSuffix ".full"            versionNameSuffix "-full"        }    }    ...}

这里先声明了一个名为“mode”的维度,然后添加了productFlavors闭包,我们只用在该闭包中添加所有的渠道配置即可。

在这里我先添加了两个渠道,分别为demo和full。每一个渠道名的闭包中都可以覆写defaultConfig中的任何一个属性。以demo渠道为例,我先设置它是“mode”维度下的一个渠道,然后设置它包名后缀为“.demo”以及版本名后缀为“-demo”。

这么一来我们在生成APK的时候就有两个选择:生成demo渠道的APK,或者生成full渠道的APK。

2.维度的作用

上面有声明维度“mode”,因为两个渠道在同一维度下,因此看不出维度的作用。这里我再添加一个维度“size”以及两个渠道“small”和“large”,如下:

flavorDimensions "mode","size"productFlavors {    small {        dimension "size"    }    large {        dimension "size"    }    demo {        dimension "mode"        applicationIdSuffix ".demo"        versionNameSuffix "-demo"    }    full {        dimension "mode"        applicationIdSuffix ".full"        versionNameSuffix "-full"    }}

这么一来在生成APK的时候就有四个选择:(mode维度的渠道数*size维度的渠道数)

3.生成APK的多个渠道都准备好了,那么如何保证各渠道之间代码差异同时存在呢?其实只用在app/src目录下新建渠道目录即可。

比如要修改demo渠道的特有需求,那么我们就在app/src下新建一个demo目录(与main平级),然后在demo目录下新建java和res这两个目录,这样我们就可以在这里编写demo渠道特有的功能了。java用于存放代码,res用于存放资源,如果还要覆写AndroidManifest文件中的内容,就在demo目录下再新建一个AndroidManifest.xml文件即可。

更多相关文章

  1. Android游戏框架libgdx——BitmapFont的构造
  2. 我来教大家怎样在windows下载android源码
  3. Android(安卓)系统app集成Bugly收集错误
  4. Android(安卓)app安装路径 2
  5. android应用程序的混淆打包(转)
  6. Android打开不同类型文件
  7. Android(安卓)Studio打包APK文件的具体方法介绍
  8. android中SharedPreference的使用
  9. 日拱一卒(十七)

随机推荐

  1. android init.rc init.%PRODUCT%.rc 解析
  2. android判断用户网络类型
  3. android中的字体闪烁效果和跑马灯效果
  4. Android(安卓)studio 操作数据库游标适配
  5. Android自定义Toast样式
  6. Android——如何将整个界面变成列表 — S
  7. FragmentTabHost QQ 选项卡
  8. Android(安卓)使用Eclipse 构建K9
  9. Android学习笔记(14)————Socket在And
  10. Android学习笔记(16)————Android的XM