1,按官方要求走:

https://github.com/JakeWharton/butterknife

查看报的错:

ERROR: Android Gradle plugin 3.3.0 must not be applied to project 'F:\AuditonProject\Rx_project\app' since version 3.3.0 was already applied to this project

去掉app gradle 里面的:

/*apply plugin: 'com.android.library'*/

接着还报这个错:

接入的是10.1的:

implementation 'com.jakewharton:butterknife:10.1.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

Mainfest冲突:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).Suggestion: add 'tools:replace="android:appComponentFactory"' to  element at AndroidManifest.xml:5:5-19:19 to override.

先解決这个错:
按照提示:

  

然而:

java.lang.RuntimeException: Manifest merger failed with multiple errors, see logsat com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:556)at com.android.build.gradle.tasks.ProcessApplicationManifest.doFullTaskAction(ProcessApplicationManifest.java:198)at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)at java.lang.Thread.run(Unknown Source)

查资料要再加入一句:

 tools:replace="android:appComponentFactory"        android:appComponentFactory="任意字符"

重新编译:还有错误:

Error: Static interface methods are only supported starting with Android N (--min-api 24): void butterknife.Unbinder.lambda$static$0()

参考:
https://blog.csdn.net/adojayfan/article/details/81531270
解释说是因为没有指定jdk 1.8而产生的。
再修改:

android { ...... //指定jdk版本  compileOptions {  sourceCompatibility JavaVersion.VERSION_1_8    targetCompatibility JavaVersion.VERSION_1_8 }   }

这个解决后你会发现还有问题:
这个问题的主要原因是ButterKnife适配了AndoridX而自己的项目没有:

Error: Program type already present: androidx.versionedparcelable.CustomVersionedParcelable

解决办法;

android.useAndroidX=trueandroid.enableJetifier=true

ok以上是接入ButterKnife10.+出现的问题及解决的过程:

看着以上步骤比较烦可以直接切换到下面:

buildscript {    repositories {        google()        jcenter()        mavenCentral()        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }        maven { url "https://dl.google.com/dl/android/maven2" }    }    dependencies {        classpath 'com.android.tools.build:gradle:3.2.1'        classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        google()        jcenter()        maven {            url "https://maven.google.com"//            url "https://dl.google.com/dl/android/maven2/"        }        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }        maven { url "https://dl.google.com/dl/android/maven2" }    }}
app build.gradle: implementation 'com.jakewharton:butterknife:8.8.1'    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

lamda插件接入Gradle:

https://github.com/evant/gradle-retrolambda

1.Download jdk8 and set it as your default.
2.Add the following to your build.gradle

buildscript {   repositories {      mavenCentral()   }   dependencies {      classpath 'me.tatarka:gradle-retrolambda:3.7.0'   }}// Required because retrolambda is on maven centralrepositories {   mavenCentral()}apply plugin: 'com.android.application' //or apply plugin: 'java'apply plugin: 'me.tatarka.retrolambda'

更多相关文章

  1. 关于Android(安卓)studio的build.gradle的内容
  2. android获取指定路径下目录文件
  3. Android(安卓)之获取图片及视频缩略图
  4. Android库. 1 UDP客户端
  5. Android跑指定包Monkey脚本
  6. ProGuard用法
  7. Android(安卓)调用J2EE webservice
  8. Android学习笔记(九)
  9. Android调用系统相机拍照并保存到指定位置

随机推荐

  1. PHP函数的使用
  2. 【第808期】你不懂JS:ES6与未来 语法(中)
  3. 基于Android的淘宝网手机客户端开发见解(
  4. Android(安卓)开发者从0到1发布一个微信
  5. 【IOS和Android】Cocos2d-x 集成微信分享
  6. Android(安卓)打造任意层级树形控件 考验
  7. Android结合Retrofit实现统一加解密处理(G
  8. android缩放大图片加载
  9. Android搜索控件的基本使用方法
  10. Android实现伸缩弹力分布菜单效果