나는 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 라이브러리를 선택하십시오.
라이브러리를 사용하려면 라이브러리를 종속성으로 추가하십시오.
파일> 프로젝트 구조> 모듈> 종속성
그런 다음 모듈 (안드로이드 라이브러리)을 모듈 종속성으로 추가하십시오.
프로젝트를 실행하십시오. 그것은 것이다 작동합니다.
답변
왜 독립형 jar 프로젝트의 예가 없는지 궁금합니다.
이클립스에서는 프로젝트 설정 대화 상자에서 “라이브러리입니다”상자를 선택하십시오.
Android 스튜디오 에서이 단계를 따라 jar 파일을 얻었습니다.
-
프로젝트를 작성하십시오.
-
왼쪽 프로젝트 메뉴에서 파일을 엽니 다. (app / build.gradle) : Gradle Scripts> build.gradle (모듈 : XXX)
-
한 줄 변경 :
apply plugin: 'com.android.application'
->'apply plugin: com.android.library'
-
파일에서 applicationId를 제거하십시오.
applicationId "com.mycompany.testproject"
-
프로젝트 빌드 : 빌드> 프로젝트 다시 빌드
-
그런 다음 aar 파일을 얻을 수 있습니다 : app> build> outputs> aar folder
-
변경
aar
파일 확장자로zip
-
압축을 풀면
classes.jar
폴더에서 볼 수 있습니다 . 이름을 바꾸고 사용하십시오!
어쨌든, 왜 안드로이드 스튜디오에서 구글이 왜 항아리 생성을 귀찮게하는지 모르겠습니다.
답변
여러 프로젝트를 빌드하기 위해 gradle 파일을 구성하는 Google의 Gradle 플러그인 권장 방법에는 몇 가지 단점이 있습니다. 하나의 라이브러리 프로젝트에 따라 여러 프로젝트가있는 경우이 게시물에서는 Google의 권장 구성, 단점을 간략하게 설명하고 다른 방법으로 gradle 파일을 구성하는 방법을 권장합니다 Android Studio에서 다중 프로젝트 설정 지원 :
다른 방법 :
Android Studio에서 여러 프로젝트를 관리하는 더 좋은 방법이 있습니다. 비결은 라이브러리에 대해 별도의 Android Studio 프로젝트를 만들고 앱이 의존하는 라이브러리 모듈이 라이브러리의 프로젝트 디렉토리에 있음을 gradle에 알리는 것입니다. 위에서 설명한 프로젝트 구조와 함께이 방법을 사용하려면 다음을 수행하십시오.
- StickyListHeaders 라이브러리를위한 Android Studio 프로젝트 작성
- App2 용 Android Studio 프로젝트 생성
- App1 용 Android Studio 프로젝트 생성
- 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 라이브러리”유형의 모듈을 작성해야합니다. 그런 다음이 라이브러리 모듈을 기본 모듈 (응용 프로그램 모듈)의 종속성 목록에 추가하십시오.
답변
라이브러리 프로젝트 를 만들고 재사용 할 수 있는 가장 간단한 방법은 다음 과 같습니다.
- 열린 프로젝트에서
file > new > new module
(UI 질문에 대답하십시오)
- 파일 settings.gradle 에 있는지 확인하거나 추가하십시오 .
include ':myLibrary'
-
build.gradle 파일에 있는지 확인하거나 추가하십시오 .
dependencies {
...
compile project(':myLibrary')
} -
이 라이브러리 모듈을 다른 프로젝트에서 재사용하려면 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)
