programing

Android용 Gradle을 사용하여 외장형 aar 패키지를 수동으로 포함하는 방법

yellowcard 2023. 6. 4. 10:25
반응형

Android용 Gradle을 사용하여 외장형 aar 패키지를 수동으로 포함하는 방법

저는 새로운 안드로이드 빌드 시스템을 실험해 보았는데 작은 문제에 부딪혔습니다.저는 'actionbarsherlock.aar'라고 부르는 액션바셜록의 아어 패키지를 직접 컴파일했습니다.제가 하려고 하는 것은 실제로 제 마지막 APK를 만들기 위해 이 귀를 사용하는 것입니다.컴파일 프로젝트(':actionbarsherlock')를 사용하여 전체 ActionBarSherlock 라이브러리를 메인 프로젝트에 안드로이드-라이브러리 모듈로 포함시키면 문제 없이 성공적으로 빌드할 수 있습니다.

하지만 제 문제는 제가 단지 JAR을 할 때만 수동으로 그 의존성을 Ar 파일 패키지로 제공하고 싶다는 것입니다. 그러면 제 프로젝트에 제대로 포함시키는 방법을 찾을 수 없을 것 같습니다.컴파일 구성을 사용하려고 했지만 작동하지 않는 것 같습니다.컴파일하는 동안 계속해서 ar 패키지의 classes.jar가 클래스 경로에 포함되지 않는다는 기호를 찾을 수 없습니다.

수동으로 aar 패키지를 파일로 포함하는 구문을 아는 사람이 있습니까?

빌드.그래들

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의 제안된 솔루션인 것 같습니다.

EDIT: 또한 @VipulShah가 제안한 구문을 사용하여 더 간단합니다.

작동하려면 아래 단계를 따르십시오(Android Studio 2.2까지 테스트했습니다).

를 들어, 예를들어, 은신당이 가정해 .aar줄을 지어 들어가다libs 폴더):cards.aar).

app ㅠㅠㅠㅠㅠbuild.gradle다음을 지정하고 프로젝트를 Gradle 파일과 동기화를 클릭합니다.

레벨 열기build.gradle 가추를 합니다.flatDir {dirs("libs")}아래와 같이:

allprojects {
    repositories {
        jcenter()

        flatDir {
            dirs("libs")
        }
    }
}

레벨 앱 기열벨레기build.gradle을 을 추가합니다..aar파일 이름:

dependencies {
    implementation(name:'cards', ext:'aar')
}

만약 당신이 Kotlin을 사용하고 있고 그것을 가지고 있다면.build.gradle.kts파일 이름:

dependencies {
    implementation(name = "cards", ext = "aar")
}

모든 것이 잘되면, 당신은 도서관 항목이 만들어진 것을 볼 것입니다.build-> 폭발음-아.

를 에는 를 하십시오..aar의 파일에 포함시켜야 합니다.build.gradle 무너.

  1. 프로젝트를 마우스 오른쪽 단추로 클릭하고 "모듈 설정 열기"를 선택합니다.

모듈 설정 열기

  1. 창의 왼쪽 상단 모서리에 있는 "+" 버튼을 클릭하여 새 모듈을 추가합니다.

새 모듈 추가

  1. "Import .JAR or .AAR Package"를 선택하고 "Next" 버튼을 클릭합니다.

AAR 가져오기

  1. 파일 이름 필드 옆에 있는 줄임표 단추 "..."를 사용하여 AAR 파일을 찾습니다.

AAR 파일 찾기

  1. 앱의 모듈을 선택한 상태로 유지하고 종속성 창을 클릭하여 새 모듈을 종속성으로 추가합니다.

종속성 창

  1. 종속성 화면의 "+" 버튼을 사용하고 "모듈 종속성"을 선택합니다.

모듈 종속성 추가

  1. 모듈을 선택하고 "확인"을 클릭합니다.

모듈 선택

