关于 butterknife在as中的配置,很多的博友已经写了很多,但是大多数都是每次新建一个module后在build.gradle中进行配置。再次新建后就不能继续用,必须进行重新配置。感觉有些麻烦,想了一下能不能只配置一次,每次新建后都可以使用呢。想了好久,终于找到了一个办法。
提醒:在as源文件中配置时,记得先把源文件备份。这样即使你出错了,也还是可以恢复的。
1.首先说下每次建立都要进行的配置
在你当前的module的gradle中配置红色的部分。
apply plugin: 'com.android.application' apply plugin: 'android-apt' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.ggggg" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' apt 'com.jakewharton:butterknife-compiler:8.4.0' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.jakewharton:butterknife:8.4.0' }
在工程目录下的gradle中配置
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } }这样就完成了。不过还是看下github上的信息吧Note前面的已经配置好了,现在我们看下Note,当你所用的Jack compiler的版本是2.2.0或者更新的时候,可以不用配置android-apt而用annotationProcessor代替Configure your project-level
build.gradle
to include the 'android-apt' plugin:buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } }
Then, apply the 'android-apt' plugin in your module-level
build.gradle
and add the Butter Knife dependencies:apply plugin: 'android-apt' android { ... } dependencies { compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.4.0' }Note: If you are using the new Jack compiler with version 2.2.0 or newer you do not need the 'android-apt' plugin and can instead replace
apt
withannotationProcessor
when declaring the compiler dependency.
2.下面来说明配置一次,下次不需要配置就可以使用butterknife的方法
首先找到AndroidStudio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\recipe.xml.ftl
在有的人可能只配置这个就可以用了,但是我试的不能用,于是我又配置了下面的recipe.xml.ftl中进行配置(在前几行的位置)
<recipe> <dependency mavenUrl="com.android.support:appcompat-v7:${buildApi}.+"/> <dependency mavenUrl="com.jakewharton:butterknife:8.4.0"/> <#if !createActivity> <mkdir at="${escapeXmlAttribute(srcOut)}" /> </#if>
先找到AndroidStudio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\build.gradle.ftl文件,如下
<#if !(perModuleRepositories??) || perModuleRepositories>
buildscript {
repositories {
jcenter()
<#if mavenUrl != "mavenCentral">
maven {
url '${mavenUrl}'
}
</#if>
}
dependencies {
classpath 'com.android.tools.build:gradle:${gradlePluginVersion}'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
</#if>
<#if isLibraryProject?? && isLibraryProject>
apply plugin: 'com.android.library'
<#else>
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
</#if>
<#if !(perModuleRepositories??) || perModuleRepositories>
repositories {
jcenter()
<#if mavenUrl != "mavenCentral">
maven {
url '${mavenUrl}'
}
</#if>
}
</#if>
android {
compileSdkVersion <#if buildApiString?matches("^\\d+$")>${buildApiString}<#else>'${buildApiString}'</#if>
buildToolsVersion "${buildToolsVersion}"
defaultConfig {
<#if isLibraryProject?? && isLibraryProject>
<#else>
applicationId "${packageName}"
</#if>
minSdkVersion <#if minApi?matches("^\\d+$")>${minApi}<#else>'${minApi}'</#if>
targetSdkVersion <#if targetApiString?matches("^\\d+$")>${targetApiString}<#else>'${targetApiString}'</#if>
versionCode 1
versionName "1.0"
}
<#if javaVersion?? && (javaVersion != "1.6" && buildApi lt 21 || javaVersion != "1.7")>
compileOptions {
sourceCompatibility JavaVersion.VERSION_${javaVersion?replace('.','_','i')}
targetCompatibility JavaVersion.VERSION_${javaVersion?replace('.','_','i')}
}
</#if>
<#if enableProGuard>
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
</#if>
}
dependencies {
<#if dependencyList?? >
<#list dependencyList as dependency>
compile '${dependency}'
</#list>
</#if>
compile fileTree(dir: 'libs', include: ['*.jar'])
<#if WearprojectName?has_content && NumberOfEnabledFormFactors?has_content && NumberOfEnabledFormFactors gt 1 && Wearincluded>
wearApp project(':${WearprojectName}')
compile 'com.google.android.gms:play-services:+'
</#if>
<#if unitTestsSupported>
testCompile 'junit:junit:${junitVersion}'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
</#if>
}
经过测试可以用。但是我的as是2.1.2的用的butterknife是8.4.0的。所以别的版本的可不可以用未测试。
小结:此文是我经过2个小时摸索出来的,仅供大家参考,希望对大家有用,谢谢观看。