首页 > 解决方案 > 在 Android Studio 中构建并运行旧的 Android 项目

问题描述

我得到了集成到 AWS 服务的 Android 项目的压缩项目源代码。我需要了解并能够向应用程序添加一些新功能,但我无法在 android studio 中成功运行该项目。我正在使用 Android Studio 4.1.3。

我是 Android 和 AWS 的新手,我只是在学习这些技术。

我应该如何以及从哪里开始研究代码?

另外,如果您能帮助我解决我在 Android Studio 中遇到的问题。我已经尝试杀死所有 gradle 守护进程并杀死所有 java 进程,但我仍然遇到同样的问题。

Android Studio 问题

找不到方法 'org.gradle.api.internal.file.DefaultSourceDirectorySet.(Ljava/lang/String;Ljava/lang/String;Lorg/gradle/api/internal/file/FileResolver;Lorg/gradle/api/internal/ file/collections/DirectoryFileTreeFactory;)V' org.gradle.api.internal.file.DefaultSourceDirectorySet.(Ljava/lang/String;Ljava/lang/String;Lorg/gradle/api/internal/file/FileResolver;Lorg/gradle/ api/internal/file/collections/DirectoryFileTreeFactory;)V

Gradle 的依赖缓存可能已损坏(这有时会在网络连接超时后发生。)

重新下载依赖项并同步项目(需要网络) Gradle 构建过程(守护程序)的状态可能已损坏。停止所有 Gradle 守护程序可能会解决此问题。

停止 Gradle 构建过程(需要重新启动) 您的项目可能正在使用与项目中的其他插件或项目请求的 Gradle 版本不兼容的第三方插件。

在 Gradle 进程损坏的情况下,您还可以尝试关闭 IDE,然后杀死所有 Java 进程。

下面是 build.gradle (项目)

buildscript {
ext.kotlin_version = '1.3.31'
repositories {
    google()
    jcenter()
    
}
dependencies {
    classpath 'com.android.tools.build:gradle:4.1.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.amazonaws:aws-android-sdk-appsync-gradle-plugin:2.9.+'
}}
allprojects {
repositories {
    google()
    jcenter()  }}
task clean(type: Delete) {delete rootProject.buildDir}

下面是 build.gradle (app)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.amazonaws.appsync'
android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.dostcandle.ecrf"
    minSdkVersion 24
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
dataBinding {
    enabled = true
}}
dependencies {
def lifecycle_version = "2.0.0"
def room_version = "2.2.1"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.fragment:fragment-ktx:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.amazonaws:aws-android-sdk-core:2.15.+'
kapt "androidx.room:room-compiler:$room_version"
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.jaredrummler:material-spinner:1.3.1'
implementation 'ph.ingenuity.tableview:tableview:0.1.0-alpha'

implementation 'com.amazonaws:aws-android-sdk-appsync:2.8.+'
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
implementation 'com.amazonaws:aws-android-sdk-auth-ui:2.15.+'

implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.15.+'
implementation 'com.amazonaws:aws-android-sdk-auth-userpools:2.15.+'

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'}

标签: androidandroid-studiokotlinbuild.gradlegradle-kotlin-dsl

解决方案


您使用的是与 Android Gradle Plugin 4.x / Gradle 6+ 不兼容的旧版 AppSync SDK。现在,我看到您正在使用 AGP 4.x。

有关更多详细信息,请参阅此 GitHub 问题

你有两个选择:

  1. 使用旧版本的 Gradle 和 Android Gradle 插件。具体来说,插件的 3.6.3 和 Gradle 的 5.6.4。

  2. 将您的 AppSync 依赖项至少更新到3.1+。有关更多详细信息,请参阅项目 README 中的设置说明

来源:我在 AppSync SDK 中编写了此问题的修复程序。


推荐阅读