从GitHub下载的Android Studio项目,在较新版本AS打开出现版本不兼容问题的解决方法。

        在GitHub下载了一个Android Studio计算器项目,打开项目后出现一系列问题,本文简单记录出现的问题及解决方法。

1、Gradle安装目录的路径出现错误

问题描述:The specified Gradle installation directory 'G:\Android\Android Studio\gradle\gradle-2.14.1' does not exist.

解决方法:按照以下步骤更改Gradle安装目录的路径

  1. 打开您的Android Studio项目

  2. 点击File -> Settings -> Build, Execution, Deployment -> Gradle

  3. 在"Gradle home"字段中更改Gradle安装目录的路径,确保指向正确的目录。比如,如果Gradle的实际安装目录是"G:\Android\gradle\gradle-2.14.1",则需要更改路径为该目录。

  4. 点击"Apply"和"OK"按钮以保存更改。

  5. 在Android Studio项目中点击"Sync Project with Gradle Files"按钮以同步更改。

注:可按照以下步骤查找本地Gradle的实际安装目录

  1. 打开Android Studio

  2. 点击"File" -> "Settings" -> "Build, Execution, Deployment" -> "Gradle"。

  3. 在Gradle设置中,查看"Gradle home"字段中的路径。这是您当前Android Studio使用的Gradle版本的安装目录。

如果您已经安装了多个版本的Gradle,可以根据需要在Gradle设置中切换版本并查看每个版本的安装目录。在Windows操作系统中,Gradle的默认安装目录通常位于C:\Users\用户名.gradle\wrapper\dists目录中。

2、同步Gradle(点击"Sync Project with Gradle Files"按钮)后,出现连接超时错误。

问题描述:Cause: connect timed out。

在Android Studio中单击"Sync Project with Gradle Files"按钮时,Gradle将尝试下载所需的依赖项和插件。如果遇到“connect timed out”错误,则可能是Gradle无法连接到远程存储库或下载依赖项的连接超时。造成连接超时的原因可能有多种,一般是由于项目中使用的镜像源无法正常访问所引发的Gradle同步失败。

解决方法:更改项目中的镜像源,下面将镜像源更改为阿里的镜像源。

1.打开项目中的build.gradle文件,如下图 

2.将build.gradle文件中的两个repositories{ }语句块内的内容更改为:

maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
google()

3.更改完Ctrl+S保存,再进行同步Gradle就可以连接成功了。

 注:使用VPN(也就是科学上网)也会引发连接超时错误,解决这种情况比较麻烦。下面是一种解决方法:

使用VPN连接到互联网,可以在VPN连接的同时配置代理服务器来实现对Gradle的代理设置。

在VPN连接的同时配置代理服务器。在Android Studio中,可以通过打开"File" -> "Settings" -> "Appearance & Behavior" -> "System Settings" -> "HTTP Proxy"来配置Gradle的代理设置,并输入VPN连接的代理服务器地址和端口号。然后,可以按照通常的步骤进行Gradle同步操作。如果使用VPN连接到互联网,代理服务器设置可能会因VPN提供商和网络环境而异。如果您不确定代理服务器设置,请咨询您的VPN提供商或网络管理员。

3、项目使用的Gradle版本与Android Studio 2022.1不兼容。 

问题描述:The project uses Gradle 2.14.1 which is incompatible with Android Studio 2022.1

项目使用的Gradle版本2.14.1与我使用的Android Studio版本2022.1不兼容。

关于版本兼容问题,需要考虑JDK、Gradle、Android Studio、gradleplugin(Gradle 插件) 这四者之间是否兼容。具体版本兼容可参考下面这篇文章:

http://t.csdn.cn/TnTiM

解决方法:在这个项目中,Gradle 7.5版本、Gradle 插件 7.4.2版本、Android Studio 2022.1版本、JDK

1.更改项目使用的Gradle版本为 7.5:打开gradle-wrapper.properties文件,将

distributionUrl=https\://services.gradle.org/distributions/gradle-版本号-bin.zip

这行代码中的版本号改为7.5

2.更改项目Gradle 插件版本为7.4.2:打开项目中的build.gradle文件,将

classpath 'com.android.tools.build:gradle:版本号'

这行代码中的版本号改为7.4.2

 3.完成更改后保存,点击点击"Sync Project with Gradle Files"按钮进行同步Gradle,可能会比较缓慢,等待完成即可。

4、项目中使用了过时的Gradle语法 。

