0

同じコードベースに2つのアプリがあります。同じJavaファイルを使用してresファイルを保存します。ただし、ファイル名は同じですが内容は異なる&の同じ値を持つ値とドロウアブルフォルダは除きます。Androidフレーバー - シンボルを解決できません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') 
     } 
    } 
} 

マイフォルダ構造は次のようになります。

src 
    com 
     au 
      testapp 
       adapter 
       utils 
       db 
       common 
       ... 
res 
    main 
     anim 
     animator 
     ... 
     drawable 
     layout 
     values 
     ... 
    flavorone 
     drawable 
     values 
    flavortwo 
     drawable 
     values 

これをGradleでビルドすると、エラーは発生しませんが、プロジェクトをビルドすると、Rファイルが見つからないため、Javaファイルにエラーが発生します。私のビルドフレーバー設定のためにパッケージ名が正しくありません。

アイデア?

答えて

1

は、今私のつべこべが行われていることを、ここでの回答で私の実際の試みです。 at this postを見ると、フレーバー固有のリソースはres/flavornameにないsrc/flavorName/resディレクトリに置かれているはずです。

あなたがいる間、ソースセットクロージャからフレーバークロージャを削除してください。ディレクトリ名がフレーバー名と一致し、正規のフォルダ構成に従う限り、フレーバのソースセットを定義する必要はありません。

+0

私は行くとすぐにあなたに戻ってnitpickerを与えるよ!これまでのご協力ありがとうございました:) – Nickmccomb

+1

問題ありません。私はあなたの質問をもっと見てみました。また、フレーバーリソースを移動した後に、res/mainの内容をresにポップしなければならないと思います。 (その後、build.gradleを更新することを忘れないでください)。さらに、src/main/javaに基本アプリ用のJavaファイル(srcにあるsrcファイル)を移動する必要があります。このSO投稿は、フレーバー用にファイルを構造化する方法を説明する際に、私よりも優れた仕事をします:http://stackoverflow.com/a/20345749/6526330 –

+0

ああ、今は意味があります!それは味の私の最初の日だから私はまだそれがすべてセットアップされるべきである方法に慣れている。私はあなたの助けを借りて今すぐ正しい道を歩いています! – Nickmccomb

1

ほとんどの場合、それは悪いXMLファイルが原因です。 XMLファイルは、レイアウトファイル、値ファイル、またはマニフェストファイルです。

1)xmlファイルを確認してください。このimport android.R.*;またはこのimport com.au.testapp.R;

3などのような

2)輸入R)プロジェクトをきれいにし、

+0

フレーバーを追加する前にXMLファイルが変更されていないので、私はあなたのRインポートを試し、クリーンで再構築してその動作を確認します。 – Nickmccomb

+0

この方法では 'import com.au.testapp.R;' –

+0

が動作しませんでした。私のビルドにflavoroneやflavortwoはありません - >生成 - >ソース - > r – Nickmccomb

0

を再構築し、私はので、私は答える必要がコメントするのに十分な評判を持っていません。

あなたのディレクトリresは実際には "flavor1"と呼ばれますが、build.gradleで使用しているディレクトリ名は "flavorone"と呼ばれていますか?私はあなたのポストで気づいたが、実際にあなたのプロジェクトの場合は確かではない。もしそうなら、問題を引き起こす可能性があります。私は、問題は、あなたがするres /の内側にそれぞれの味のためにあなたのリソースディレクトリを持っているという事実にあると思います

:わかりました

+0

ああ、あなたは忍者でした –

+0

私は誰かがコメントする前にそれを編集したいと思っていました!笑 – Nickmccomb

+1

母、私は狩人のために生きている –

関連する問題