2012-03-10 4 views
3

모두. 안드로이드 라이브러리 프로젝트를 만들었고 프로젝트를 주 프로젝트에서 참조 할 때 완벽하게 작동합니다. 그러나 라이브러리 프로젝트를 분리하면 R.java와 리소스가 포함되지 않습니다. 자원과 R.java가있는 라이브러리 프로젝트를 빌드 할 수있는 방법이 있습니까?라이브러리 프로젝트 빌드

+0

라이브러리 프로젝트를 어떻게 구별합니까? – yorkw

+0

개발 용 NetBeans IDE를 사용하고 있습니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 빌드를 선택합니다. 빌드 결과는 기본 프로젝트 인 r 파일이없는 라이브러리 프로젝트의 bin 디렉토리에있는 jar 파일로 빌드하는 것과 같습니다. –

답변

5

지금은 불가능합니다.

이제 우리는 다음 단계를 통해 바이너리 전용 라이브러리 프로젝트를 만들 수 있습니다

  1. 는 안드로이드 라이브러리 프로젝트를 만들고, 소스 코드 등으로 - 를이 마스터 프로젝트,있는 당신이 만듭니다 유통
  2. 에 대한 라이브러리 프로젝트의 버전 자바 소스 (예를 들어, 개미 컴파일)를 컴파일하고 마스터 라이브러리 프로젝트와 같은 자원,
  3. 가 배포 안드로이드 라이브러리 프로젝트 만들기 JAR 파일로 그것을 돌, 하지만 소스 코드
  4. 배포판에 JAR 파일을 두십시오. Android 라이브러리 프로젝트의 libs/ 디렉토리 결과로 배포되는 Android 라이브러리 프로젝트에는 소스 코드가 없어도 주 프로젝트가 필요한 모든 것이 있습니다.

    1. 우리는 여전히 자원을 제공해야한다 :

    이 솔루션의 몇 가지 제한이있다.

  5. 은 잘못 될 수 있으므로 R. 값을 사용하지 않으려면 코드를 다시 작성해야합니다. getResources(). getIdentifier() 및/또는 reflection을 사용하여 모든 리소스 ID를 조회해야합니다.
5

내가 수동으로 독립적으로 내 안드로이드 도서관 프로젝트를 구축하지 이클립스를 사용하지만 공식 dev에 가이드 here에 명시된 개발 고려 사항은 귀하의 질문에 대답해야한다고 생각은 :

각 라이브러리 프로젝트는 자체 R을 생성 클래스

종속 응용 프로그램 프로젝트를 빌드하면 라이브러리 프로젝트가 컴파일되고 응용 프로그램 프로젝트와 병합됩니다. 각 라이브러리에는 라이브러리의 패키지 이름에 따라 이름이 지정된 고유 한 R 클래스가 있습니다. 메인 프로젝트와 라이브러리 프로젝트에서 생성 된 R 클래스는 메인 프로젝트의 패키지와 라이브러리의 패키지를 포함하여 필요한 모든 패키지에 생성됩니다. 당신이 자신의 .apk에 직접 컴파일 할 수 없습니다

그러나, 라이브러리 프로젝트가의 표준 안드로이드 응용 프로그램 프로젝트 다릅니다 공식 dev에 giude Library Projects에서 인용 또 다른 메모와 함께

업데이트 Android 기기에서 실행하십시오. 마찬가지로, 실제 라이브러리와 마찬가지로 라이브러리 프로젝트를 독립형 JAR 파일로 내보낼 수 없습니다. 대신 종속 응용 프로그램에서 라이브러리를 참조하고 해당 응용 프로그램을 빌드하여 간접적으로 라이브러리를 컴파일해야합니다.

+0

감사합니다. 그러나 R 파일은 라이브러리의 항아리가 아니라 주 프로젝트에서 만듭니다. 자원은이 항아리에 포장되어 있지 않습니다. –

+0

@RomanBlack, 호스트 프로젝트와 별도로 라이브러리 jar 파일은 실제로 아무런 의미가 없습니다. 안드로이드 라이브러리 프로젝트는 런타임에 jar 파일로 참조되지 않고 호스트 프로젝트를 빌드 할 때 소스 (java, res, AndroidManifest.xml 등)가 컴파일되고 호스트 프로젝트로 병합됩니다. apk 파일 크기를 줄이고 메모리 공간을 절약 할 수 있습니다.) Eclipse와 같은 IDE에서 R.java를 컴파일하면 호스트 프로젝트를 빌드 할 때 클래스가 자동으로 생성됩니다. – yorkw

+0

@RomanBlack, Android 개발자 팀은 현재 Android 라이브러리 프로젝트 디자인을 개편하고 있으며 다음 릴리스에서 jar 파일로 라이브러리 프로젝트를 내보내는 지원을 [here] (http://android-developers.blogspot.co.nz/2011/)에서 확인합니다. 10/changes-to-library-projects-in-android.html)을 참조하십시오. – yorkw

관련 문제