比如我现在有3个模块:app模块,user模块,me模块,其中app模块依赖user模块和me模块。

然后我在user模块和me模块的strings.xml中都定义了greet字符串:

// user模块
<resources>
...
<string name="greet">Hello!</string>
...
</resources> // me模块
<resources>
...
<string name="greet">Hi!</string>
...
</resources>

然后在app模块引用greet这个字符串:

// app模块
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="@string/greet"
/>

那么问题来了,app模块引用的greet是user模块的呢,还是me模块的呢??这里出现资源冲突问题!!

解决办法比较容易,每个子模块给资源名添加前缀,具体做法是在每个子模块的build.gradle文件的android块内添加一行代码:resourcePrefix “资源名前缀”:

// me模块的build.gradle文件

...
android { compileSdkVersion
buildToolsVersion "25.0.3" resourcePrefix "me_" ... }
...
// user模块的build.gradle文件
...
android { compileSdkVersion
buildToolsVersion "25.0.3" resourcePrefix "user_" ... }
...

此时,你会发现,你定义的xml资源文件会报错!!为啥?

我天真的以为AS会自动帮我们的资源名自动加上前缀,原来写了这段代码之后,AS会约束我们定义资源时,要我们手动加上前缀,否则报错!!所以只是起约束作用!!

改正错误之后,资源文件变成这样了:

// user模块
<resources>
...
<string name="user_greet">Hello!</string>
...
</resources> // me模块
<resources>
...
<string name="me_greet">Hi!</string>
...
</resources>

这样app引用的时候,就不会混乱了!!

如果你还知道其他方法,请不吝赐教!!
————————————————
版权声明:本文为CSDN博主「JohanMan」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JohanMan/article/details/77101477

Android 组件化之路 资源冲突问题的更多相关文章

  1. Android 组件化/模块化之路——在展示层搭建MVP结构

    Android 组件化/模块化之路——在展示层搭建MVP结构 什么是MVP Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设 ...

  2. Android组件化框架设计与实践

    在目前移动互联网时代,每个 APP 就是流量入口,与过去 PC Web 浏览器时代不同的是,APP 的体验与迭代速度影响着用户的粘性,这同时也对从事移动开发人员提出更高要求,进而移动端框架也层出不穷. ...

  3. Android组件化方案

    Android组件化项目地址:Android组件化项目AndroidModulePattern Android组件化之终极方案地址:http://blog.csdn.net/guiying712/ar ...

  4. android插件化之路

    概论  插件式开发通俗的讲就是把一个很大的app分成n多个比较小的app,其中有一个app是主app.基本上可以理解为让一个apk不安装也可以被运行.只不过这个运行是有很多限制的运行,所以才叫插件. ...

  5. Android组件化demo实现以及遇坑分享

    首先贴出demo的github地址:GitHub - TenzLiu/TenzModuleDemo: android组件化demo 作者:TenzLiu原文链接:https://www.jianshu ...

  6. Android组件化

    附:Android组件化和插件化开发 App组件化与业务拆分那些事 Android项目架构之业务组件化 Android组件化核心之路由实现 Android组件化开发实践

  7. 我所理解的Android组件化之通信机制

    之前写过一篇关于Android组件化的文章,<Android组件化框架设计与实践>,之前没看过的小伙伴可以先点击阅读.那篇文章是从实战中进行总结得来,是公司的一个真实项目进行组件化架构改造 ...

  8. Gradle自动实现Android组件化模块构建

    背景 随着App的不断迭代,业务会变得越来越复杂,业务模块会越来越多,且每个模块的代码也会变得越来越多.为了应对这一场景,我们需要把不同的业务模块划分成一个个组件,在修改业务代码的时候只需要在对应模块 ...

  9. Android组件化之终极方案

    Android组件化项目地址:Android组件化项目AndroidModulePattern Fragment或View如何支持组件化 如何管理组件 Fragment或View如何支持组件化 距离 ...

随机推荐

  1. String、toString、String.valueOf()三个有啥区别?

    今天在使用这个的时候发现,他们三者好像在某些场所都是可以用的,但是不免会让人想到那既然它们三者这么的相似,那么总有些什么区别吧.我也在网上找了一些资料看.自己也看了API文档,就将他们三的区别总结一下 ...

  2. Java多线程核心知识

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  3. opensatck误删除service项目

    由于在清除资源时,未考虑到租户service,将其一并删除,于是有了下面的填坑之旅 1,需要找到删除的services-id,查看keytone的log, grep -r "DELETE&q ...

  4. JavaEE-实验三 Java数据库高级编程

    该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1.在MySQL中运行以下脚本 CREATE DATABASE mydatabase; USE mydatabase; CREA ...

  5. "Developer tools access" 需控制另一个进程才能继续调试 解决方案

    解决方案: 打开终端输入下边命令: DevToolsSecurity --status 查看状态 DevToolsSecurity --enable 输入密码,修改为enable,即可用 DevToo ...

  6. CircleCi 不更新某个分支的两种方法

    概述 今天我发现我的所有项目的 CircleCi 部署全部都会更新 gh-pages 分支.找了好久,终于找到了不更新的方法.于是我总结了一下,记录下来,供以后开发时参考,相信对其他人也有用. onl ...

  7. fiddler配置会话框菜单栏

    1.添加会话框菜单:鼠标移至会话框菜单的左上角“#”位置,右键>Customize column,Collection下拉菜单选择"Miscellaneous",Field ...

  8. 阶段3 2.Spring_05.基于XML的IOC的案例1_2 基于XML的IOC的案例-编写spring的Ioc配置

    首先配置service对象,配置完Service对象就是注入dao对象. 但是现在没有dao对象,那就需要先配置dao对象.dao配置好以后.上线dao的注入就可以通过refs对象来注入这个dao了 ...

  9. mysql--创建表,插入数据,修改表名,删除表,简单查询/内连接、左/右连接

    创建表mm:  其中id为主键且自增长 ) primary key not null unique auto_increment, name ) not null, age ), class ) no ...

  10. loadrunner 场景设计-手工场景方案(Schedule)设计 Part 1

    参考:http://blog.sina.com.cn/s/articlelist_5314188213_1_1.html loadrunner 场景设计-手工场景方案(Schedule)设计 Part ...