2013-01-14 3 views
19

우리는 Android 개발을위한 인프라를 표준화하고 있으며 Android 라이브러리 프로젝트에 종속성 관리를 통합하려고합니다. 현재 트랙은 m2e-android 인 maven android 플러그인을 사용하고 있습니다. Android SDK Deployer으로 Artifactory 저장소에 Android 아티팩트를 업로드했습니다. 또한 우리는 프로젝트에 가져올 수있는 몇 개의 라이브러리가있는 내부 프레임 워크를 가지고 있으며, 대부분의 경우 잘 작동합니다.Android 프로젝트 종속성 관리

우리가 직면 한 문제는 리소스 파일을 포함하는 apklib 종속성을 설정하기 어렵다는 것입니다. Maven 플러그인은 classpath를 올바르게 설정할 수 있지만 apklib에 상위 Android 프로젝트에서 참조해야하는 리소스 파일이있는 경우 라이브러리 프로젝트를 체크 아웃하고 ADT를 통해 상위 프로젝트에 연결하지 않으면 Eclipse에서 해당 파일을 찾을 수 없습니다.

문제 https://github.com/rgladwell/m2e-android/issues/8, https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer-6270768APKLIB does not get installed in Maven Repo에 m2e-안드로이드 토론을 읽은 후, 나는 확신하지 받는다는은 ADT가 제대로 닫힌 소스 APK 라이브러리를 지원할 때까지 갈 수있는 방법입니다.

Android 프로젝트에서 이러한 종류의 의존성을 어떻게 처리하고 있는지 알고 싶습니다. Maven을 사용하는 것 외에 어떤 전략이 있습니까?

참고로 여기까지 시도한 내용이 있습니다.

  1. 종속성 관리가 없습니다. 필요한 모든 병은 lib 폴더에 저장되고 소스 제어 저장소로 푸시됩니다. 라이브러리 프로젝트는 하위 폴더로 설정되고 사용되는 각 프로젝트에 대한 소스 제어 저장소로 푸시됩니다. 이클립스 프로젝트 설정도 푸시됩니다. 표준 ADT Ant 스크립트로 빌드 된 프로젝트.
  2. libs 폴더 및 라이브러리 종속성을 git 하위 모듈로 종속시킵니다. 표준 ADT Ant 스크립트로 빌드 된 프로젝트.
  3. apklib 패키지가있는 라이브러리 프로젝트를 포함하여 maven을 사용한 종속성 관리. apklibs의 자원 파일 관련 문제.
+0

라이브러리 프로젝트 및 앱 프로젝트를 다중 모듈 프로젝트로 그룹화 할 수 있습니다. 샘플 [here] (https://github.com/jayway/maven-android-plugin-samples/tree/master/libraryprojects)를 참조하십시오. 다중 모듈 프로젝트를 Eclipse로 가져 오면 m2e-android가 라이브러리 프로젝트를 설정하고 앱 프로젝트에 자동으로 링크됩니다. – yorkw

+1

나는 그것을 시도 할 것이다. 당분간 우리는 개미 매크로를 사용하여 git에서 라이브러리 프로젝트를 복제하기로 결정했습니다. 그것은 의존성 transitivity 등을 해결하지 않지만 우리의 의존성 그래프가 안드로이드에서 꽤 얕기 때문에 그것은 대부분의 시간 동안 문제가되어서는 안됩니다. 우리는 그것을 maven/ivy/gradle과 조금 비슷하게 만들었습니다. 매크로는 "dependency"라고 불리우며 update-dependencies라는 태스크로 가져 오는 스크립트가 있습니다.프로젝트 스크립트에서 할 일은 을 추가하는 것입니다. – AngraX

+1

우리는 Maven을 [IntelliJ] (http://www.jetbrains.com/idea/download/)와 함께 사용 해왔다. 챔피언처럼 apklib 형식 종속성 (하위 모듈 또는 기타)을 처리합니다. 추가 보너스로, (무료) 커뮤니티 에디션은 우리의 필요를 충족시키기에 충분했습니다. – Jonba

답변

4

Android Studio와 Gradle의 출현으로 더 이상 프로젝트 의존성에 대한 문제가 발생하지 않습니다. Android 또는 기타.

Gradle은 jar 또는 apklib 형식의 Maven 종속성을 지원합니다. 인기있는 라이브러리는 apklib (aar) 형식으로 내보내지고 Maven을 통해 제공됩니다.

8

Facebook Android 개발자가이 동영상의 종속성 문제를 해결하는 방법에 대한 통찰력을 가질 수 있습니다 : How Facebook Built Facebook for Android.

그들은 벅을 사용합니다. Buck is a build system for Android은 코드와 리소스로 구성된 작고 재사용 가능한 모듈을 생성하도록 권장합니다. Buck is in github

이것은 아마도 당신을위한 최선의 해결책은 아니지만 다른 사람을위한 최상의 해결책 일 수 있습니다.

+0

머리를 주셔서 감사합니다. – AngraX

관련 문제