android元件化開發解決使用butterknife出現的坑
阿新 • • 發佈:2018-12-29
先來一句一句媽賣批哦,搗鼓這個花了我近一下午的時間
現在元件化開發火熱,的確是如此,程式碼簡介,思路明確,不繁瑣。。。。。。。但是,用butterknife的時候卻出現了找不到包的問題,,懵逼的我,看著懵逼的程式碼。
看下官方說如何解決。:
然而對我來說並沒什麼卵用~~。
直接看我的解決步驟吧~~~。
直接貼程式碼了。
buildscript { apply from: "config.gradle" repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' //butterknife外掛 classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0' // 8.4.0、8.5.0、8.5.1可用,其他自己測試。 // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
在專案的build.gradle中配置上邊的程式碼。
if (isModule.toBoolean()) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' } apply plugin: 'com.jakewharton.butterknife' android { compileSdkVersion rootProject.ext.android.compileSdkVersion defaultConfig { minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode rootProject.ext.android.versionCode versionName rootProject.ext.android.versionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' // annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' api 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' api rootProject.ext.dependencies.appcompat_v7 api rootProject.ext.dependencies.design api rootProject.ext.dependencies.retrofit api rootProject.ext.dependencies.retrofit_converter_gson api rootProject.ext.dependencies.retrofit_adapter_rxjava2 api rootProject.ext.dependencies.gson api rootProject.ext.dependencies.rxandroid api rootProject.ext.dependencies.rxjava api rootProject.ext.dependencies.glide api rootProject.ext.dependencies.constraint_layout api rootProject.ext.dependencies.eventbus api rootProject.ext.dependencies.okhttp3_logging api rootProject.ext.dependencies.SmartRefreshLayout api rootProject.ext.dependencies.banner api rootProject.ext.dependencies.arouter_api // api rootProject.ext.dependencies.android_butterknife }
上邊這段是公共類的butterknife配置,程式碼中新增紅色的。(所有的module都繼承的類,即公共類。)
if (isModule.toBoolean()) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' } apply plugin: 'com.jakewharton.butterknife' android { compileSdkVersion rootProject.ext.android.compileSdkVersion defaultConfig { minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode rootProject.ext.android.versionCode versionName rootProject.ext.android.versionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support.constraint:constraint-layout:1.1.2' // annotationProcessor rootProject.ext.dependencies.arouter_compiler implementation project(':common_module') annotationProcessor'com.jakewharton:butterknife-compiler:8.8.1' }
上邊這段是子module新增的依賴。。
好了配置就到這裡完事了,,一共有三步
1 在專案的build.gradle新增依賴。 注意版本
2 在你的公共Module的build.gradle中新增依賴和配置,版本可選擇最新,
3 在你的子module的build.gradle中新增依賴和配置,版本可選擇最新。
以上都是我的測試多次得出的配置結果和版本號。。。。。。。。
最後看看在程式碼中如何。。。
使用的話正常使用就可以了,只要把報錯的R.改成R2.就可以了,當然選擇R2的時候一定要選擇當前activity/fragment所在的module內,,,如果你選擇了Onclick記得繫結程式碼用R2,,下邊switch程式碼ALT+/一下變成if語句就可以了。。。。
有什麼問題或者我做的不對的請留言,++++++++++++emmmmmmmmmmmm。再見。