Android 组件化之路 资源冲突问题
时间:2019-08-23
本文章向大家介绍Android 组件化之路 资源冲突问题,主要包括Android 组件化之路 资源冲突问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
比如我现在有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 25 buildToolsVersion "25.0.3" resourcePrefix "me_" ... } ... // user模块的build.gradle文件 ... android { compileSdkVersion 25 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
原文地址:https://www.cnblogs.com/Im-Victor/p/11399101.html
- Linux基础(day18)
- Spring Boot搭建Web应用
- 5.7 vim实践
- Effective Modern C++翻译(7)-条款6:当auto推导出意外的类型时,使用显式的类型初始化语义
- 2.3 ls命令
- Effective Modern C++翻译(6)-条款5:auto比显示的类型声明要更好
- 大白话-prototype属性
- Effective Modern C++翻译(5)-条款4:了解如何观察推导出的类型
- Effective Modern C++翻译(4)-条款3:了解decltype
- 大白话-constructor
- Effective Modern C++翻译(3)-条款2:明白auto类型推导
- React Native在Android平台运行gif的解决方法
- Effective Modern C++翻译(2)-条款1:明白模板类型推导
- Android ormLite复杂条件查询
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 从源代码编译安装 MonoDevelop 记录
- 在 Asp.Net Core WebAPI 中防御跨站请求伪造攻击
- Hash 算法有哪些?
- Cordova 运行 Web 应用
- SSH 端口转发小结
- Hive实现自增序列及元数据问题
- 手工将项目升级至 Angular 9 记录
- 备份和恢复 timescaledb 的超级表 (hypertables)
- CVE-2020-14644 weblogic iiop反序列化漏洞
- Ubuntu 17.10 安装折腾记录
- charles工具使用
- 干货 | 从0到1,搭建一个体系完善的前端React组件库
- LeetCode 01两数之和&02两数相加
- 给GitHub "彩蛋" readme 生成自定义统计信息
- Android |《看完不忘系列》之okhttp