2017-04-17 12 views
1

gradleを使用してUnity Androidビルド用にFabric依存関係を構成したいとします。私は今、プロジェクトをエクスポートし、Android Studioを使用してエラーを取り除き、Unity 5.6から直接ビルドできるようにカスタム作業 "mainTemplate.gradle"を準備します。 はここユニティとして構成された依存関係が示唆されている: ファブリックでUnity 5.6カスタムグラデル構成

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    // other dependencies 
    compile project(':answers') 
    compile project(':beta') 
    compile project(':crashlytics') 
    compile project(':crashlytics-wrapper') 
    compile project(':fabric') 
    compile project(':fabric-init') 
} 

ファブリックの各フォルダ

は、独自のGradleの設定を持っているライブラリとして扱われます。ここ は、私が(原因2「ライブラリ」の同じ名前空間で使用されるファイルに)取得していますエラーです:

Uncaught translation error: java.lang.IllegalArgumentException: already added: Lio/fabric/unity/crashlytics/android/BuildConfig; 
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lio/fabric/unity/android/BuildConfig; 

私は次の行を追加しようとしたが、それはうまくいきませんでした:

android { 
    dexOptions { 
     preDexLibraries = false 
    } 

また、私は成功せずに試してみました:ここ

task androidReleaseJar(type: Jar, dependsOn: assembleRelease) { 
      from "$buildDir/intermediates/classes/release/" 
      exclude '**/BuildConfig.class' 
     } 

答えて

2

が、私はこの問題を解決する方法である:デフォルトでは 各ファブリックフォルダをプロジェクトとして扱われているが唯一の「ファブリックは」などに処理する必要がありますeには、必要なメタデータ値を持つ "res"フォルダと "AndroidManifest.xml"ファイルが含まれています。だから私は単に "ファブリック"をプロジェクトとして保存し、他の依存関係を単純な* .jarファイルとして扱うように変更しました。

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile fileTree(dir: 'fabric-init/libs', include: ['*.jar']) 
    compile fileTree(dir: 'crashlytics-wrapper/libs', include: ['*.jar']) 
    compile fileTree(dir: 'crashlytics/libs', include: ['*.jar']) 
    compile fileTree(dir: 'beta/libs', include: ['*.jar']) 
    compile fileTree(dir: 'answers/libs', include: ['*.jar']) 
    compile project(':fabric') 
} 

Settings.gradleに私は1つのプロジェクトの参照を保持:

//include 'answers' 
//include 'beta' 
//include 'crashlytics' 
//include 'crashlytics-wrapper' 
include 'fabric' 
//include 'fabric-init' 
+0

あなたはまた、非推奨メソッドを使用することができます。 'アンドロイド{ packageBuildConfig = false'を – JohnTube

0

あなたは(ファブリックの変更なし)のみ1ファイルの変更によってBuildConfigのJavaクラスの生成を無効にすることができます。すべての問題のプロジェクトのためのプラグイン/アンドロイド/ mainTemplate.gradleの終わりにこれを配置します。

['crashlytics', 'crashlytics-wrapper', 'fabric', 'fabric-init'].each { name -> 
project(":$name").tasks.whenTaskAdded { task -> 
    if (task.name == 'generateDebugBuildConfig' || task.name == 'generateReleaseBuildConfig') { 
     task.enabled = false 
    } 
} 

}

関連する問題