Gradle构建不同版本App
来源:互联网 发布:查看域名真实ip 编辑:程序博客网 时间:2024/05/29 08:14
Android Studio用Gradle来构建apk,而Gradle构建工具,又是基于Groovy语言。Groovy语言是一种运行在JVM上的动态语言。本文主要是讲怎么怎么构建多版本的app。
我们在实际的开发中,可能会有这样的需求。1.你在某个平台上首发,可能需要一个不一样的Logo。2.可能你的应用需要不同的包名。3.你的应用可能需要不同的闪屏页。4.可能你的不同版本的app,需要不同的库。5.不同的库,可能求需要不同的ProGuard文件。
我们可以用buildTypes来建立Release版和Debug版本
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }}
而productFlavors可以构建不同的Relese和Debug版。本productFlavors{}可以复写defaultConfig{}中所有可以复写的值
// 其中defaultConfig{}中为默认值,productFlavors{}会复写所有可以复写的值。defaultConfig { applicationId "com.example.gradledemo01" minSdkVersion 11 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}productFlavors { demo { applicationId "com.example.gradledemo01.demo" versionName "1.0-demo" } full { applicationId "com.example.gradledemo01.full" versionName "1.0-full" resValue("string", "app_name", "GradleDemo_full") }}
sync一下,我们可以看到,像上图那样有四个Build Variant。
我们可以在项目的app文件夹下建立demo和full两个文件夹。通过demo和full这两个文件夹我们可以对不同版本的app进行一些修改。demo和full这两个文件夹的目录结构和main文件夹相同。我们可以根据这两个文件夹,来解决上面的4个问题。
1.修改App的Logo
在main文件夹中,我们有相同的红框部分的目录。我们只需要把新的Logo的图片放在其中,图片的名称保存不变就可以了。
2.修改App的包名
productFlavors { demo { applicationId "com.example.gradledemo01.demo" versionName "1.0-demo" } full { applicationId "com.example.gradledemo01.full" versionName "1.0-full" resValue("string", "app_name", "GradleDemo_full") }}
我们可以在app的build.gradle文件中修改applicationId。
3.实现不同的闪屏页
新建一个SplashActivity。我们知道在main目录中已经有了一个闪屏页的Activity。两者不同取相同的名字,要不会报错,说文件重复了。同样我们需要一个SplashActivity的Layout。当然需要在AndroidManifest.xml中配置。
其实demo中的
AndroidManifest.xml文件会和main中的AndroidManifest.xml在编译打包的时候会合并,他们两者的合并有一定的规则,详细可以见:https://developer.android.com/studio/build/manifest-merge.html
4.不同版本的app,引入不同的库
看看下面的代码就明白了
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' demoCompile 'com.android.support:design:22.2.0' //full fullCompile 'com.jakewharton:butterknife:8.4.0' // demo demoCompile 'com.google.code.gson:gson:2.8.0'}
5.不同的ProGuard文件。
productFlavors { flavor1 { } flavor2 { proguardFile 'some-other-rules.txt' }}
以上都是网上学习而来,做个笔记而已。
参考文献
https://developer.android.com/studio/build/index.html#sourcesets
https://www.zhihu.com/question/22842123
https://segmentfault.com/a/1190000004247809
- Gradle构建不同版本App
- Gradle篇_构建不同的app
- 使用Gradle生成一个App的不同版本
- gradle构建APP过程
- Gradle构建版本2.0
- 使用不同版本Gradle构建Andorid 出现Gradle version xxxx is required
- 使用不同版本Gradle构建Andorid 出现Gradle version xxxx is required
- 使用不同版本Gradle构建Andorid 出现Gradle version xxxx is required
- Android studio 修改 app的 build.gradle实现同一APP不同版本同时存在(同一APP安装N次)
- gradle多渠道打包和同一App打包不同版本Api调用
- gradle 构建不同渠道 APK 包
- Jenkins+Extended Choice Parameter+Shell脚本+Gradle构建不同环境下的发布版本(测试环境,生产环境等等)
- Gradle配置打包成不同的app
- App Store构建版本无效
- 在build.gradle文件中添加若干个依赖后出现以下问题,字面意思是测试app和正式app使用了不同版本的依赖
- 使用Gradle构建多个不同applicationId包
- 使用Gradle构建多个不同applicationId包
- 使用Gradle构建多个不同applicationId包
- Python如何给矩阵加行或列?
- <mvc:annotation-driven/>与<mvc:default-servlet-handler/>之间的一个问题
- Android面试题三
- gooreplacer – 替换开源库加速网页浏览
- MonoBehavior的调用优化
- Gradle构建不同版本App
- 全栈笔记:每天推荐几篇优质的全栈开发文章 (以及我对全栈的看法)
- 僵尸进程和孤儿进程的模拟实现
- C++虚函数表
- studio依赖包中出现的问题
- Java面试题
- TweenAnimation和PropertyAnimation
- 微软云Linux服务器 Mysql、tomcat远程连接错误解决办法
- 关于PHP的错误机制总结