Android Gradle Build Resource.getIdentifier()始终返回0

时间:2014-01-16 22:46:07

标签: gradle android-gradle

我开始将我的游戏移植到适用于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。

1 个答案:

答案 0 :(得分:0)

D'哦!我的问题是Resources.getIdentifer()有3个参数,其中一个是包名。我的gradle脚本的调试部分将“.debug”添加到设备上的包名称。解决方法是删除build.gradle中的.debug后缀。