[android-studio] Android Studio에서 라이브러리 프로젝트를 작성하는 방법 및 라이브러리 프로젝트를 사용하는 애플리케이션 프로젝트

나는 gradle 빌드 시스템과 IntelliJ를 처음 사용합니다.

Android 라이브러리 프로젝트 (예 : com.myapp.lib1)와 응용 프로그램 프로젝트 (예 : com.myapp.app)를 작성하고 빌드 시스템이 com.myapp.lib1을 응용 프로그램 프로젝트에 포함 시키려면 어떻게해야합니까?

프로젝트 구조-> 모듈-> 내 앱 프로젝트로 이동하여 lib 프로젝트에 대한 종속성을 추가했습니다. IntelliJ는 이제 앱 프로젝트에서 사용될 때 lib 프로젝트의 클래스를 인식 할 수 있지만 앱 프로젝트를 실행할 때 다음과 같은 오류가 있습니다.

Gradle: error: package com.myapp.lib1 does not exist



답변

라이브러리를 만들려면

파일> 새 모듈

Android 라이브러리를 선택하십시오.

Lib

라이브러리를 사용하려면 라이브러리를 종속성으로 추가하십시오.

파일> 프로젝트 구조> 모듈> 종속성

뎁

그런 다음 모듈 (안드로이드 라이브러리)을 모듈 종속성으로 추가하십시오.

모듈 추가

프로젝트를 실행하십시오. 그것은 것이다 작동합니다.


답변

왜 독립형 jar 프로젝트의 예가 없는지 궁금합니다.

이클립스에서는 프로젝트 설정 대화 상자에서 “라이브러리입니다”상자를 선택하십시오.
Android 스튜디오 에서이 단계를 따라 jar 파일을 얻었습니다.

  1. 프로젝트를 작성하십시오.

  2. 왼쪽 프로젝트 메뉴에서 파일을 엽니 다. (app / build.gradle) : Gradle Scripts> build.gradle (모듈 : XXX)

  3. 한 줄 변경 : apply plugin: 'com.android.application'->'apply plugin: com.android.library'

  4. 파일에서 applicationId를 제거하십시오. applicationId "com.mycompany.testproject"

  5. 프로젝트 빌드 : 빌드> 프로젝트 다시 빌드

  6. 그런 다음 aar 파일을 얻을 수 있습니다 : app> build> outputs> aar folder

  7. 변경 aar파일 확장자로zip

  8. 압축을 풀면 classes.jar폴더에서 볼 수 있습니다 . 이름을 바꾸고 사용하십시오!

어쨌든, 왜 안드로이드 스튜디오에서 구글이 왜 항아리 생성을 귀찮게하는지 모르겠습니다.


답변

여러 프로젝트를 빌드하기 위해 gradle 파일을 구성하는 Google의 Gradle 플러그인 권장 방법에는 몇 가지 단점이 있습니다. 하나의 라이브러리 프로젝트에 따라 여러 프로젝트가있는 경우이 게시물에서는 Google의 권장 구성, 단점을 간략하게 설명하고 다른 방법으로 gradle 파일을 구성하는 방법을 권장합니다 Android Studio에서 다중 프로젝트 설정 지원 :

안드로이드 스튜디오를위한 대체 멀티 프로젝트 설정

다른 방법 :

Android Studio에서 여러 프로젝트를 관리하는 더 좋은 방법이 있습니다. 비결은 라이브러리에 대해 별도의 Android Studio 프로젝트를 만들고 앱이 의존하는 라이브러리 모듈이 라이브러리의 프로젝트 디렉토리에 있음을 gradle에 알리는 것입니다. 위에서 설명한 프로젝트 구조와 함께이 방법을 사용하려면 다음을 수행하십시오.

  1. StickyListHeaders 라이브러리를위한 Android Studio 프로젝트 작성
  2. App2 용 Android Studio 프로젝트 생성
  3. App1 용 Android Studio 프로젝트 생성
  4. StickyListHeaders 프로젝트에서 모듈을 빌드하도록 App1 및 App2를 구성하십시오.

네 번째 단계는 어려운 부분이므로 자세히 설명 할 유일한 단계입니다. settings.gradle 파일에 프로젝트 문을 추가하고 해당 프로젝트 문에 의해 반환 된 ProjectDescriptor 객체에서 projectDir 속성을 설정하여 프로젝트 디렉토리 외부에있는 모듈을 참조 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

하나의 코드를 넣어야합니다 settings.gradle:

include ':library1'
project(':library1').projectDir = new File('../StickyListHeader/library1')

이 작업을 올바르게 수행했다면 프로젝트가 참조하는 모듈이 프로젝트 탐색기 외부에 표시되어 있어도 프로젝트에서 참조하는 모듈이 프로젝트 탐색기에 표시됩니다.

