[java] Android 프로젝트를 라이브러리로 가져오고 APK로 컴파일하지 않는 방법 (Android Studio 1.0)

다른 프로젝트 (projAPK)에 대한 종속성으로 프로젝트 (projLib)를 가져 오려고했습니다.

projAPK gradle에는 다음이 있습니다.

dependencies {
    compile project(':libs:NewsAPI')
    compile project(':projLib')
}

하지만 gradle을 동기화하면 다음 오류가 발생합니다.

Error : Dependency Android_2015 : projLib : unspecified on project projAPK는 컴파일 종속성으로 지원되지 않는 APK 아카이브로 해석됩니다. 파일 : /Users/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned.apk

그래서 이것에 대한 두 가지 해결책이 있다고 생각합니다.

  1. 어떻게 든 gradle은 projLib이 apk로 컴파일되어서는 안되는 라이브러리라고 생각하게 만듭니다.
  2. 어떻게 든 gradle이 projLib를 명시 적으로 컴파일하지 않도록합니다.

문제는 그 방법을 찾을 수 없다는 것입니다. 당신이 도울 수 있다면 멋질 것입니다 🙂



답변

에서 projLib 의 build.gradle 파일,이 같은 문을 볼 수 있습니다 :

apply plugin: 'com.android.application'

Gradle에 애플리케이션으로 빌드하여 APK를 생성하도록 지시합니다. 다음과 같이 변경하면 :

apply plugin: 'com.android.library'

라이브러리로 빌드되어 AAR을 생성하고 작동합니다.

별도의 APK를 생성하기 위해 projLib 가 필요한 경우 필요한 공통 코드를 세 번째 라이브러리 모듈로 가져 와서 두 APK가 종속되도록하기 위해 몇 가지 리팩토링을 수행해야합니다.

라이브러리는를 설정할 수 applicationId없으므로 해당 효과에 대한 오류 메시지가 표시되면 라이브러리의 빌드 스크립트에서 제거하십시오.


답변

모듈 gradle 파일에서

교체 apply plugin: 'com.android.application'apply plugin: 'com.android.library'

그런 다음 제거 applicationId "xxx.xxx.xxxx"

청소 및 구축


답변

이 줄을 라이브러리 gradle파일에 추가 하고 다른 섹션을 제거하십시오.

apply plugin: 'com.android.library'

android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
}

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.squareup.picasso:picasso:2.4.0'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:gridlayout-v7:23.1.1'
  ,...
}


답변