我开始将我的游戏移植到适用于Android的新Gradle Build系统。 我正在使用Resource.getIdentifier()方法按名称而不是ID加载一些资源。但是,自从切换到Gradle构建版本以来,此调用始终返回0.资源包含在构建的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。
答案 0 :(得分:0)
D'哦!我的问题是Resources.getIdentifer()有3个参数,其中一个是包名。我的gradle脚本的调试部分将“.debug”添加到设备上的包名称。解决方法是删除build.gradle中的.debug后缀。