在自定义构建类型下找不到可绘制对象
Drawables not Found Under Custom Build Type
我已尝试为我的应用程序配置一个与我的发布配置相同的构建类型,只是它加载了一些用于测试应用程序的示例数据。我执行了以下步骤:
我在应用程序的 build.gradle
中使用以下 buildTypes
配置:
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");
我在源集中使用字符串资源没有遇到问题,但我无法访问此配置中的可绘制对象。将它们移动到 main
下的 drawable
文件夹也不起作用。我错过了什么?
为了访问源集中的资源,包名称必须与构建类型相匹配,即包括 applicationIdSuffix
。将 getIdentifier()
语句更改为
int resId = context.getResources()
.getIdentifier("someResource", "drawable", "com.myapp.sampledata");
或
int resId = context.getResources()
.getIdentifier("someResource", "drawable", context.getPackageName());
我已尝试为我的应用程序配置一个与我的发布配置相同的构建类型,只是它加载了一些用于测试应用程序的示例数据。我执行了以下步骤:
我在应用程序的 build.gradle
中使用以下 buildTypes
配置:
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");
我在源集中使用字符串资源没有遇到问题,但我无法访问此配置中的可绘制对象。将它们移动到 main
下的 drawable
文件夹也不起作用。我错过了什么?
为了访问源集中的资源,包名称必须与构建类型相匹配,即包括 applicationIdSuffix
。将 getIdentifier()
语句更改为
int resId = context.getResources()
.getIdentifier("someResource", "drawable", "com.myapp.sampledata");
或
int resId = context.getResources()
.getIdentifier("someResource", "drawable", context.getPackageName());