AndroidStudio疑难杂症汇总

慢更

1 在build.gradle中加载依赖完成后library中没有/报can not find xxxx依赖

下述两个方法目前解决了我的大部分问题,若有其他解决方案后续再更

1 若依赖有jar包

可直接将jar包放入lib文件夹(若无lib包可自行创建),随后右键导入
可参考下述链接
https://blog.csdn.net/ygd1994/article/details/51346984

2若依赖无jar包

可尝试换mave源
在项目buildgradle中新增

	maven {
    
     url 'https://maven.aliyun.com/repository/public/' }
    maven {
    
     url 'https://maven.aliyun.com/repository/gradle-plugin' }
    maven {
    
     url 'https://maven.aliyun.com/repository/central' }

在这里插入图片描述
参考下述链接
https://www.jianshu.com/p/8a1148d1162d

2 AAPT2 编译报错 AAPT2 error

这个网上还蛮多不一样的解决方案的
其中在项目的gradle.properties中添加: android.enableAapt2=false 应该是已经彻底无法解决了。
我的最终解决方案是降低build.gradle中的SdkVersion,具体原因还未知,但的确解决了appt2报错

compileSdkVersion 34
buildToolsVersion "34.0.0"

//
        targetSdkVersion 34

将其改为

compileSdkVersion 30
buildToolsVersion "30.0.0"

//
        targetSdkVersion 33

贴几个其他博主方案
1、删除导致该问题的jar包
https://blog.csdn.net/ExploreJupiter/article/details/132949567
2、检查res文件/检查布局文件引用/ AS的gradle路径 不能为中文
https://blog.csdn.net/zhtttyyzc/article/details/81510069

3 文件类型读不全

在做项目过程中,发现app无法读取dsd文件,但是读写权限是没问题的,也适配了android13+,仍然无法读取dsd类型。
后来几经转折,才读到相关博客。
在AndroidManifest.xml中添加以下代码

    <application
        android:requestLegacyExternalStorage="true">
        ...
    </application>

具体原因如下博客所示。
http://t.csdnimg.cn/CGg0p

4 第三方依赖库使用android,本项目为androidx,依赖冲突。

日志大致内容如下

Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.12.0.aar ->
 core-1.12.0-runtime (androidx.core:core:1.12.0) and support-compat-26.1.0.aar -> 
 support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) 
 Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules core-1.12.0.aar -> 
 core-1.12.0-runtime (androidx.core:core:1.12.0) and support-compat-26.1.0.aar -> support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules core-1.12.0.aar
  -> core-1.12.0-runtime (androidx.core:core:1.12.0) and support-compat-26.1.0.aar 
  -> support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.IResultReceiver found in modules core-1.12.0.aar 
  -> core-1.12.0-runtime (androidx.core:core:1.12.0) and support-compat-26.1.0.aar 
  -> support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules core-1.12.0.aar 
  -> core-1.12.0-runtime (androidx.core:core:1.12.0) and support-compat-26.1.0.aar 
  -> support-compat-26.1.0-runtime (com.android.support:support-compat:26.1.0) Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules core-1.12.0.aar 

项目gradle.properties中添加以下代码
android.useAndroidX=true
android.enableJetifier=true
1 android.useAndroidX=true:表示使用 AndroidX 库。
2 android.enableJetifier=true:表示自动将依赖项中的 Support Library 替换为 AndroidX 库。

参考
https://www.cnblogs.com/dongweiq/p/17072015.html

5 Android编译/导出apk时错误:Missing classes detected while running R8.

问题:Missing classes detected while running R8.
Please add the missing classes or apply additional keep rules that are generated in X:\xxxx\app\build\outputs\mapping\release\missing_rules.txt.
解决:
打开:X:\xxxx\app\build\outputs\mapping\release\missing_rules.txt,将里面的内容复制到proguard-rules.pro内,重新编译/导出
层级如下,但因为已经解决,所以该txt不在图片中。
在这里插入图片描述

参考
https://www.cnblogs.com/chenmiaotian/p/18278550

6 第三方库使用问题

1 retrofit&okhttp java.net.ProtocolException: Expected ‘:status’ header not present

更新当前使用的okhttp/retrofit版本到最新版本或者不显示该error的版本即可
参考
https://blog.csdn.net/qq_34895720/article/details/100083754
https://cloud.tencent.com/developer/ask/sof/308407

