나는 새로운 안드로이드 빌드 시스템을 실험하고 있었고 작은 문제에 부딪쳤다. ‘actionbarsherlock.aar’라는 ActionBarSherlock 패키지를 컴파일했습니다. 내가하려는 것은 실제로이 aar를 사용하여 최종 APK를 작성하는 것입니다. 컴파일 프로젝트 ( ‘: actionbarsherlock’)를 사용하여 전체 ActionBarSherlock 라이브러리를 기본 라이브러리에 안드로이드 라이브러리 모듈로 포함하면 문제없이 성공적으로 빌드 할 수 있습니다.
그러나 내 문제는 JAR를 원한다면 수동으로 aar 파일 패키지로 해당 종속성을 제공하고 싶습니다. 프로젝트에 올바르게 포함시키는 방법을 알 수없는 것 같습니다. 컴파일 구성을 사용하려고 시도했지만 작동하지 않는 것 같습니다. 컴파일하는 동안 기호를 찾을 수 없으므로 aar 패키지의 classes.jar이 클래스 경로에 포함되지 않습니다.
누구나 aar 패키지를 파일로 수동으로 포함시키는 구문을 알고 있습니까?
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile files('libs/actionbarsherlock.aar')
}
android {
compileSdkVersion 15
buildToolsVersion "17.0"
}
편집 : 대답은 현재 지원되지 않는다는 것입니다. 추적하려는 경우 여기에 문제 가 있습니다.
편집 : 현재 이것은 여전히 직접 지원되지 않으므로 최상의 대안은 @ RanWakshlak의 제안 된 솔루션 인 것 같습니다.
편집 : @VipulShah가 제안한 구문을 사용하여 더 간단합니다.
답변
작동하려면 아래 단계를 따르십시오 (Android Studio 2.2까지 테스트했습니다)
libs 폴더에 aar 파일을 보관했다고 가정 해 봅시다. (파일 이름이cards.aar
)
그런 다음 앱에서 다음을 build.gradle
지정하고 Gradle 파일과 프로젝트 동기화를 클릭하십시오. Project 레벨 build.gradle을 열고 flatDir{dirs 'libs'}
아래와 같이 추가하십시오.
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
이제 앱 레벨 build.grdle 파일을 열고 파일을 추가 .aar
하십시오.
dependencies {
compile(name:'cards', ext:'aar')
}
모든 것이 잘되면 라이브러리 항목이 빌드-> exploded-aar에서 이루어집니다.
또한 의존성이있는 다른 프로젝트에서 .aar 파일을 가져 오는 경우 build.gradle에도 포함해야합니다.
답변
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 “모듈 설정 열기”를 선택하십시오 .
- 창의 왼쪽 상단 모서리에 있는 “+” 버튼을 클릭하여 새 모듈을 추가하십시오.
- “.JAR 또는 .AAR 패키지 가져 오기”를 선택 하고 “다음” 버튼을 클릭하십시오 .
- “파일 이름”필드 옆에있는 줄임표 단추 “…”를 사용하여 AAR 파일을 찾으십시오 .
- 앱 모듈을 선택된 상태로 유지하고 종속성 창을 클릭 하여 새 모듈을 종속성 으로 추가하십시오.
- 종속성 화면 의 “+” 단추를 사용하고 ” 모듈 종속성”을 선택하십시오 .
- 모듈을 선택하고 “확인”을 클릭하십시오 .
답변
저장소에서 aar 파일을 참조 할 수 있습니다. maven은 옵션이지만 더 간단한 해결책이 있습니다. aar 파일을 libs 디렉토리에 넣고 디렉토리 저장소를 추가하십시오.
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
그런 다음 종속성 섹션에서 라이브러리를 참조하십시오.
dependencies {
implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
자세한 내용은 Min’an 블로그 게시물 을 확인하십시오 .
답변
아래 접근법은 최신 Android 스튜디오 (> v0.8.x)에서 작동합니다.
-
저장
aar
응용 프로그램 모듈의 아래 파일libs
폴더 (예 :<project>/<app>/libs/myaar.aar
) -
아래를 추가하여 “app”모듈 폴더의 build.gradle (프로젝트 루트 build.gradle이 아님)에 추가하십시오. 컴파일 라인에서 이름은 myaar.aar가 아니라 myaar @ aar입니다.
dependencies { compile 'package.name.of.your.aar:myaar@aar' } repositories{ flatDir{ dirs 'libs' } }
-
딸깍 하는 소리
Tools -> Android -> Sync Project with Gradle Files
답변
이전 (기본값)
implementation fileTree(include: ['*.jar'], dir: 'libs')
단지 추가 '*.aar'
로 include
배열입니다.
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
Android Studio 3.x에서 잘 작동합니다.
도서관을 무시하고 싶다면? 이렇게하세요
implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')
답변
방금 성공했습니다!
-
복사 MYLIB – 0.1.aar의 에 파일을 libs와 / 폴더
-
build.gradle 의 맨 아래에 다음 줄을 추가하십시오 (프로젝트가 아닌 앱이어야 함).
repositories { flatDir { dirs 'libs' } } dependencies { compile 'com.example.lib:mylib:0.1@aar' }
-
여태까지는 그런대로 잘됐다. 가장 중요한 점은 다음과 같습니다.
오프라인 모드가 활성화되어 있지 않으면 Gradle은 종속성을 위해 네트워크에 액세스해야합니다.
Project Structures / Gradle 의 체크 박스를 통해 오프라인 작업 을 활성화했는지 확인하십시오
-또는-
프록시 설정 구성네트워크에 액세스 을 .
프록시 설정을 구성하려면 프로젝트를 수정해야합니다 다음과 같이 http 및 https를 별도로 구성 gradle.properties 파일 합니다.
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>
이것이 효과가 있기를 바랍니다.
답변
현재 로컬 .aar 파일을 참조하는 것은 지원되지 않습니다 (Xavier Ducrochet에 의해 확인 됨)
대신 할 수있는 것은 로컬 Maven 저장소 (소리보다 훨씬 간단 함)를 설정하고 .aar를 참조하는 것입니다.
여기에서 작동시키는 방법을 자세히 설명하는 블로그 게시물을 작성했습니다.
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds