您现在的位置是:网站首页> Android

Android Studio项目问题解决办法收集

  • Android
  • 2024-12-18
  • 632人已阅读
摘要

Android Studio项目问题解决办法收集


Android studio已缓存的依赖库存放路径

Android Studio 出现 org.gradle.api.plugins.UnknownPluginException 如何解决

AndroidStudio 报红色,但可正常运行解决方法

Android .grade的配置

android studio dependencies依赖的库(jar包)的存储位置

解决Android Studio dl.google.com无法访问

http,https报错,net:ERR_CLEARTEXT_NOT_PERMITTED解决办法

工程文件的app module的build.gradle里加签名

com.android.support版本冲突的解决办法

Android Studio Build APK没有报错,发布时报错

Android Studio Gradle下载慢的问题

Android开发出现maven 不能下载问题

正确导入Android Studio 项目





Android studio已缓存的依赖库存放路径

打开as编辑器,项目工程下的External Libraries,找到你要找的依赖库,右击鼠标,点击Library Properties,就能看到文件存放路径。
1.png
2.png



Android Studio 出现 org.gradle.api.plugins.UnknownPluginException 如何解决

问题

点击sync now 或运行自己写的程序出现报错


1.png


搞了半天,往下看突然发现错误的原因了!

2.png



突然想起之前用 Qt for Android 搞软件,设置了 JAVA_HOME,这下应该只更改 JDK 环境变量就好了。


在 Setting 中找到 Gradle JDK 的路径

3.png

4.png




更改 JAVA_HOME 环境变量后重启


解决。


AndroidStudio 报红色,但可正常运行解决方法

引言

最近下载了一份代码,在同事电脑上可以正常编译、显示。在我电脑上R文件就一直显示为红色,但可以编译和运行。在网上查找了各种办法,最终得以解决,这里总结一下解决办法:


一、方法一:自带清除缓存

点击AndroidStudio菜单File -> Invalidate Caches/Restar… ,在弹出的对话框中点击Invalidate and Restar 。等待AS清理并自动重启。


 

1.png


1.png



 


二、方法二:删除user目录下.AndroidStudio中的文件

关闭AndroidStudio,进入C:\Users\xUser.AndroidStudio3.3(3.3为当前AS版本号),删除除了config以外的文件。重新打开AndroidStudio会自动Sync,等待同步完成。 


1.png


 


三、方法三:删除user目录下.gradle

关闭AndroidStudio,删除C:\Users\xUser\.gradle。重新打开AndroidStudio会自动Sync,等待同步完成。 

注意:删除该文件夹所有的classpath、gradle、compile、implementation等,都需要重新从网上同步。 


1.png

 


四、方法四:删除工程目录下.gradle、.idea

关闭AndroidStudio,进入工程根目录,删除.gradle、.idea两个文件夹。重新打开AndroidStudio会自动Sync,等待同步完成。 

1.png



 


五、方法五:如果前四种方法都不能解决你的问题,那么还有一种解决办法

前四种方法全试用,都还是报红,但可以正常编译、安装和运行。那就有可能是你当前AndroidStudio版本太低所致,升级你的AS版本。


1.png

2.png



升级之后,编译项目,你会发现代码正常,不再标红!


Android .grade的配置

Grade  

project与module关系  

build.gradle (project基本和module级别)

compileSdkVersion  minSdkVersion  targetSdkVersion buildToolsVersion


一个project可以是多个module

module可以是用用程序也可以是库,可以看build.gradle里面就清楚

1.png

1.png

1.png


gradle的版本在gradle-wrapper.perooperties里面

1.png

对应关系

https://developer.android.google.cn/studio/releases/gradle-plugin.html#updating-gradle

1.png

1.png

1.png


创建使用suppoert library库的项目

1.png

会发现他的gradle里面

1.png


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中所依赖的库展示出来

1.png然后找出存在冲突的依赖库,这里我们可以看到是arouter中的一个依赖存在版本号不一致的情况,我们只需要将冲突的依赖排除掉即可。

2.png



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文件

将下载的压缩文件放到相应目录

1.png

目录:用户目录 比如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 项目

由于网络上下载的项目和本地环境存在差异直接导出会出错,所以可以在本地创建一个项目然后比较配置文件进行相应修改

1.png

比较根目录下的gradle文件

1.png

相应修改

找到gradle目录下wrapper目录

打开properties文件比较

1.png

app节点下的.gradle

1.png

1.png

1.png

按ALT+Enter出错误提示,就行相应的错误修改























上一篇:Java学习笔记

下一篇:Java Web开发

Top