편집: 스크린샷 6의 모듈 종속성은 Android Studio 4.1에서 제거되었습니다.또는 모듈 종속성을 build.gradle에 추가합니다.

dependencies {
    implementation project(':your_module')
}

편집: Android Studio 4.2에서는 사용자 인터페이스와 작업 흐름이 많이 변경되었습니다.종속성을 추가하는 프로세스는 현재 공식 문서에서 매우 잘 설명되어 있습니다.프로젝트 구조 대화 상자를 사용하여 종속성 추가

리포지토리에서 aar 파일을 참조할 수 있습니다.메이븐도 선택사항이지만 더 간단한 해결책이 있습니다. libs 디렉토리에 aar 파일을 넣고 디렉토리 저장소를 추가하는 것입니다.

    repositories {
      mavenCentral()
      flatDir {
        dirs 'libs'
      }
    }

그런 다음 종속성 섹션에서 라이브러리를 참조합니다.

  dependencies {
        implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

자세한 내용은 민안 블로그 게시물에서 확인하실 수 있습니다.

이전(기본값)

implementation fileTree(include: ['*.jar'], dir: 'libs')

그냥추를 추가합니다.'*.aar'includevmdk

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')

다음 접근 방식은 Android Studio 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


코드 변경 없이 한 번만 설정하고 이후 lib를 추가할 수 있습니다.


앱 수준 build.gradle에서 아래 줄을 추가

  implementation fileTree(dir: "libs", include: ["*.aar"])

프로젝트 구조를 Android에서 Project로 변경합니다.

아래와 같이 app->libs로 이동합니다.

여기에 이미지 설명 입력

그런 다음 libs 폴더에 "aar"를 붙여넣습니다.

Android 스튜디오 왼쪽 상단에 있는 File을 클릭하고 아래와 같이 "Sync Project with Gradle Files"를 클릭합니다.

여기에 이미지 설명 입력

바로 그겁니다.

Android Studio 3.4 및 Gradle 5를 사용하면 다음과 같이 간단히 수행할 수 있습니다.

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}

현재 로컬 .aar 파일을 참조하는 것은 지원되지 않습니다(Xavier Ducrochet에서 확인됨).

대신 로컬 Maven 저장소를 설정하고(소리보다 훨씬 단순함) 거기서 .aar를 참조할 수 있습니다.

여기서 작동하는 방법을 자세히 설명하는 블로그 게시물을 작성했습니다.

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds

방금 성공했습니다!

  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의 확인란을 통해 오프라인 작업을 활성화했는지 확인합니다.

또는 --

네트워크에 액세스하기 위해 프록시 설정을 구성합니다.

프록시 설정을 구성하려면 프로젝트의 gradle.properties 파일을 수정하고 아래와 같이 http와 https를 별도로 구성해야 합니다.

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>

이게 먹히길 바랍니다.

두 가지 방법이 있습니다.

첫번째 방법

  1. Android Studio로 합니다.Create New ModuleFile -> New -> New Module

여기에 이미지 설명 입력

  1. 다음을 선택합니다.Import .JAR/.AAR Package항목을 선택하고 클릭합니다.Next단추를 채우다

  2. 에 추가build.gradle의 소유파에 app모듈.

    dependencies {
        ...
        implementation project(path: ':your aar lib name')
    }

이상입니다.

두번째 방법

  1. 에 폴더 libs:aars.

  2. aars 폴더에 aarlib을 넣습니다.

  3. 코드 스니펫 추가

repositories {
    flatDir {
        dirs 'libs/aars'
    }
}

의 신의것에.build.gradle파일이 앱 모듈에 속합니다.

  1. 에 추가build.gradle의 소유파에 app모듈.
dependencies {
    ...
    implementation (name:'your aar lib name', ext:'aar')
}

이상입니다.

중국어를 읽을 수 있으면 블로그에서 확인할 수 있습니다 ㅠㅠAAR文件以及如何在Android开发中使用

여러 개를 추가할 수 있습니다.aar코드 행이 몇 개 없는 종속성.

