组件化开发遇到的问题

组件化开发遇到的问题

1、Suggestion: add 'tools:replace="android:name"'
app 一起运行时,application重复命名问题

自定义 Application 需要声明在 AndroidManifest.xml 中。其次,每个 Module 都有该清单文件,但是最终的 APK 文件只能包含一个。因此,在构建应用时,Gradle 构建会将所有清单文件合并到一个封装到 APK 的清单文件中。
所以,需要放在application的东西都放在baseApplication中,如必须在不同组件中的Manifest中使用,使用tools:repalce 替代。

合并的优先级是:App Module > Library Module

2、

Aroute使用问题锦囊

1、资源命名重复,引用不正确

在不同moudle下要添加
resourcePrefix "login_"
防止相同文件名出现指向错误 login_activity_main
然后在对应的布局资源文件前面添加
不能同时使用 会报There is no route match the path

2、There is no route match the path,no group

一定要让所有需要ARouter的Moudle中builde.gradle添加annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'
并且在主APP的Moudle中关联所有需要的模块,否则会提示There is no route match the path,no group

组件化Butterknife使用问题锦囊

1、在library中使用R2

(1)在主程序的build.gradle中

 dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // 添加的部分
        classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}

(2)在对应moudle的build.gradle

compile "com.jakewharton:butterknife:$rootProject.butterknife"
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterknife"

(3)在使用到butterknife的library的gradle中

 apply plugin: 'com.android.library'
 apply plugin: 'com.jakewharton.butterknife'

(4)R变为R2,swicth case 改为if else

 @OnClick({R2.id.xxx, R2.id.xxx, R2.id.xxx, R2.id.xxx, R2.id.xxx})
    public void onViewClicked(View view) {
        int i = view.getId();
        if (i == R.id.xxx) {
        } else if (i == R.id.xxx) {
        } else if (i == R.id.xxx) {
        } else if (i == R.id.xxx) {
        } else if (i == R.id.xxx) {
        }
    }

你可能感兴趣的:(组件化开发遇到的问题)