2014-01-16 25 views
1

我開始將我的遊戲移植到Android的新Gradle Build系統。 我正在使用Resource.getIdentifier()方法通過名稱而不是ID加載一些資源。但是,從切換到Gradle構建之後,這個調用總是返回0.資源包含在構建的jar中,dex文件中的R.class包含我所有的資源和ID,因此我很茫然以解釋這一點。此代碼在我更改爲gradle構建之前有效。我的build.gradle如下:Android Gradle Build Resource.getIdentifier()總是返回0

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

D'oh!我的問題是Resources.getIdentifer()需要3個參數,其中一個是包名。我的gradle腳本的調試部分正在將「.debug」添加到設備上的軟件包名稱上。解決方法是刪除build.gradle中的.debug後綴。