if (mineDataProvider != ) {
mGetMineData.setText(mineDataProvider.getMineData);
}
四 , 资源冲突组件化项目中有很多个module , 这就难免会出现module中资源命名相同而引起引用错误的情况 。为此我们可以在每个module的build.gradle文件进行如下配置(例如login模块) 。
resourcePrefix "login_"
所有的资源必须以指定的字符串(建议module名称)做前缀 , 不然会报错 。不过这种方式只限定与xml文件 , 对图片资源无效 , 图片资源仍需要手动修改 。
//布局文件命名示例
login_activity_login.xml
<resources>
<!--字符串资源命名示例-->
<string name="login_app_name">Login</string>
</resources>
五 , 单个组件运行调试当项目越来越庞大时 , 编译或运行一次就需要花费很长时间 , 而组件化可以通过配置对每个模块进行单独调试 , 大大提高了开发效率 。我们需要对每个module进行如下配置:
1、在项目根目录新建common_config.gradle文件并声明变量isModuleDebug;
project.ext {
//是否允许module单独调试
isModuleDebug = false
}
2、引入common_config配置 , 另外因为组件化中每个module都是一个library , 如要单独运行调试需要将library换成application,在module的build.gradle中文件中做如下修改:
//引入common_config配置
apply from: "${rootProject.rootDir}/common_config.gradle"
if (project.ext.isModuleDebug.toBoolean) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
android {
defaultConfig {
if (project.ext.isModuleDebug.toBoolean) {
// 单独调试时需要添加 applicationId
applicationId "com.linda.login"
}
...
}
sourceSets {
main {
//在需要单独调试的module的src/main目录下新建manifest目录和AndroidManifest文件
// 单独调试与集成调试时使用不同的 AndroidManifest.xml 文件
if (project.ext.isModuleDebug.toBoolean) {
manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/AndroidManifest.xml'
}
}
}
}
关于两个清单文件的不同之处如下:
<!--单独调试-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.linda.login">
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/login_app_name"
android:supportsRtl="true"
android:theme="@style/base_AppTheme">
<activity android:name=".ui.LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<!-- 集成调试-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.linda.login">
<application
android:allowBackup="true"
android:label="@string/login_app_name"
android:supportsRtl="true"
android:theme="@style/base_AppTheme">
<activity android:name=".ui.LoginActivity" />
</application>
</manifest>
3、如果module单独调试 , 那么在app就不能再依赖此module , 因为此时app和module都是project,project之间不能相互依赖 , 在app的build.gradle文件中做如下修改
dependencies {
if (!project.ext.isModuleDebug) {
implementation project(path: ':detail')
implementation project(path: ':login')
implementation project(path: ':pay')
}
implementation project(path: ':main')
implementation project(path: ':home')
implementation project(path: ':mine')
推荐阅读
- 自动化运维工具Ansible之LNMP实践环境部署
- 淘宝产品优化从几个方面进行 如何提升产品的竞争力
- 男性也有更年期?当你身体出现这些变化时要注意
- 刚学会化妆?这几种平价化妆品,好用又便宜!
- 日化线和专业线的区别??
- 淘宝直通车点击率低怎么优化 淘宝直通车怎么优化
- 淘宝点击转化率 淘宝关键词转化率在哪里看
- 关键词推广方式 超级推荐的关键词怎么优化
- 服装转化率多少比较好 淘宝转化率怎么提高
- 售前转化率是什么 淘宝店铺转化率怎么算