前提:当前使用Android Studio版本4.2
AS4.2版本默认的编译版本是Java11,一般对应的gradle插件版本4.2.1,gradle版本6.7,1
其对应关系
问题:导入一个项目,编译报错
这个就是gradle版本的问题。
原项目使用的是:
classpath 'com.android.tools.build:gradle:3.0.1'
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
修改为
classpath 'com.android.tools.build:gradle:4.1.0'
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
Android Gradle 插件版本说明 | Android 开发者 | Android Developers
最后发现只修改gradle对应版本还不能解决问题。
接着
1)
org.greenrobot.greendao.gradle.Greendao3GradlePlugin.createGreendaoTask
这是跟GreenDao版本的冲突
原项目使用
org.greenrobot:greendao:3.2.2
改为
org.greenrobot:greendao:3.3.0
2)Could not get unknown property 'packageForR' for task
这是gradle版本和butterknife版本引起的问题
原项目使用
com.jakewharton:butterknife:8.5.1
同时有
那么需要改为:
a、去掉
apply plugin: 'com.jakewharton.butterknife'
b、
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
c、去掉
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
重新编译,上述问题没有了,而又出现了新的问题
The following annotation processors are not incremental
由于butterknife导致项目编译失败,进而导致dagger文件未成功生成。
解决:
编译通过。
》》》》》》》安装apk后,请求失败
CLEARTEXT communication not supported: [ConnectionSpec(cipherSuites=[TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CB
用的Android 10.0手机,应该是项目比较老,android P请求问题。
安卓9开始,不容许未加密就进行网络数据交互。
所以使用http的朋友,会遇到这个问题。
解决办法两个:
1)将http改为https
2)Application节点增加
android:networkSecurityConfig="@xml/network_security_config"
最后,终于成功运行并可以请求到数据。