2014-03-02 2 views
0

이 질문은 제가 Gradle 전문가가 아니며 Eclipse + Maven 배경에서 왔음을 알 수 있습니다. 메이븐에서 안드로이드 스튜디오에서 다른 모듈의 .apk 클래스를 참조하십시오.

, 나는 android-maven-plugin 내 로컬 저장소에 (dexed 않은) 모두 .apk.jar을 밀어되면서, 다른 하나 (인스턴스에 대한 Robolectric 하위 프로젝트)에서 내 APK 프로젝트를 참조 할 수 있었다.

Android Studio + Gradle에서 어떻게 똑같이 할 수 있습니까?

  • 내 애플 리케이션 프로젝트에 apply plugin: 'java'을 추가하려했지만 자바 플러그인이 안드로이드 플러그인과 호환되지 않습니다.
  • 는 난 단지 build.gradle와 자바 플러그인 내 응용 프로그램의 하위 모듈을 구축했지만, R.java이 방법으로 생성되지 않습니다 :

    sourceSets { 
        main { 
         java.srcDirs = parent.android.sourceSets.main.java.srcDirs 
        } 
    } 
    

할 수있는 다른 방법이 있나요을 이?

EDIT4 : 게시 된 솔루션.

+0

가능한 중복 http://stackoverflow.com/questions/19307341/android-library-gradle-release-jar : (들), 새로운 의존성이 방법을 선언합니다) –

+0

예, 아래의 내용을 추가하십시오 : '''task androidJar (type : Jar) {android.sourceSets.main.allJava에서 }''' –

답변

0

제 편집의 해결책이 실제로 잘 작동합니다. 나는 그것을 여기 해결책으로보고한다. (방법이 있나요?), 클래스 파일이 하드 코드 경로, 내가 그 안에 $ buildType를 사용하는 방법을 찾을 수 없습니다 조심

def variantName = "debug" // init to debug 

apply plugin: 'android' 

android { 
    ... 
    applicationVariants.all { variant -> 
     variantName = variant.name 
     buildDebugJar.dependsOn variant.packageApplication 
    } 
} 

// Builds the jar containing compiled .java files only (no resources). 
task buildJar(type: Jar) { 
    description 'Generates the jar file along with the apk.' 
    from new File("$project.buildDir/classes/$variantName") 
} 

configurations { 
    jarOfApk 
    transitive = false 
} 

artifacts { 
    jarOfApk buildJar 
} 

그리고 참조 모듈을

compile project(path: ':app', configuration: 'jarOfApk') 
[안드로이드 도서관 Gradle을 해제 JAR] (의