2017-03-22 11 views
0

私のアプリケーションでは、(basiclibはライブラリです)ライブラリビルドで 'productFlavors'を設定します。私はプロジェクトをビルドします。アプリケーションにはimportエラーが多くあります.baselibパッケージとbascilib依存パッケージをインポートできません。私のアプリケーションで私はモジュール(ライブラリ)を持っています。ライブラリbuild.Theアプリケーションで 'productFlavors'を設定すると、アプリケーションに依存することはできません

しかし、私はbasiclib.every物事の 'productFlavors'を削除します。

アプリケーションのビルド:

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.retrolambda' 

android { 
    compileSdkVersion 23 
    buildToolsVersion '23.0.3' 

    dataBinding { 
     enabled true 
    } 


    defaultConfig { 
     applicationId "xxxx" 
     minSdkVersion 11 
     targetSdkVersion 22 
     versionCode 18000 
     versionName "1.0.0" 

    } 


    lintOptions { 
     abortOnError false 
    } 

    buildTypes { 
     release { 
      signingConfig signingConfigs.myConfig 
      minifyEnabled true; 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      zipAlignEnabled true 
     } 
    } 


    flavorDimensions "url", "theme" 
    productFlavors { 
     sit { 
      buildConfigField 'String', 'API_URL', '"xxxx"' 
      dimension "url" 
     } 
     uat { 
      buildConfigField 'String', 'API_URL', '"xxxx"' 
      dimension "url" 
     } 
     prd { 
      buildConfigField 'String', 'API_URL', '"xxx"' 
      dimension "url" 
     } 

     themewhite { 
      buildConfigField 'String', 'theme', '"white"' 
      dimension "theme" 
     } 


    } 
    sourceSets { 
     sit { 
      java.srcDirs = ['src/sit_uat/java'] 
     } 
     uat { 
      java.srcDirs = ['src/sit_uat/java'] 
     } 
     prd { 
      java.srcDirs = ['src/prd/java'] 
     } 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

} 



dependencies { 
    compile fileTree(include: '*.jar', dir: 'libs') 
    sitCompile 'com.bugtags.library:bugtags-lib:latest.integration' 
    prdCompile 'com.umeng.analytics:analytics:latest.integration' 
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.0' 
    compile 'com.jiechic.library:xUtils:2.6.14' 
    compile 'com.loopj.android:android-async-http:1.4.7' 
    compile 'org.apache.httpcomponents:httpcore:4.4.1' 
    compile 'com.android.support:recyclerview-v7:23.2.1' 
    compile 'com.android.support:design:23.2.1' 
    // Did'n work. 
    compile project(path: ':basiclib') 
} 

ライブラリのビルド(basiclib)

apply plugin: 'com.android.library' 
apply plugin: 'realm-android' 
apply plugin: 'me.tatarka.retrolambda' 
android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    flavorDimensions "url" 
    productFlavors { 
     sit { 
      buildConfigField 'String', 'API_URL', '"xxxxx"' 
      dimension "url" 
     } 
     uat { 
      buildConfigField 'String', 'API_URL', '"xxxxx"' 
      dimension "url" 
     } 
     prd { 
      buildConfigField 'String', 'API_URL', '"xxxxx"' 
      dimension "url" 
     } 

    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 


dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'io.reactivex:rxandroid:1.2.1' 
    compile 'io.reactivex:rxjava:1.1.6' 
    compile 'com.google.code.gson:gson:2.5' 
    compile 'io.realm:realm-android-library:2.2.2' 
    compile 'com.android.databinding:library:1.1' 
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' 
    compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
    compile 'com.squareup.retrofit2:retrofit:2.2.0' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
} 

答えて

1

私は同じ問題を抱えていたし、検索の多くの後、私は次のドキュメントのエントリが見つかりました: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

を要約すると、デフォルトでは、ライブラリモジュールでは、デフォルトの設定(フレーバのリリース/無し)だけが他のモジュールから見えます。あなたのメインモジュールから別の味にアクセスするには、あなたのライブラリーのbuild.gradleファイルのアンドロイドセクションに

publishNonDefault true 

を追加します。

メインモジュールにも異なるフレーバーを追加する必要があります。空の宣言にすることもできます。あなたのbuild.gradleの依存関係のセクションでは、次のようにモジュールを参照してください:

flavor1Compile project(path: ':yourlib', configuration: 'flavor1Release') 
flavor2Compile project(path: ':yourlib', configuration: 'flavor2Release') 
+0

ありがとうございます。 –

関連する問題