2014-12-23 4 views
0

내 프로젝트의 Java 클래스는 일부 파일에 종속됩니다. Android Studio에서 모든 gradle 파일을 동기화하려고하면이 파일을 자동으로 가져와야합니다. 지금은 다른 빌드 파일 (compile.gradle)에서 외부 작업을 실행하는 build.gradle 파일에 작업이 있습니다. compile.gradle 파일은 필요한 폴더를 내 메인 프로젝트에 복사합니다.외부 gradle 파일을 사용하여 gradle 프로젝트에 소스 파일을 추가하는 방법

처음에는 수동으로 작업을 호출하고 전체 프로젝트를 동기화하면 모든 것이 잘 작동합니다. 하지만 수동으로 작업을 호출하지 않고 프로젝트를 동기화하려고하면 외부 compile.gradle 파일이 실행되지 않고 스택 추적에 "클래스를 찾을 수 없음"오류가 표시됩니다.

task thrift(type: GradleBuild) { 
    buildFile = '../other_project/compile.gradle' 
    startParameter.projectProperties = ['example.bin.java': example_bin_java, 
     'example.src': example_src] //Should not be important 
    tasks = ['clean', 'compile', ...] 
} 

이미 그들은 단지 "실행 단계"에서 실행 얻을 때문에 외부 작업을 통해 이러한 파일을 가져올 것을 선가 (라이프 사이클 : 초기화, 구성, 실행) 분명히이 단계는 경우 호출되지 않습니다 프로젝트를 동기화하거나 실행합니다. 그러나 나는이 문제에 대한 해결책을 생각해 낼 수 없다. 외부 Gradle 파일 (GradleBuild 작업없이)에서 작업을 실행하려면 다른 방법을 사용해야 할 것입니다.

Android Studio에서 모든 gradle 파일을 동기화하는 동안 외부 작업 실행을 강제/선언하려면 어떻게합니까?

외부 작업을 build.gradle 파일에 복사하면 문제가 해결 될 수 있습니다. 그러나 이것은 내가 찾고있는 것 (중복 코드 ...)이 아닙니다.

답변

0

등급 파일에 thrift.execute()를 추가했습니다. 작업 실행을 강제하는 가장 좋은 방법은 아니지만 이 원하는 동작으로 바뀌는 결과를 초래할 수 있습니다.

0

여러 가지 방법으로이 작업을 수행 할 수 있습니다. 라이브러리로 빌드 할 외부 코드에 대한 별도의 "모듈"을 만들면 해당 모듈에 대한 컴파일 종속성을 얻을 수 있습니다 (프로젝트는 gradle에서 프로젝트 - gradle과 IntelliJ 용어 사이의 멋진 불일치). 당신이 동기화를 수행 (또는 gradlew assemble) 때 빌드가 제대로 의존성을 선택해야 이제

androidDependencies.dependsOn thrift 

: 당신이 지금 가지고있는 작업 기반 구조를 유지, 당신은 당신의 새 작업에 의존하는 기존의 안드로이드 특정 작업을 수정할 수 있습니다 .

+0

답변 해 주셔서 감사합니다. 이 특정 하위 프로젝트는 Java 플러그인 만 사용하고 안드로이드는 사용하지 않는다는 사실을 잊어 버렸습니다. 그렇다면 "androidDependencies"키워드를 정확히 어디에 추가합니까? 내 gradble 빌드는이 것을 알지 못합니다. – Chrylo

+0

Android 프로젝트의 gradle 파일에 있어야합니다. Java 플러그인에 의해 정의 된 작업이므로 대신 '어셈블'로 도망 갈 수도 있습니다. –

+0

이봐, 나는 지금도 조립을 시도했다. 종속성을 올바르게 설정하지만 실행 순서가 여전히 잘못되었습니다. 특정 (유형 : GradleBuild) 작업을 실행하는 대신 전체 프로젝트를 자동으로 동기화하는 경우 외부 그라디언트 파일이 실행되지 않는다고 생각합니다. 실행/디버그 구성에서 "시작하기 전에"종속성에 작업을 추가하면 작동합니다. 여전히 원하는 해결책이 아닙니다. – Chrylo

관련 문제