2017-08-14 1 views
0

私のASを最新のbeta2にアップグレードしようとしていて、applibモジュールに次の問題があります。Android 3.0 Beta 2へのアップグレード後にライブラリプロジェクトを解決できませんでした

私は2つの味

flavorDimensions "default" 
     productFlavors { 
      stage { 
      applicationId "com.mycompany.hello.stage" 
      resValue "string", "app_name", "Stage" 
      } 
      production { 
      applicationId "com.mycompany.hello.stage.production" 
      resValue "string", "app_name", "Live" 
      } 
     } 

を持っていると私はアプリは、次のように私libの特定の種類だけに話をするように指定し、私のappbuild.gradle

:私が唯一持っている

stageCompile project(path: ':lib', configuration: 'debug') 
productionCompile project(path: ':lib', configuration: 'release') 

libbuild.gradleファイルビルドタイプとフレーバーブロックなし

publishNonDefault true 
buildTypes { 
    debug { 
     versionNameSuffix ".debug" 
    } 
    release { 
     versionNameSuffix ".release" 
     minifyEnabled true 
    } 
} 

上記のappは、ビルドバリアントに依存し、libの特定のビルドバリアントと話します。私はAS 3.0にアップグレードするまで完全に動作します。

ここにgradleエラーメッセージがあります...これは私の2つのgradleファイルのflavorDimensionsの不一致によって引き起こされた場合私は確信していません。

Error:Could not determine the dependencies of task ':app:compileStageDebugAidl'. 
> Could not resolve all task dependencies for configuration ':app:stageDebugCompileClasspath'. 
> Could not resolve project :lib. 
Required by project :app 
> Project :app declares a dependency from configuration 'stageCompile' to configuration 'debug' which is not declared in the descriptor for project :lib. 

答えて

0

だから私は数時間を費やして、私のAndroid Studioを提供移行ガイドを一致させるために私のプロジェクトを移行しました。

私は私が望むものを達成するために以下の変更を行って終わる:

appバリアントproductionReleaselibrelease

appバリアントstageDebuglibdebug

アプリのbuild.gradleファイル

を呼び出す必要があります呼び出す必要があります
flavorDimensions "default" //add this line for flavorDimensions 
productFlavors { 
    stage { 
     ... 
    } 

    production { 
     ... 
    } 
} 
implementation project(':lib') 

私は同じ

publishNonDefault true 
buildTypes { 
    debug { 
     versionNameSuffix ".debug" 
    } 
    release { 
     versionNameSuffix ".release" 
     minifyEnabled true 
    } 
} 

まま私のlibにbuild.gradleでは、私がここに持っている唯一の難点は、私がproductionRelease(アプリ)+リリース(LIB)とstageDebug(アプリを達成するためにしたくない特定の変種を無視することです)+ debug(lib)の組み合わせです。

//このようにして、私はASパネルにproductionReleasestageDebugの亜種しか残しません。アプリのbuild.gradleで

variantFilter { variant -> 
    def names = variant.flavors*.name 
    if (names.contains("stage") && variant.buildType.name == "release") { 
     variant.ignore = true 
    } 
    if (names.contains("production") && variant.buildType.name == "debug") { 
     variant.ignore = true 
    } 
} 

私は私のappの変異体を構築切り替え、それはまた、私のlibに対応するビルドの種類を切り替えます。

これがベストプラクティスであるかどうかはまだ分かりません。あなたはそれを行うためのより良い方法を見つける場合。私に知らせてください。

関連する問題