로컬 추가flatDir리포지토리:

repositories {
    flatDir {
        dirs 'libs'
    }
} 

가 간 격 추를 추가합니다.aarlibs에서 디리토렉으로 이동합니다.compile종속성 구성:

fileTree(dir: 'libs', include: '**/*.aar')
        .each { File file ->
    dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}

Gradle Kotlin DSL을 사용하는 경우 모듈 디렉토리에 파일을 추가해야 합니다.

예: libs/someAndroidArchive.aar

종속성 블록의 모듈 build.gradle.kts에 다음과 같이 기록하면 됩니다.

implementation(files("libs/someAndroidArchive.aar"))

안타깝게도 여기 있는 솔루션 중 어떤 것도 저에게 효과가 없었습니다(해결되지 않은 종속성이 있습니다).최종적으로 작동하고 IMHO를 사용하는 가장 쉬운 방법은 다음과 같습니다. Android Studio에서 프로젝트 이름을 강조 표시한 후 파일 -> 새 모듈 -> JAR 또는 AAR 패키지 가져오기.이 게시물의 솔루션에 대한 공로

Android Studio Arctic Fox를 사용하여 AAR 파일을 수동으로 가져오려면 다음과 같이 하십시오.

구조 을 엽니다. 프로젝트 구조 열기
여기에 이미지 설명 입력

구조 . 프로젝트 구조 열기
여기에 이미지 설명 입력

3. 합니다. 파일 경로 입력
여기에 이미지 설명 입력

알았어!

Android Studio 3.4 업데이트

  1. 파일로 이동 -> 프로젝트 구조

여기에 이미지 설명 입력

  1. 모듈을 선택하고 +를 클릭합니다.

여기에 이미지 설명 입력

  1. .aar 패키지 가져오기를 선택합니다.

여기에 이미지 설명 입력

  1. .aar 경로 찾기

여기에 이미지 설명 입력

  1. 완료 후 적용한 다음 패키지가 추가되었는지 확인합니다.

여기에 이미지 설명 입력

  1. 이제 앱 모듈에서 + 모듈 종속성을 클릭합니다.

여기에 이미지 설명 입력

  1. 라이브러리 패키지를 확인하고 확인합니다.

여기에 이미지 설명 입력

  1. 추가된 종속성 확인

여기에 이미지 설명 입력

  1. 그리고 이와 같은 프로젝트 구조는

여기에 이미지 설명 입력

저도 이런 문제가 있었어요. 문제 보고서: https://code.google.com/p/android/issues/detail?id=55863 은 .AAR 파일을 직접 참조하는 것이 지원되지 않는다고 제안하는 것 같습니다.

현재로서는 작업 막대 셔록 라이브러리를 프로젝트의 상위 디렉터리 아래에 있는 Gradle 라이브러리로 정의하고 그에 따라 참조하는 것이 대안일 수 있습니다.

구문은 여기에 정의되어 있습니다. http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

Android 문제 추적기에서 이 해결 방법을 찾았습니다. https://code.google.com/p/android/issues/detail?id=55863#c21

해결 방법은 .aar 파일을 하위 프로젝트로 분리하고 립을 아티팩트로 추가하는 것입니다.

configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))

추가 정보: 로컬 아티팩트에 대한 과도 의존성 처리( 및 병에 대한 의존성)

제 경우에는 라이브러리에 종속성이 있으며, 라이브러리를 생성할 때aar실패했다,를 그으로부터것, 나에의을실다했패서, 다서나해은책서든것모니입그래추가하로 하는 것입니다.arr 파일파.

그래서 나의 프로젝트 수준.build.gradle그렇게 보입니다:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
        //add it to be able to add depency to aar-files from libs folder in build.gradle(yoursAppModule)
        flatDir {
            dirs 'libs'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(modile app)그래서:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.sampleapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //your project depencies
    ...
    //add lib via aar-depency
    compile(name: 'aarLibFileNameHere', ext: 'aar')
    //add all its internal depencies, as arr don't have it
    ...
}

