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


120

다른 프로젝트 (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를 명시 적으로 컴파일하지 않도록합니다.

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

답변:


330

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

apply plugin: 'com.android.application'

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

apply plugin: 'com.android.library'

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

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

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


감사합니다. 이러한 플러그인에 대해 저에게 추천 할 수있는 읽기 / 문서가 있습니까?
Vic Zhou

13
나는 그것을 시도하고 새로운 오류가 발생했습니다 Error:Library projects cannot set applicationId. applicationId is set to 'com.bulletnoid.android.widget.StaggeredGridViewDemo' in default config..StaggeredGridViewDemo는 모듈로 가져 오려고 시도한 라이브러리의 패키지입니다.
Azurespot

13
방금 defaultConfig {}에서 애플리케이션 ID 줄을 제거했는데 제대로 작동했습니다.
ericharlow

또한 당신은 '도구를 추가해야합니다 교체 = 다음에 "안드로이드 아이콘을"<응용 프로그램 ...> ... 주요 아이콘 오버라이드 (override)
Ric17101

24

모듈 gradle 파일에서 -

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

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

청소 및 구축


모든 것은 모듈 gradle 파일에서하고 있습니다
Vlad

1

이 줄을 라이브러리 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'
  ,...
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.