2 Firebase Crashlytics集成

集成后,release时始终报错
*

Execution failed for task ':app:uploadCrashlyticsMappingFileXXXRelease'.
> org.apache.http.conn.HttpHostConnectException: 
> Connect to firebasecrashlyticssymbols.googleapis.com:443 
> [firebasecrashlyticssymbols.googleapis.com/172.217.160.74] 
> failed: Connection timed out: connect

方法1 科学上网
方法2 在app项目的build.gradle中添加以下代码

gradle.taskGraph.whenReady {
    
    
    tasks.each {
    
     task ->
        if (task.name.contains("uploadCrashlyticsMappingFile")) {
    
    
            task.enabled = false
        }
    }
}

在这里插入图片描述
参考
https://blog.csdn.net/u010976213/article/details/107109187

3 ButterKnife 和 Gradle 冲突

发现冲突后,我先考虑了修改gradle版本,于是又出现了 4 中的问题
后续修改butterknife版本,可编译通过
参考
https://developer.aliyun.com/article/1143617

4 修改gradle版本衍生问题 Unable to find method 'org.gradle.api.file)

即gradle版本不匹配
查看对应关系,修改版本号即可 版本号可查看该参考链接 https://blog.csdn.net/dongxin214/article/details/100726807
参考
https://cloud.tencent.com/developer/article/1755125

7 编译时出现:Unable to resolve dependency for ‘:app@debug/compileClasspath’

主要解决方案:
工程目录 app–>build.gradle 在android{…}下 添加下列代码
allprojects {
repositories {
jcenter()
maven { url ‘http://maven.aliyun.com/nexus/content/groups/public/’ }
}
}
buildscript {
repositories {
maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’}
}
}

参考
https://blog.csdn.net/persistencegoing/article/details/100726262

8 编译时出现Deprecated Gradle features were used in this build, making it incompatible with Gradle x.0. 解决办法

修改build.gradle文件

allprojects {
    
    
    buildscript {
    
    
        repositories {
    
    
            mavenCentral() //新增
            google()
        }
 
        dependencies {
    
    
            classpath 'com.android.tools.build:gradle:7.0.4'
        }
    }
 
    repositories {
    
    
        mavenCentral()//新增
        google()
    }
...
}

参考
https://blog.csdn.net/qq_41973169/article/details/129079641

9 编译时出现Cannot use @TaskAction annotation on method TransformTask.transform()

解决办法:
修改gradle版本为7.x.x版本,这里我修改为7.0.2-all
下载gradle镜像链接 : https://mirrors.cloud.tencent.com/gradle/
在这里插入图片描述

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip

参考
https://blog.csdn.net/wangchenggggdn/article/details/131081227

10 此应用专为旧版Android打造

解决方案:在gradle中调高minSdkVersion
若未解决,博主提供了其他解决方案。
参考
https://blog.csdn.net/u013718730/article/details/94583439

11 gradle7.0以上版本报错Using insecure protocols with repositories, without explicit opt-in, is unsupported.

maven仓库的配置需要引用HTTPS的方式进行;

pluginManagement {
    
    
    repositories {
    
    
        maven {
    
    
            allowInsecureProtocol  true # 中间不需要加 = 号 不然不行
            url '你的maven地址,需要是https的'
        }
    }
}
dependencyResolutionManagement {
    
    
    repositories {
    
    
        maven {
    
    
            allowInsecureProtocol  true 
            url '你的maven地址,需要是https的'
        }
    }
}

参考
https://blog.csdn.net/qq_41998504/article/details/128630418

12 编译时报错Failed to notify build listener.

尝试降低项目gradle的版本
1在build.gradle中
2在gradle-wrapper.properties中
(但我似乎不是这样解决的,忘记了,存疑一下。)
参考
https://blog.csdn.net/shenggaofei/article/details/106597134

13 编译时报错Cause: unable to find valid certification path to requested target

方法1
尝试修改gradle-wrapper.properties的gradle地址
使用腾讯云镜像,gradle-6.6.1-bin.zip换为自己需要的版本
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.6.1-bin.zip

方法2
根目录的build文件里加上镜像代码,重新编译
maven{url ‘http://maven.aliyun.com/nexus/content/groups/public/’}在这里插入图片描述

参考
https://blog.csdn.net/c18871189293/article/details/105681103

猜你喜欢

转载自blog.csdn.net/weixin_52282455/article/details/141458694