问题1:。在MainActivity.java中,出现语法错误“无法解析符号R”。
问题2:当我尝试清理或重建项目时,出现了很长的错误链接here
还值得注意的是,我仍然可以运行该应用程序并将其部署到手机中。只是构建应用程序的选项失败。
我尝试了一些事情,包括
删除.gradle和.idea / libraries。
添加以下行
implementation 'com.android.support:support-annotations:26.1.0'
创建一个项目并制作一个应用
这是我的应用程序和MyApp Gradle文件。
应用级别:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "engineer.myname.myapp.myapp"
minSdkVersion 22
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-annotations:26.1.0'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
项目级别:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
答案 0 :(得分:2)
您必须在存储库部分添加maven { url 'https://maven.google.com' }
。
项目级别:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://maven.google.com' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
OR
如果使用版本26,则内部依赖项版本应为1.0.1
和3.0.1
,即,如下所示
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
如果使用版本27,则内部依赖项版本应为1.0.2
和3.0.2
,即,如下所示
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
答案 1 :(得分:1)
该错误与所使用的支持注释的版本有关。它在您的错误日志中,最后一个由行引起-
原因:org.gradle.api.GradleException:找不到以下版本 满足版本要求的“ com.android.support:support-annotations” 约束:
由于-
实现'com.android.support:support-annotations:26.1.0'
升级到该库的最新稳定版本将解决此问题。
最新版本为:
implementation 'com.android.support:support-annotations:28.0.0'
由于许多原因,需要升级到最新的库版本。较新的Android工具或Android Studio将需要最新的库,或者您的库中的一个需要另一个库才能运行,等等。
最好在可能的情况下使用最新的稳定版本库。另外,请考虑使用AndroidX库,因为Google以后将不再使用较旧的编号版本。阅读Google Android文档中的here和here。
答案 2 :(得分:0)
每个版本的Android Gradle插件现在都具有默认版本的构建工具。 Android Gradle插件3.3.2
的最低支持版本为28.0.3
。还有可能的依赖版本,例如com.android.support:support-annotations:28.0.0
,应与此版本匹配,以消除以下错误:
>Caused by: org.gradle.api.GradleException: Cannot find a version of 'com.android.support:support-annotations' that satisfies the version constraints:
Dependency path 'MyApp:app:unspecified' --> 'com.android.support:support-annotations:'
Constraint path 'MyApp' --> 'com.android.support:support-annotations' strictly '26.1.0' because of the following reason: debugRuntimeClasspath uses version 26.1.0
以下是可能与您的问题相关的链接:
答案 3 :(得分:0)
这是因为,如果您未将buildToolsVersion
明确添加到应用程序版本中,则Android Studio工具假定您使用的是最新的28.0.3
,即buildToolsVersion
。这个:
android {
compileSdkVersion 26
// you didn't add any buildToolsVersion
defaultConfig {
applicationId "engineer.myname.myapp.myapp"
minSdkVersion 22
targetSdkVersion 26
...
}
...
}
因此,Android Studio会隐式添加buildToolsVersion "28.0.3"
:
android {
compileSdkVersion 26
buildToolsVersion "28.0.3" // added implicitly by Android Studio.
defaultConfig {
applicationId "engineer.myname.myapp.myapp"
minSdkVersion 22
targetSdkVersion 26
...
}
...
}
在构建应用程序时,它会给您错误'cannot resolve symbol R'
,因为buildToolsVersion
28.0.3
无法正确使用compileSdkVersion 26和支持库26。
因此,您需要为buildToolsVersion
,compileSdkVersion
使用相同的版本,并需要支持库来避免此问题。