여기에 이미지 설명을 입력하십시오

이를 통해 라이브러리 코드와 앱 코드를 동시에 작업 할 수 있습니다. 이 방법으로 외부에서 모듈을 참조 할 때 버전 제어 통합도 제대로 작동합니다. 앱 코드를 커밋하고 푸시하는 것처럼 수정 사항을 라이브러리 코드에 커밋하고 푸시 할 수 있습니다.

여러 프로젝트를 설정하는이 방법은 Google의 권장 구성을 괴롭히는 어려움을 피합니다. 우리는 프로젝트 디렉토리 외부에있는 모듈을 참조하기 때문에 의존하는 모든 앱에 대해 라이브러리 모듈을 추가로 복사 할 필요가 없으며 어떤 종류의 git submodule 넌센스없이 라이브러리 버전을 지정할 수 있습니다.

불행히도, 여러 프로젝트를 설정하는 다른 방법은 찾기가 매우 어렵습니다. 분명히 Google 가이드를 보면 알 수없는 것이 아니며이 시점에서 Android Studio의 UI를 사용하여 이러한 방식으로 프로젝트를 구성 할 수있는 방법이 없습니다.


답변

다중 프로젝트 설정에 대한링크를 확인하십시오 .

지적해야 할 사항은 앱과 라이브러리 모듈을 모두 참조하도록 settings.gradle을 업데이트했는지 확인하십시오.

settings.gradle : include ':app', ':libraries:lib1', ':libraries:lib2'

또한 앱의 build.gradle에 다음 사항이 있는지 확인하십시오.

dependencies {
     compile project(':libraries:lib1')
}

다음 구조를 가져야합니다.

 MyProject/
  | settings.gradle
  + app/
    | build.gradle
  + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle

앱의 build.gradle은 com.android.application플러그인을 사용해야 하지만 라이브러리의 build.gradle은com.android.library 플러그인을 .

이 설정으로 명령 행에서 빌드 할 수있는 경우 Android Studio IDE가 업데이트되어야합니다.


답변

Intellij IDEA (및 Android Studio)의 경우 각 라이브러리는 모듈입니다. Android Studio의 모듈을 Eclipse의 프로젝트와 동등한 것으로 생각하십시오. Android Studio의 프로젝트는 모듈 모음입니다. 모듈은 실행 가능한 응용 프로그램 또는 라이브러리 모듈 일 수 있습니다.

따라서 새 Android 라이브러리 프로젝트를 추가하려면 “Android 라이브러리”유형의 모듈을 작성해야합니다. 그런 다음이 라이브러리 모듈을 기본 모듈 (응용 프로그램 모듈)의 종속성 목록에 추가하십시오.


답변

라이브러리 프로젝트 를 만들고 재사용 있는 가장 간단한 방법은 다음 과 같습니다.

  1. 열린 프로젝트에서 file > new > new module(UI 질문에 대답하십시오)

여기에 이미지 설명을 입력하십시오

  1. 파일 settings.gradle 에 있는지 확인하거나 추가하십시오 .include ':myLibrary'
  2. build.gradle 파일에 있는지 확인하거나 추가하십시오 .

    dependencies {
    ...
    compile project(':myLibrary')
    }

  3. 이 라이브러리 모듈을 다른 프로젝트에서 재사용하려면 1 단계 대신 프로젝트의 폴더를 복사하고 2 단계와 3 단계를 수행하십시오.

새 스튜디오 응용 프로그램 프로젝트를 만들 수도 있습니다
. build.gradle 파일의 플러그인 할당을 com.android.library로 변경하여 기존 응용 프로그램 모듈을 라이브러리 모듈로 쉽게 변경할 수 있습니다.

apply plugin: 'com.android.application'

android {...}

apply plugin: 'com.android.library'

android {...}

여기에


답변

Blundell 과 같은 응용 프로그램에 새 모듈추가 할 수 있습니다 그의 대답에 말한다 다음 다른 응용 프로그램에서 참조.

모듈을 컴퓨터의 임의의 위치로 이동하려면 모듈 폴더를 이동하십시오 (모듈은 완전히 독립적 임). 그러면 모듈을 참조해야합니다.

이 모듈을 참조하려면 다음을 수행해야합니다.

  • 앱의 build.gradle 파일에서 다음을 추가하십시오.

    dependencies {
    ...
    compile project(':myandroidlib')
    }
    
  • settings.gradle 파일에서 다음을 추가하십시오.

     include ':app', ':myandroidlib'
     project(':myandroidlib').projectDir = new File(PATH_TO_YOUR_MODULE)