先来一句一句妈卖批哦,捣鼓这个花了我近一下午的时间
现在组件化开发火热,的确是如此,代码简介,思路明确,不繁琐。。。。。。。但是,用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。再见。