0

응용 프로그램 테스트 용 샘플 데이터를로드한다는 점을 제외하면 내 릴리스 구성과 동일한 응용 프로그램 빌드 형식을 구성하려고했습니다. 사용자 지정 빌드 유형에서 드로어 블을 찾을 수 없음

buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.config 
    } 
    debug { 
     applicationIdSuffix ".debug" 
     versionNameSuffix "-debug" 
    } 
    sampledata { 
     applicationIdSuffix ".sampledata" 
     versionNameSuffix "-sampledata" 
     signingConfig signingConfigs.config 
    } 
} 

sourceSets { 
    main { res.srcDirs = ['src/main/res', 'src/androidTest/res'] } 
    sampledata { res.srcDirs = ['src/sampledata/res', 'src/main/res'] } 
} 

는 I는 해당 소스 세트 (폴더 구조)을 생성 src 폴더 아래 : I는 앱 build.gradle의 다음 buildTypes 구성을 사용

: I는 다음과 같이 수행 하였다.

I (0 반환) 자원이 발견되지 않는 다음 문을 사용하여 리소스를 얻을 때 : 내가 아니에요 내 소스 설정되어 있지만 의 문자열 리소스를 사용하여 아무런 문제가 없었다

int resId = context.getResources().getIdentifier("someResource", "drawable", "com.myapp"); 

을 이 구성에서 드로어 블에 액세스 할 수 있습니다. drawable 폴더로 이동 (main)하지 않았습니다. 내가 뭘 놓치고 있니?

답변

0

소스 세트의 리소스에 액세스하려면 패키지 이름이 빌드 유형의 리소스 이름과 일치해야합니다 (예 : applicationIdSuffix 포함).

int resId = context.getResources() 
    .getIdentifier("someResource", "drawable", "com.myapp.sampledata"); 

또는

int resId = context.getResources() 
    .getIdentifier("someResource", "drawable", context.getPackageName()); 
getIdentifier() 문을 변경
관련 문제