2017-04-17 7 views
1

gradle을 사용하여 Unity Android 빌드에 패브릭 종속성을 구성하고 싶습니다. 이제는 프로젝트를 내보내고 Android Studio를 사용하여 오류를 제거하고 Unity 5.6에서 직접 빌드 할 수 있도록 사용자 정의 작업 "mainTemplate.gradle"을 준비합니다. 다음은 유니티로 구성된 종속성이 제안은 다음과 같습니다 Fabric으로 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을 설정을 가진 라이브러리로 처리됩니다. 여기에 (인해 두 개의 "라이브러리"의 같은 네임 스페이스에 사용되는 파일에) 내가지고있어 오류입니다

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"파일이 포함되어 있습니다. 그래서 나는 단지 "fabric"을 프로젝트로 유지하고 다른 종속성을 단순한 * .jar 파일로 처리하도록 변경했습니다.

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

당신은 또한 사용되지 않는 방법을 사용할 수 있습니다 : '안드로이드 { packageBuildConfig = FALSE ' – JohnTube

0

당신은 (패브릭 수정없이) 하나의 파일에 변화 BuildConfig 자바 클래스의 생성을 비활성화 할 수 있습니다

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

나는 하나의 프로젝트 참조를 유지한다. 모든 문제의 프로젝트를위한 플러그인/안드로이드/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 
    } 
} 

}