2014-01-16 4 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 개의 매개 변수를 취하고 그 중 하나가 패키지 이름이라는 것입니다. 내 grad 스크립트의 디버그 섹션은 장치의 패키지 이름에 ".debug"를 추가했습니다. 해결 방법은 build.gradle에서 .debug 접미어를 제거하는 것입니다.