android - 在 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'}
解决方案
您使用的是与 Android Gradle Plugin 4.x / Gradle 6+ 不兼容的旧版 AppSync SDK。现在,我看到您正在使用 AGP 4.x。
有关更多详细信息,请参阅此 GitHub 问题。
你有两个选择:
使用旧版本的 Gradle 和 Android Gradle 插件。具体来说,插件的 3.6.3 和 Gradle 的 5.6.4。
将您的 AppSync 依赖项至少更新到3.1+。有关更多详细信息,请参阅项目 README 中的设置说明。
来源:我在 AppSync SDK 中编写了此问题的修复程序。
推荐阅读
- scala - 简单的函数文字会产生缺少的参数类型
- qt - Qt QOpcUaNode writeAttribute:订阅的错误/客户端不活动
- ajax - drupal 7.67 AJAX HTTP 请求异常终止批处理
- windev - 如何使用二传手?
- ios - 何时调用 safeAreaInsetsDidChange?
- maven - gradle artifactory 插件可以发布纯二进制文件而不是 MavenPublication 吗?
- swift - 如何禁用轻击手势识别器 UIButton 以关闭键盘?
- ruby-on-rails - Rails 6 本地服务器启动:RAILS_ENV=未定义开发环境
- sql-server - SQL Server 2012 安装帐户被锁定
- docker - Docker:Windows 不支持 NAT 设置中的主机 IP 地址