我正在开始将游戏移植到适用于Android的新Gradle Build系统上。
我正在使用Resource.getIdentifier()方法按名称而不是ID加载某些资源。但是,自从切换到Gradle构建以来,此调用始终返回0。 Assets 包含在构建的jar中,并且dex文件中的R.class包含了我所有的资源和ID,这使我很茫然。作为解释。在更改为gradle构建之前,此代码有效。我的build.gradle如下:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
}
}
apply plugin: 'android'
dependencies {
compile 'com.android.support:support-v4:18.0.+'
}
android {
compileSdkVersion 18
buildToolsVersion "19"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
buildTypes {
debug {
packageNameSuffix ".debug"
}
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
TIA。
最佳答案
天哪!我的问题是Resources.getIdentifer()接受3个参数,其中之一是程序包名称。我的gradle脚本的debug部分将“.debug”添加到设备上的软件包名称。解决方案是删除build.gradle中的.debug后缀。
关于gradle - Android Gradle Build Resource.getIdentifier()始终返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174491/