您现在的位置是:网站首页> Android
Android Studio项目问题解决办法收集
- Android
- 2024-12-18
- 632人已阅读
Android Studio项目问题解决办法收集
Android Studio 出现 org.gradle.api.plugins.UnknownPluginException 如何解决
android studio dependencies依赖的库(jar包)的存储位置
解决Android Studio dl.google.com无法访问
http,https报错,net:ERR_CLEARTEXT_NOT_PERMITTED解决办法
工程文件的app module的build.gradle里加签名
Android Studio Build APK没有报错,发布时报错
Android studio已缓存的依赖库存放路径
打开as编辑器,项目工程下的External Libraries,找到你要找的依赖库,右击鼠标,点击Library Properties,就能看到文件存放路径。
Android Studio 出现 org.gradle.api.plugins.UnknownPluginException 如何解决
问题
点击sync now 或运行自己写的程序出现报错
搞了半天,往下看突然发现错误的原因了!
突然想起之前用 Qt for Android 搞软件,设置了 JAVA_HOME,这下应该只更改 JDK 环境变量就好了。
在 Setting 中找到 Gradle JDK 的路径
更改 JAVA_HOME 环境变量后重启
解决。
AndroidStudio 报红色,但可正常运行解决方法
引言
最近下载了一份代码,在同事电脑上可以正常编译、显示。在我电脑上R文件就一直显示为红色,但可以编译和运行。在网上查找了各种办法,最终得以解决,这里总结一下解决办法:
一、方法一:自带清除缓存
点击AndroidStudio菜单File -> Invalidate Caches/Restar… ,在弹出的对话框中点击Invalidate and Restar 。等待AS清理并自动重启。
二、方法二:删除user目录下.AndroidStudio中的文件
关闭AndroidStudio,进入C:\Users\xUser.AndroidStudio3.3(3.3为当前AS版本号),删除除了config以外的文件。重新打开AndroidStudio会自动Sync,等待同步完成。
三、方法三:删除user目录下.gradle
关闭AndroidStudio,删除C:\Users\xUser\.gradle。重新打开AndroidStudio会自动Sync,等待同步完成。
注意:删除该文件夹所有的classpath、gradle、compile、implementation等,都需要重新从网上同步。
四、方法四:删除工程目录下.gradle、.idea
关闭AndroidStudio,进入工程根目录,删除.gradle、.idea两个文件夹。重新打开AndroidStudio会自动Sync,等待同步完成。
五、方法五:如果前四种方法都不能解决你的问题,那么还有一种解决办法
前四种方法全试用,都还是报红,但可以正常编译、安装和运行。那就有可能是你当前AndroidStudio版本太低所致,升级你的AS版本。
升级之后,编译项目,你会发现代码正常,不再标红!
Android .grade的配置
Grade
project与module关系
build.gradle (project基本和module级别)
compileSdkVersion minSdkVersion targetSdkVersion buildToolsVersion
一个project可以是多个module
module可以是用用程序也可以是库,可以看build.gradle里面就清楚
gradle的版本在gradle-wrapper.perooperties里面
对应关系
https://developer.android.google.cn/studio/releases/gradle-plugin.html#updating-gradle
创建使用suppoert library库的项目
会发现他的gradle里面
28版本那么compileSdkVersion 改成28
android studio dependencies依赖的库(jar包)的存储位置
一 、项目根目录下build.gradle文件的 dependencies
classpath 引用的文件保存位置git
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
}
}
subprojects {
repositories {
jcenter()
}
}
在windows上,上述三个依赖的保存路径分别是:github
C:\Users\Administrator\ .gradle\caches\modules-2\files-2.1\com.android.tools.build\gradle\2.2.2web
C:\Users\Administrator\ .gradle\caches\modules-2\files-2.1\com.jfrog.bintray.gradle\gradle-bintray-plugin\1.7.1windows
C:\Users\Administrator\ .gradle\caches\modules-2\files-2.1\com.github.dcendents\android-maven-gradle-plugin\1.4.1app
以上地址能够直接复制使用(若是你没有修改过.andorid 和.gradle 目录位置)maven
相要修改.andorid 和.gradle 目录位置详情见
https://blog.csdn.net/Jeff_YaoJie/article/details/80499278svg
C:\Users\Administrator\ 中的Administrator就是你的用户名(C:\Users\你的用户名\)gradle
2、module下的build.gradle文件的 dependencies
compile 或是implementation 引用的第三方库保存的目录文件ui
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.test.sample"
minSdkVersion 14
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}
}
dependencies {
compile project(':rxpermissions')
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
}
compile ‘com.android.support:appcompat-v7:25.0.0’
是android本身的jar包,gradle构建时若发现本地没有该jar包则会去联网下载,放在SDK的目录下,在window系统上好比会将该jar包放在:
D:\android\sdk\extras\android\m2repository\com\android\support\appcompat-v7\25.0.0\
这个目录下; 若发现本地已经有了则直接使用。
compile ‘com.jakewharton.rxbinding:rxbinding:0.4.0’
是第三方jar包,gradle构建时若发现本地没有该jar包则会去联网到中央仓库下载rxbinding 0.4.0的jar包,在window系统上会将该jar包放在: C:\Users\Administrator\ .gradle\caches\modules-2\files-2.1\com.jakewharton.rxbinding\rxbinding\0.4.0 这个目录下; 若发现本地已经有了则直接使用。
解决Android Studio dl.google.com无法访问
1、修改 /build.gradle文件中的repositories的路径
把
repositories {
google()
jcenter()
}
改为
repositories {
// google()
// jcenter()
maven {
url 'https://maven.aliyun.com/repository/google/'
}
maven {
url 'https://maven.aliyun.com/repository/jcenter/'
}
}
即可。如果还不行修改 C:\Users\Administrator\.gradle\gradle.properties的代理,把systemProps注释掉
#systemProp.https.proxyPort=10086
#systemProp.http.proxyHost=127.0.0.1
#systemProp.https.proxyHost=127.0.0.1
#systemProp.http.proxyPort=10086
http,https报错,net:ERR_CLEARTEXT_NOT_PERMITTED解决办法
android应用内跳转WebView出现如标题的报错信息,
原因是从Android 6.0开始引入了对Https的推荐支持,与以往不同,Android P的系统上面默认所有Http的请求都被阻止了。
解决方法如下:
在清单文件里加入android:usesCleartextTraffic="true"这句即可
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
<!-- 加入下面这句 -->
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
工程文件的app module的build.gradle里加签名
例子:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.huiwu.door"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.81"
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "arm64-v8a", "x86_64" }
multiDexEnabled true
}
sourceSets {
main {
jniLibs.srcDirs = ['libs/jni']
}
}
signingConfigs {
debug {
storeFile file("../data/huiwuKey.jks")
storePassword "123123"
keyAlias "door"
keyPassword "123123"
}
release {
storeFile file("../data/huiwuKey.jks")
storePassword "123123"
keyAlias "door"
keyPassword "123123"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
}
dependencies {
// compile files('../extras_libs/okhttp.jar')
compile files('../extras_libs/okhttpserver.jar')
compile files('../extras_libs/okhttputils.jar')
// compile files('../extras_libs/okio.jar')
compile files('../extras_libs/AMap.jar')
compile project(':model')
compile files('../extras_libs/x5.jar')
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1'
compile 'com.google.code.gson:gson:2.7'
compile 'com.android.support:recyclerview-v7:24.1.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.1'
compile 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
compile 'com.android.support:multidex:1.0.1'
}
com.android.support版本冲突的解决办法
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes
当我们使用android studio添加一些第三方的依赖库时,很可能会提示上面这个错误。
大致意思就是com.android.support的包版本号要保持一致,但是可能我们自己新建的项目的com.android.support包版本号要高一些,一些第三方的库的com.android.support可能没有及时更新support库,就会出现这个错误。
解决方法(同样的适用于其他的依赖冲突。)
修改自己项目中的com.android.support的版本号,与所依赖的库版本号一致,但是当我们依赖的库中的com.android.support版本号有好几个版本就不行了。(不推荐)
依赖第三方库时候排除掉对com.android.support包的依赖,这样自己的项目随便依赖什么版本都可以,但是这种方法需要你先找到哪些库存在冲突
通过groovy脚本强制修改冲突的依赖库版本号 (推荐)
将项目迁移至AndroidX(推荐)
排除依赖法
我们先来看第二种方法
首先我们需要知道哪些库存在着冲突
点击Terminal 输入 gradlew -q app:dependencies 回车即可将app中所依赖的库展示出来
然后找出存在冲突的依赖库,这里我们可以看到是arouter中的一个依赖存在版本号不一致的情况,我们只需要将冲突的依赖排除掉即可。
exclude group:表示只要包含com.android.support的都排除
api是android studio3.0中新的依赖方式,对依赖方式还不熟悉的话可以看这篇文章:Android Studio3.0新的依赖方式
例如:
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support'
}
module:删排除group中的指定module
例如:
api("com.afollestad.material-dialogs:core:0.9.5.0") {
exclude group: 'com.android.support', module: 'support-v13'
exclude group: 'com.android.support', module: 'support-vector-drawable'
}
另外还有一个建议,在我们自己创建library给别人使用时,如果需要依赖com.android.support的话,建议用provided的方式依赖(android studio3.0中更改为compileOnly),这样只会在编译时有效,不会参与打包。以免给使用者带来不便。
例:
provided 'com.android.support:appcompat-v7:26.1.0'
provided 'com.android.support:design:26.1.0'
provided 'com.android.support:support-vector-drawable:26.1.0'
通过Grovvy脚本修改版本号解决冲突
在其存在冲突的module中的build.gradle文件中加入下面代码,原理就是通过遍历所有依赖,并修改指定库的版本号
其中
requested.group == 'com.android.support' com.android.support表示要修改的依赖库
details.useVersion '28.0.0' 28.0.0表示要修改的版本号
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '28.0.0'
}
}
}
}
然后rebuild一下即可
将项目迁移至AndroidX(推荐)
第四种方法就是将项目迁移至AndroidX,这样一来我们就无需担心版本号的问题了。而且以后的趋势肯定也是往AndroidX的方向发展的。
迁移方法看官方文档即可,比较简单:迁移至AndroidX
Android Studio Build APK没有报错,发布时报错
有时候 ,我们在调试APK,直接Build是可以正常生成,没有报错,但是当我们将自己的签名文件加上去,就会报错。一般情况下,我们可以在build.gradle中的android{}里面添加一个东西
lintOptions {
checkReleaseBuilds false
abortOnError false
}
整个文件如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 16
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.zhongxuan.himclient"
minSdkVersion 11
targetSdkVersion 17
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
dependencies {
compile files('libs/zxing.jar')
compile files('libs/gson-2.6.1.jar')
compile files('libs/xUtils-2.6.14.jar')
}
还有一种错误
Error: Expected resource of type styleable [ResourceType]
这个错误在编译运行时候并不会出现,但是当需要编译打包的时候,就会爆出这个异常。
这种错误,只需要在提示错误的类里面加入这句:
@SuppressWarnings("ResourceType")
例如:
@SuppressWarnings("ResourceType")
public void initView() {
TypedArray ta = mContext.obtainStyledAttributes(attrs);
boolean hasBottomLine = ta.getBoolean(0, false);
boolean hasTopLine = ta.getBoolean(1, false);
ta.recycle();
}
Android Studio Gradle下载慢的问题
到腾讯镜像下载 https://mirrors.cloud.tencent.com/gradle/ 下载 .all文件
将下载的压缩文件放到相应目录
目录:用户目录 比如andmonistrator/.gradle/wrapper/dists/gradle-5.4.X-all/dhsjdhsjadkad (任意)
Android开发出现maven 不能下载问题
修改build.gradle文件
buildscript {
repositories {
google()
jcenter()
maven {
url 'https://dl.google.com/dl/android/maven2/'
name 'Google'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google();
jcenter()
maven {
url "https://jitpack.io"
}
maven {
url "https://dl.google.com/dl/android/maven2/"
}
//mavenLocal()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
正确导入Android Studio 项目
由于网络上下载的项目和本地环境存在差异直接导出会出错,所以可以在本地创建一个项目然后比较配置文件进行相应修改
比较根目录下的gradle文件
相应修改
找到gradle目录下wrapper目录
打开properties文件比较
app节点下的.gradle
按ALT+Enter出错误提示,就行相应的错误修改
上一篇:Java学习笔记
下一篇:Java Web开发