如题目所示,我在Android Studio中运行项目时,代码没有报错,同步也没问题,但是在build时报错,报错内容如下:
C:\Users\libery\AndroidStudioProject\BtController\app\build\intermediates\instant_run_main_apk_resources\debug\instantRunMainApkResourcesDebug\out\main_resources\resources_ap
报错内容如上所示,也没有显示什么错误,只是指出了一个文件的地址,打开bulid中的报错的那一块,即Run tasks下的:app:transformResourcesWithMergeJavaResForDebug,可以看到有很多Android Studio SDK的一些Java文件有很多错误。
解决办法:既然是build出错,我觉得应该是app目录下的build.gradle出现了问题,我们打开这个文件,可以看到如下所示代码:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26//与下面的targetSdkVersion同步
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "com.example.liberty.helloworld"
minSdkVersion 15
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'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.3-alpha', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.13-beta-3'
}
我是将代码中的SDK版本由26改为了28,更改后下面的库版本号会发生错误。
我们可以将其后面的版本号手动改为28.1.0,但是这样我们不能确定这个版本是否存在,或者这个版本是不是最新版;
我们也可以先不管这个,将版本号改成28.1.0后直接同步,同步完成后若版本号不存在会报错:
ERROR: Failed to resolve: com.android.support:appcompat-v7:28.1.0
Show in Project Structure dialog
Affected Modules: app
然后我们可以打开File下的Project Structure进行版本号更改。
打开之后会弹出如下所示窗口:
在这个窗口的中间Modules下点击app目录,就会出现我们当前项目中依赖的库。
然后在Requested Version中选择最新的版本就可以了。
选择完成后,再次同步问题就解决了,但是其实我也遇到了一些问题就是有的时候这个库版本根本就没有28以上的,但是26它还报错,遇到这种情况,直接在build文件中将之改成28.0.0然后同步就行了,反正解决bug是一门玄学。。。。。