簡體   English   中英

未找到可繪制資源,但它們存在於可繪制文件夾中

[英]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"?>

這看起來像我遇到的類似錯誤

使用Analyse -> inspect code ...工具在日志中顯示錯誤

未找到可繪制

請在此處查看完整說明

我遇到了同樣的問題。只需使用您的 sdk 版本(例如 (drawable-24))創建一個新的 drawable 文件夾,然后將您的 drawable 粘貼到那里並重新構建項目。

在我的情況下,在 xml 中它使用"@android:drawable/"而不是"@drawable/" 更改為"@drawable/"允許 Android Studio 找到我的文件。

如果您在 gradle 文件中使用它,請刪除shrinkResources 啟用proguard時也會發生這種情況

如果您正在構建應用程序的版本,請確保not foundres文件不在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 文件夾,然后刪除該問題即可解決:)

僅適用於React Native

我錯誤地將啟動畫面文件夾放在了錯誤的文件夾中。

錯誤的路徑

/android/app/src/main/res/drawable

正確路徑

/android/app/src/main/res

另外,我需要下面所有的文件夾都帶有 lauch_screen.png 文件

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM