架构-Android Studio利用 sourceSet独立出UI资源
上一篇从技术上面,利用Gradle实现了Overlay机制。Gradle中还有一个sourceSet,可以实现更骚的操作。
需求:我们的应用,主要有三个模块,主界面模块、设置模块、商城模块,三个模块各有负责人进行开发。 新增欧洲和美洲市场,我们需要根据不同市场,进行定制开发,如欧洲市场不能有开屏广告等等。
我们最终想实现如下的效果:
也就是UI资源单独作为一个目录出现,app目录下面不包含UI资源相关的文件。并且资源文件,根据不同的渠道可以实现动态编译。
这其实是上一节Overlay机制的一个进阶,利用的是productFlavors+sourceSet相配合实现的,优点:
1.是MVP模式的重要一环,View独立出来,包括res资源和自定义控件。
2.方便开发,资源相关的直接进UI目录查看
3.方便迭代,layout或者drawable增多,导致单个目录下文件过多,不利于查看。我们可以新增AppUI、SettingUI、ShopUI等目录,对主界面UI、设置界面UI、商城界面UI进行归类。
4.方便模块化,不同模块的开发,各自维护自己模块,如商城模块,只需要关注ShopUI下的资源。
1.build.gradle配置
1.在build.gradle中,新增变量app_ui_folder,在后面会用到
2.利用productFlavors变种两个渠道
flavorDimensions "product"productFlavors {// @Step1 新增America渠道america {dimension "product"}// @Step2 新增Europe渠道europe {dimension "product"}}
3.使用sourceSet指定各个渠道下所指向的资源文件
sourceSets {// 基类所指向的资源main {manifest.srcFile 'AndroidManifest.xml'java.srcDirs = ['src',app_ui_folder + 'Common/src',]res.srcDirs = ['res',app_ui_folder + 'Common/res',]jniLibs.srcDirs = ['jniLibs']assets.srcDirs = ['assets']java.srcDirs = java.srcDirsresources.srcDirs = java.srcDirsaidl.srcDirs = java.srcDirsrenderscript.srcDirs = java.srcDirs}// Europe渠道指向的资源europe {java.srcDirs = [app_ui_folder + 'Europe/src',]res.srcDirs = [app_ui_folder + 'Europe/res',app_ui_folder + 'Europe/res_overlay',]resources.srcDirs = java.srcDirsaidl.srcDirs = java.srcDirsrenderscript.srcDirs = java.srcDirs}// America渠道指向的资源america {java.srcDirs = [app_ui_folder + 'America/src',]res.srcDirs = [app_ui_folder + 'America/res',app_ui_folder + 'America/res_overlay',]resources.srcDirs = java.srcDirsaidl.srcDirs = java.srcDirsrenderscript.srcDirs = java.srcDirs}debug.setRoot('build-types/debug')release.setRoot('build-types/')}
2.新增目录
2.1 Project视图下,在根目录TestGradle右键新增UI目录。
2.2 在UI目录下新增如下目录
2.3 将app目录下的res文件夹,copy至UI\AppUI\Commom目录下,作为基类res
架构-Android Studio利用 sourceSet独立出UI资源相关推荐
- Android Studio中进行单元测试和UI测试
目录 在Android Studio中进行单元测试和UI测试 - 1.概述 在Android Studio中进行单元测试和UI测试 - 2.创建新的Android Studio工程 在Android ...
- Android studio根据文本提取出的关键词在sqlite数据库中查找相关内容
Android studio根据文本提取出的关键词在sqlite数据库中查找相关内容 一.介绍 二.Android studio连接.操作和查看sqlite数据库 三.在数据库中查找相关内容 四.运行 ...
- Android之Android Studio三种方式导入外部资源 以及 报错处理
Android Studio三种方式导入外部资源 以及 报错处理 android studio提供了三种方式导入外部资源: 1. Library dependency – 在线添加.需联网下载 . 2 ...
- android 静态list,android studio 利用gradle和cmakelist生成c++静态库.a的方法总结
android生成静态库的方法有两种,一种是编辑android.mk文件,一种是编辑cmakelist文件.前一种没做研究,因为用的ide是android studio,所以直接利用gradle调用c ...
- Android Studio利用host文件配置dl.google.com的国内镜像源
国内的Android开发者,基本每隔一段时间就会碰到项目突然不能编译的情况.sdk更新.插件安装也有诸多不便,环境的折腾确实伤透了脑筋.本文主要记录下使用host配置dl.google.com的国内镜 ...
- 2.7、Android Studio使用翻译编辑器本地化UI
如果你的应用支持多语言,你需要合理的管理你的翻译的string资源.Android Studio 提供了翻译编辑器来使查看和管理翻译的资源更加容易. 关于翻译编辑器 翻译后的资源在你的项目里保存在不同 ...
- 2.3、Android Studio使用Layout Editor设计UI
Android Studio提供了一个高级的布局编辑器,允许你拖拽控件,在编辑XML之后可以实时预览. 在布局编辑器中,你在文字视图和设计视图直接来回切换. 在文字视图中编辑 你可以在文字视图中编辑你 ...
- android studio菜单自动弹出,Android实现微博菜单弹出效果
先上Android仿微博菜单弹出效果图,这个截图不是很流畅,大家可以下载apk试一下. 说一下实现思路: 1.截取当前窗口,对图片做高斯模糊处理,将处理后的图片做popupwindow的背景图片: 2 ...
- Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
文章目录 1. 前言 2. 实现方法 2.1 添加BuildConfig成员变量 2.2 实现gradle接口函数 2.3 关键部分 2.3.1 接口及接口转换 2.3.2 实现Java接口 3. 调 ...
最新文章
- mysql开启远程访问
- python集群到hadoop_如何使用Hadoop流在本地Hadoop集群中运行MRJob?
- java string 栈_Java堆和栈的区别(String类)
- js <->java 时区处理
- ScrollView滑动控制
- python机器学习之特征值处理(sklearn)
- 计算机中丢失msvcr100.dll怎么办,Win7计算机中Msvcr100.dll丢失的解决方法
- 女儿拿着小天才电话手表问我App启动流程
- js 拉勾网效果_js仿拉勾网首页穿墙广告效果
- Nunit使用(一)
- windows和linux快捷键
- element表格样式优化
- 找素数模板:马氏筛法【复杂度nlgnlgn】
- Asp.Net MVC访问数据库实现登录
- 天猫、京东、苏宁双11房产战事起
- Docker下运行Presto访问Redis及BI展示
- excel基础(一)
- vue3 baseCss 初始化
- split()函数的使用方法
- 数据库mysql中对于drop_数据库之删除表数据drop、truncate和delete的用法