问题描述:Build file 'C:\Users\Administrator\Desktop\Calculator-master\app\build.gradle' line: 23 A problem occurred evaluating project ':app'. > Could not find method compile() for arguments [directory 'libs'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 

解决方法:更改过时的语法

可以通过将compile改为implementation来解决。在build.gradle文件中找到出现问题的依赖声明,将其中的compile改为implementation即可,例如: 

// 旧语法

compile fileTree(dir: 'libs', include: ['*.jar'])

// 新语法

implementation fileTree(dir: 'libs', include: ['*.jar'])

5、项目使用了旧版的Android Support库 。

问题描述:

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) implementation 'com.android.support:appcompat-v7:24.2.1' testImplementation 'junit:junit:4.12' }Version 28 (intended for Android Pie and below) is the last version of the legacy support library, so we recommend that you migrate to AndroidX libraries when using Android Q and moving forward.

这个信息表明项目使用了旧版的Android Support库,推荐迁移到AndroidX库。AndroidX是Android支持库的重构版本,它提供了更清晰的包结构,更好的命名,更好的性能,同时还修复了许多bug和限制。 

解决方法:

要迁移到AndroidX,需要使用Android Studio的迁移工具,具体步骤如下

  1. 确保你的项目使用了Android Studio 3.2或更高版本。
  2. 在Android Studio的菜单栏中,选择Refactor > Migrate to AndroidX。
  3. 确认所有库都是最新版本,然后点击Refactor。

Android Studio将自动修改你的项目文件,包括build.gradleAndroidManifest.xml和Java代码,以使用AndroidX库。你可能需要手动修改某些代码,因为某些库可能不是AndroidX的一部分。最后,编译并测试你的应用程序以确保它能够正常工作。

 6、在合并 Android 清单文件AndroidManifest.xml时发生了冲突。

问题描述:
Manifest merger failed with multiple errors, see logs

"Manifest merger failed with multiple errors, see logs" 错误通常表示在合并 Android 清单文件时发生了冲突。 

Task :app:processDebugMainManifest FAILED package="com.jupiter.calculator" found in source AndroidManifest.xml: C:\Users\Administrator\Desktop\Calculator-master\app\src\main\AndroidManifest.xml. Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated. Please instead set the namespace (or testNamespace) in the module's build.gradle file, as described here: https://developer.android.com/studio/build/configure-app-module#set-namespace This migration can be done automatically using the AGP Upgrade Assistant, please refer to https://developer.android.com/studio/build/agp-upgrade-assistant for more information. [androidx.vectordrawable:vectordrawable-animated:1.0.0] C:\Users\Administrator\.gradle\caches\transforms-3\d58132105ab173fe617d3377fd03fd9b\transformed\vectordrawable-animated-1.0.0\AndroidManifest.xml Warning: Namespace 'androidx.vectordrawable' used in: androidx.vectordrawable:vectordrawable-animated:1.0.0, androidx.vectordrawable:vectordrawable:1.0.0. C:\Users\Administrator\Desktop\Calculator-master\app\src\main\AndroidManifest.xml:11:9-17:20 Error: android:exported needs to be explicitly specified for element <activity#com.jupiter.calculator.main_activity>. Apps targeting Android 12 and hig her are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. See https://developer.android.com/r/studio-ui/build/manifest-merger for more information about the manifest merger.

解决方法:

这个错误是由于 AndroidManifest.xml 文件中的问题引起的,其中需要解决以下两个问题:

  1. Deprecated Warning: 包名设置在了 source AndroidManifest.xml 文件中的 package 属性中。需要在 module 的 build.gradle 文件中设置 namespace(或 testNamespace)来代替。建议使用 AGP Upgrade Assistant 自动完成迁移,具体信息可以参考 https://developer.android.com/studio/build/agp-upgrade-assistant

  2. Error: 需要在组件定义了 intent filter 的情况下显式地指定 android:exported 属性的值,具体信息可以参考 https://developer.android.com/guide/topics/manifest/activity-element#exported 。针对这个问题,需要在 AndroidManifest.xml 文件中的相关 activity 标签中显式地添加 android:exported="true" 或 android:exported="false" 属性。

因此,你需要更新 AndroidManifest.xml 文件中相关的 activity 标签,并将 android:exported 属性设置为 true 或 false。另外,也需要在 module 的 build.gradle 文件中设置 namespace。最后重新运行 Gradle 任务即可。

上面这一堆做了两件事:

1.打开清单文件AndroidManifest.xml,将相关的 activity 标签的 android:exported 属性设置为 true 或 false。

2.打开module的build.gradle文件,在

applicationId "com.jupiter.calculator"
这行代码下面添加一行
namespace "com.jupiter.calculator"

 

猜你喜欢

转载自blog.csdn.net/Seattle_night/article/details/129827718