生成APK
使用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文件即可。
更多相关文章
- Android游戏框架libgdx——BitmapFont的构造
- 我来教大家怎样在windows下载android源码
- Android(安卓)系统app集成Bugly收集错误
- Android(安卓)app安装路径 2
- android应用程序的混淆打包(转)
- Android打开不同类型文件
- Android(安卓)Studio打包APK文件的具体方法介绍
- android中SharedPreference的使用
- 日拱一卒(十七)