태그 보관물: gradle

gradle

새로운 Gradle Android Build System을 사용하여 외부 AAR 패키지를 수동으로 포함하는 방법 classes.jar이 클래스 경로에 포함되지 않습니다. 누구나 aar 패키지를

나는 새로운 안드로이드 빌드 시스템을 실험하고 있었고 작은 문제에 부딪쳤다. ‘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에도 포함해야합니다.


답변

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 “모듈 설정 열기”를 선택하십시오 .

열린 모듈 설정

  1. 창의 왼쪽 상단 모서리에 있는 “+” 버튼을 클릭하여 새 모듈을 추가하십시오.

새 모듈 추가

  1. “.JAR 또는 .AAR 패키지 가져 오기”를 선택 하고 “다음” 버튼을 클릭하십시오 .

수입 AAR

  1. “파일 이름”필드 옆에있는 줄임표 단추 “…”를 사용하여 AAR 파일을 찾으십시오 .

AAR 파일 찾기

  1. 앱 모듈을 선택된 상태로 유지하고 종속성 창을 클릭 하여 새 모듈을 종속성 으로 추가하십시오.

종속성 창

  1. 종속성 화면 의 “+” 단추를 사용하고 모듈 종속성”을 선택하십시오 .

모듈 의존성 추가

  1. 모듈을 선택하고 “확인”을 클릭하십시오 .

모듈을 선택하십시오


답변

저장소에서 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')


답변

방금 성공했습니다!

  1. 복사 MYLIB – 0.1.aar의 에 파일을 libs와 / 폴더

  2. build.gradle 의 맨 아래에 다음 줄을 추가하십시오 (프로젝트가 아닌 앱이어야 함).

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:0.1@aar'
    }
  3. 여태까지는 그런대로 잘됐다. 가장 중요한 점은 다음과 같습니다.

오프라인 모드가 활성화되어 있지 않으면 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