最近有个教育类项目,需要四个app端,主题样式差不多有不少公共代码,如果创建四个AS工程,不利与代码管理且后期维护的难度加大。本着面向度娘编程的原则搜索了一波解决办法,发现gradle自带的productFlavors差异化打包工具 这个好东西,有效解决我以上问题,记录一下踩坑过程。

一. 配置productFlavors

二. 创建工程结构

三. 快乐编码

四. 调试、打包、注意事项

一. 配置productFlavors

在build.gradle(app)文件中:

配置了 parents 和 school 家长和学校端 ,配置各端applicationId...属性,则学校端包名为com.xxx.xxx.parents,注册第三方appkey时需使用该包名

 

1. manifestPlaceholders : 配置不同属性:

在mian-AndroidManifest.xml中使用manifestPlaceholders 中定义的属性值(公共权限、公共组件注册、第三方Appkey配置在该文件中)

2.buildConfigField:自定义区分 (公共代码中区分是哪一个app在运行)

可以通过 BuildConfig.FLAVOR  或 buildConfigField自定义的名字区分

3. implementation   /  schoolimplementation: 全部依赖第三方库/ 仅家长端依赖

二. 创建工程结构

红色为默认main包,里面写一些公共utils,application,base基类...等。手动新建如果紫色main同级parents工程目录

三. 快乐编码

注意事项:

子项目(school)中代码可以调用公共类(main)中的代码,公共类中不能出现调用子项目的代码

四. 调试、打包

选择不同子项目调试

一起打包

 

更多相关文章

  1. “adb不是内部或外部命令,也不是可运行的程序或批量文件“
  2. android软件安全与逆向分析重打包签名出错
  3. 为什么我们可以在非UI线程中更新UI
  4. 基于web的android图像处理示例(Win7+Apache+PHP+Matlab+Android)
  5. Android实现使用微信登录第三方APP的方法
  6. ubuntu下android开发环境配置及常用设置
  7. Android(安卓)Studio 单元测试入门
  8. 如何编写高效的Android代码
  9. Android(安卓)Async HTTP Clients: Volley vs Retrofit

随机推荐

  1. Android(安卓)http POST
  2. Android(安卓)多媒体
  3. 获取android手机基本信息
  4. android打电话,接电话,挂电话过程
  5. Android(安卓)JNI介绍
  6. Android边框背景
  7. 关于"match_parent"这个xml的布局设定值
  8. 2011.11.22——— android jni简单用法
  9. Android之蓝牙设备使用
  10. Android(安卓)打开浏览器的几种方法