android组件化开发解决使用butterknife出现的坑

先来一句一句妈卖批哦,捣鼓这个花了我近一下午的时间微笑

现在组件化开发火热,的确是如此,代码简介,思路明确,不繁琐。。。。。。。但是,用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。再见。

猜你喜欢

转载自blog.csdn.net/weixin_40350174/article/details/80818397