도서관 및관도서.build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //here goes library projects dependencies, which you must include
    //in yours build.gradle(modile app) too
    ...
}

애플리케이션에서 AAR 파일을 가져오는 표준 방법은 https://developer.android.com/studio/projects/android-library.html#AddDependency 에 나와 있습니다.

File > New > New Module을 클릭합니다..JAR/.AAR 패키지 가져오기를 클릭하고 다음을 클릭합니다.컴파일된 AAR 또는 JAR 파일의 위치를 입력한 후 Finish를 클릭합니다.

다음 단계는 위 링크를 참조하십시오.

저는 여기서 모든 해결책을 시도했지만 아무 것도 작동하지 않습니다. 그리고 나서 제가 실수했다는 것을 깨닫고, 저는 그것을 넣었습니다..aar와 같이 폴더에 폴더를 하여 아에보것잘폴더에못된, 루폴넣서생해다각한나, ▁a를 만들었습니다.libs그곳의 폴더(사진에서 1개), 하지만 앱 폴더 안에는 이미 있습니다.libs 번째 당등 2을해 합니 다야 신은▁second를 합니다.libs이것이 나와 같은 문제를 가진 사람들에게 도움이 되기를 바랍니다.

여기에 이미지 설명 입력

이것을 하는 방법이 하나 더 있습니다.

일반적으로 .aar 파일은 우리가 .jar를 사용하는 것처럼 직접 사용할 수 없기 때문에 libs 폴더에서 언급하고 gradle로 선언하기 위해 위에서 언급한 솔루션을 피할 수 있습니다.

1단계: .aar 파일의 압축을 풉니다(확장자 이름을 ".aar"에서 ".zip"로 변경하여 이 작업을 수행할 수 있습니다).

2단계: 압축을 푼 후 폴더에서 .jar 파일을 찾을있습니다.이 .jar 파일을 복사하여 모듈/libs 폴더에 붙여넣습니다.

3단계: 이제 프로젝트를 동기화하면 해당 .jar의 모든 클래스/메소드/속성에 액세스할 수 있습니다. gradle 파일에서 경로/이름/존재에 대해 언급할 필요가 없습니다. 이는 Gradle 빌드 시스템이 프로젝트를 빌드하는 동안 항상 libs 폴더에 있는 파일을 찾기 때문입니다.

답을 단순화하기 위해서입니다.

.aar 파일이 로컬로 존재하는 경우 다음을 포함합니다.
compile project(':project_directory')프로젝트의 build.grad 독립성.

원격에 .aar 파일이 있는 경우 다음을 포함합니다.compile 'com.*********.sdk:project_directory:0.0.1@aar'프로젝트의 build.grad 독립성.

저는 그냥 다음과 같은 대사를 덧붙입니다.

build.gradle

buildscript {
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

그리고.

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

그 클릭 후에file-> Sync Project with Gradle files

참고:-most important don't forget to import .aar file in libs folder

다음과 같은 작업을 수행할 수 있습니다.

  1. 로컬 라이브러리(확장자: .jar, .aar, ...)를 'libs' 폴더(또는 원하는 경우 다른 폴더)에 넣습니다.

  2. build.gradle(앱 수준)에서 종속성에 이 행을 추가합니다.

    구현 파일 트리(['*jar', '*aar', dir: 'libs' 포함)

저에게 이것은 Android Studio 환경이 어떻게 구성되어 있는지에 대한 문제였습니다.

업데이트할 때File->Project Structure->JDK Location최신 Java 버전(jdk1.8.0_192.jdk나를 위해), 모든 것이 작동하기 시작했습니다.

저의 경우 컴파일할 "프로젝트"를 추가할 때만 작업합니다.

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}


dependencies {
   compile project('com.x.x:x:1.0.0')
}

언급URL : https://stackoverflow.com/questions/16682847/how-to-manually-include-external-aar-package-using-gradle-for-android

반응형