![](/img/trans.png)
[英]Drawable Image gives 'No resource found..' but it is in the folder
[英]Resource drawable not found but they exist in drawable folder
我正在处理 android 申请大约 2 个月。 几乎每次我在尝试构建项目时创建自定义可绘制对象时,我都会收到 Android 资源链接失败错误,之后是 android 工作室无法定位的可绘制对象名称。
我的解决方案是我将这些可绘制对象移出我的项目并在出现错误后重建应用程序我再次将可绘制对象移回我的项目并且当我重建我的APK
时不再有错误并且我可以构建,运行甚至生成APK
这些可绘制对象工作得很好。 但是现在我的项目完成了,我想生成签名的 apk,但是我无法摆脱 Android 资源链接失败错误。 我把我的一些可绘制代码放在下面。
retry_btn.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/register_btn_disabled"/>
<item android:state_pressed="true" android:drawable="@drawable/register_btn_clicked"/>
<item android:state_pressed="false" android:drawable="@drawable/register_btn_normal"/>
<item android:drawable="@drawable/register_btn_normal"/>
</selector>
story_box.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:color="#70707070" android:width="1dp"/>
</shape>
table_border.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#333333" />
<solid android:color="#EEEEEE" />
</shape>
</item>
</layer-list>
我的项目中提供了所有可绘制对象,但是当我尝试生成签名的 apk 时,我得到了这个 output:
Android 资源链接失败
Output: C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_main.xml:51: 错误:资源可绘制/搜索(又名 uk.MyAppName.www.MyAppName:drawable/search)不是成立。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_movie.xml:234: error: resource drawable/story_box (aka uk.MyAppName.www.MyAppName:drawable/story_box) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_no_inte.net.xml:49: error: resource drawable/retry_btn (aka uk.MyAppName.www.MyAppName:drawable/retry_btn) 不是成立。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_register.xml:205: error: resource drawable/register_btn (aka uk.MyAppName.www.MyAppName:drawable/register_btn) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_register.xml:215: error: resource drawable/register_btn (aka uk.MyAppName.www.MyAppName:drawable/register_btn) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\activity_search.xml:39: 错误:找不到资源可绘制/搜索(又名 uk.MyAppName.www.MyAppName:drawable/search)。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\search_table_item.xml:2: error: resource drawable/table_border (aka uk.MyAppName.www.MyAppName:drawable/table_border) 未找到。
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\src\main\res\layout\table_item.xml:2: error: resource drawable/table_border (aka uk.MyAppName.www.MyAppName:drawable/table_border) 找不到。
错误:链接文件资源失败。命令:C:\Users\MyUser.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\ac5e520165d725772f5386c054776ce5\aapt2-3.2.1-4818971-windows link-aapt2.我\
C:\Users\MyUser\AppData\Local\Android\Sdk\platforms\android-28\android.jar\
- 显现\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\merged_manifests\release\processReleaseManifest\merged\AndroidManifest.xml\
-o\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\processed_res\release\processReleaseResources\out\resources-release.ap_\
-R\
@C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\incremental\processReleaseResources\resources-list-for-resources-release.ap_.txt\
--auto-add-overlay\
--java\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\generated\not_namespaced_r_class_sources\release\processReleaseResources\r\
--proguard\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\proguard-rules\release\aapt_rules.txt\
--自定义包\
英国.MyAppName.www.MyAppName\
-0\
应用程序\
--输出文本符号\
C:\Users\MyUser\AndroidStudioProjects\MyAppName\app\build\intermediates\symbols\release\R.txt\
--no-version-vectors
守护进程:AAPT2 aapt2-3.2.1-4818971-windows 守护进程 #0
这是我的 gradle 文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "uk.MyAppName.www.MyAppName"
minSdkVersion 21
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'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
productFlavors {
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.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'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'org.jetbrains.anko:anko-commons:0.10.4'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.google.android.exoplayer:exoplayer:2.9.1'
}
对于所有遇到此问题的人,只需将您的 drawable 文件夹更改为 drawable-v(您的 sdk 版本),希望这个答案能解决您的问题。 或者添加另一个具有上述名称的可绘制目录,然后简单地将您的可绘制文件复制到那里。
在某些情况下,它与重命名可绘制对象无关。
重新检查您处理的最后一个 drawable/xml 文件,这可能是罪魁祸首。
我错误地在顶部有 2 个根标签<?xml version="1.0" encoding="utf-8"?>
我遇到了同样的问题。只需使用您的 sdk 版本(例如 (drawable-24))创建一个新的 drawable 文件夹,然后将您的 drawable 粘贴到那里并重新构建项目。
在我的情况下,在 xml 中它使用"@android:drawable/"
而不是"@drawable/"
。 更改为"@drawable/"
允许 Android Studio 找到我的文件。
如果您在 gradle 文件中使用它,请删除shrinkResources
。 启用proguard
时也会发生这种情况
如果您正在构建应用程序的版本,请确保not found
的res
文件不在debug
文件夹中,您可以通过按Project
视图而不是Android
视图打开文件来检查它
查找您的gradel文件并确保应用程序ID与package属性中的mainfest文件的包相同
对我有类似问题的方法是删除对可绘制对象 ID 的引用,然后使用 Android Studio 的自动完成功能来恢复它。
对我来说,从 android 库中插入新的图像矢量资产时会出现问题。
这是我的文件夹中已有的资产:一个保存图标,因此我对其进行了不同的命名。
我习惯于为所有资产设置标准值,因此我将 ctrl + C、ctrl + V 这些值添加到新创建的资产上,它们仅包括颜色和大小,如下所示:
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#718792"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
我总是保持路径不变。
删除此资产后,一切都恢复正常。
例如,在没有测试插入的每一行的情况下,永远不应该全速编写代码(对于那些知道它的人来说,这很像巴甫洛夫对 AutoCad 中的 ctrl+G 的响应),......我什至没有夸大其词。
对我有用的可能有一些可能的原因。 1.-> <?xml version="1.0" encoding="utf-8"?>
你可能已经写了两次。 这不是我的情况。 2.-> 我在 drawable-v24 中复制了同一个文件,它对我有用。
只需将项目结构从 app 更改为 project_files,然后转到创建不可见文件的 drawable 文件夹,然后删除该问题即可解决:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.