0

Я попытался настроить тип сборки для своего приложения, идентичный моей конфигурации выпуска, за исключением того, что он загружает некоторые образцы данных для тестирования приложения. Я выполнил следующие действия:Drawables not Found Under Custom Type Type

Я использую следующую buildTypes конфигурации в приложениях build.gradle:

buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.config 
    } 
    debug { 
     applicationIdSuffix ".debug" 
     versionNameSuffix "-debug" 
    } 
    sampledata { 
     applicationIdSuffix ".sampledata" 
     versionNameSuffix "-sampledata" 
     signingConfig signingConfigs.config 
    } 
} 

sourceSets { 
    main { res.srcDirs = ['src/main/res', 'src/androidTest/res'] } 
    sampledata { res.srcDirs = ['src/sampledata/res', 'src/main/res'] } 
} 

Я создал соответствующий набор источников (структуру папок) в папке src.

Когда я пытаюсь получить ресурс, используя следующий оператор ресурс не найден (возвращающийся 0):

int resId = context.getResources().getIdentifier("someResource", "drawable", "com.myapp"); 

У меня не было никаких проблем с использованием строковых ресурсов в моем установленном источнике, но я не в этой конфигурации можно получить доступ к чертежам. Перемещение их в папку drawable под main тоже не работало. Что мне не хватает?

ответ

0

Для доступа к ресурсам в исходном наборе имя пакета должно совпадать с именем типа сборки, то есть включать applicationIdSuffix. Изменение getIdentifier() заявление

int resId = context.getResources() 
    .getIdentifier("someResource", "drawable", "com.myapp.sampledata"); 

или

int resId = context.getResources() 
    .getIdentifier("someResource", "drawable", context.getPackageName());