0

동일한 코드베이스에 두 개의 앱이 있습니다. 같은 Java 파일을 사용하고 res 파일을 저장합니다. 단, 값이 같고 드로어 블 폴더의 파일 이름은 동일하지만 파일 이름은 &입니다.Android Flavors - 기호를 해결할 수 없습니다. R

제가하는 데 문제는 내 Gradle을 빌드 할 때, 나는 때문에 모든 곳에서 내가 RI를 사용하는 데 문제가

Cannot resolve symbol R

내 build.gradle 파일이처럼 보이는 오류를해야하고 있다는 것입니다 (간결 왼쪽으로 몇 가지 설정) :

android { 
    signingConfigs { 
     // left out 
    } 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 
    useLibrary 'org.apache.http.legacy' 
    lintOptions { 
     disable "ResourceType" 
    } 
    defaultConfig { 
     applicationId = "com.au.testapp" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode = 1 
     buildConfigField 'String', 'app_ver_numb', '"1.00"' 
     multiDexEnabled = true 
    } 
    sourceSets { 
     main { 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      assets.srcDirs = ['assets'] 
      res.srcDirs = ['res/main'] 
      manifest.srcFile 'AndroidManifest.xml' 
     } 

     flavorone{ 
      res.srcDirs = ['res/flavorone'] 
     } 

     flavortwo{ 
      res.srcDirs = ['res/flavortwo'] 
     } 

     instrumentTest.setRoot('tests') 
    } 

    productFlavors { 
     flavorone { 
      applicationId "com.au.testapp.flavorone" 
      versionName = "''" 
      buildConfigField 'String', 'app_id', '"79"' 
     } 
     flavortwo { 
      applicationId "com.au.testapp.flavortwo" 
      versionName = "''" 
      buildConfigField 'String', 'app_id', '"79"' 
     } 
    } 

    buildTypes { 
     debug { 
      productFlavors.flavorone.signingConfig signingConfigs.flavorone 
      productFlavors.flavortwosigningConfig signingConfigs.flavortwo 
     } 
     release { 
      productFlavors.flavorone.signingConfig signingConfigs.flavorone 
      productFlavors.flavortwo.signingConfig signingConfigs.flavortwo 

      minifyEnabled true 
      shrinkResources true 
      proguardFile getDefaultProguardFile('proguard-android.txt') 
     } 
    } 
} 

내 폴더 구조는 다음과 같습니다

나는 Gradle에서이 빌드를 할 때 오류가 발생하지 않지만 프로젝트를 빌드하면 R을 찾을 수 없기 때문에 Java 파일에 오류가 발생합니다. 내 빌드 풍미 설정으로 인해 패키지 이름이 올바르지 않습니다.

아이디어가 있으십니까?

답변

1

, 지금 내 하찮은 일에 속 태우고 완료되어, 여기에 대한 답변에서 내 실제 시도이다. at this post을 보면 풍미 특정 리소스가 res/flavorname이 아닌 src/flavorName/res 디렉토리에 있어야 함을 알 수 있습니다.

당신이있는 동안 소스 세트 클로저에서 flavor closure를 제거하십시오. 디렉토리 이름이 맛 이름과 일치하고 정식 폴더 구성을 따르는 경우 맛을위한 소스 세트를 정의 할 필요가 없습니다.

+0

나는 그것을 줄 것이고, 당신에게 곧 nitpicker에 돌아갈 것이다! 지금까지 도와 줘서 고마워. :) – Nickmccomb

+1

문제 없습니다. 귀하의 질문에 좀 더 살펴 봤는데 당신은 또한 향미료 자원을 이동 한 후 res/main에 res/main 형식의 내용을 팝업해야한다고 생각합니다. 그 후에 build.gradle을 업데이트하는 것을 잊지 마십시오. 또한 src/main/java에 기본 응용 프로그램 (이전에 src에 있던 파일)을 이동해야합니다. 이 SO 게시물은 풍미에 맞게 파일을 구조화하는 방법을 설명하는 데있어 나보다 나은 직업입니다. http://stackoverflow.com/a/20345749/6526330 –

+0

아, 이제 이해가됩니다! 그것은 맛에 관한 나의 처음 주간이다. 그래서 나는 그것이 모두 어떻게되어야하는지에 익숙해있다. 나는 당신의 도움 덕분에 지금 당장 올바른 길을 가고있다! – Nickmccomb

1

대부분의 경우 잘못된 XML 파일이 원인입니다. XML 파일은 레이아웃 파일, 값 파일 또는 Manifest 파일 일 수 있습니다.

1) XML 파일을 확인하십시오. 이 import android.R.*;를 좋아하거나 import com.au.testapp.R;

3 같은

2) 수입 R)는 내가 대답 할 필요 그래서 의견을 충분히 평판이없는 프로젝트를 청소하고

+0

맛을 추가하기 전에 XML 파일을 변경하지 않았기 때문에 R 가져 오기를 시도하고 정리하고 다시 작성하여 작동하는지 확인합니다. – Nickmccomb

+0

이 방법으로 가져 오기 시도'import com.au.testapp.R; ' –

+0

그 작동하지 않았다. 아직 R에 문제가 있습니다. 내 빌드에 flavorone이나 flavortwo가 없습니다. -> generated -> source -> r – Nickmccomb

0

를 다시 빌드합니다.

디렉토리의 실제 크기는 "flavor1"이고 디렉토리 이름은 build.gradle에서 "flavorone"입니까? 나는 당신의 포스트에서 저것을주의했다 그러나 실제로 당신의 프로젝트에있는 경우에 확실하지 않다. 그렇다면 문제를 일으킬 수 있습니다. 나는 문제가 당신이 입술/내부 각 맛을 위해 자원 디렉토리를 가지고 있다는 사실에있다 생각

: 좋아

+0

아, 너 니가 나 한테 –

+0

내가 편집하기를 바라고 있었다.lol – Nickmccomb

+1

하하, 나는 새끼를 낳기 위해 살고있다 –

관련 문제