2

맞춤 Android 시스템을 구축하려고하고 있으며이를 위해 별도의 라이브러리를 사용하여 일부 맞춤보기를 포함하고 싶습니다. 이를 위해 나는Android.mk에서 AAR 보관 파일을 만드는 방법

... 
LOCAL_MODULE:= com.zzz.ui 
include $(BUILD_JAVA_LIBRARY) 
... 

를 사용하여 자바 라이브러리를 생성하지만,이에 대한 단점은 내가 어떤 자원을 사용할 수 없다는 것입니다 및 UI 사용자 정의 및 레이아웃 준비의 모든 프로그래밍 방식으로 수행되어야한다.

이제 리소스를 추가하고 일부 드로어 블과 함께 레이아웃 파일에서 뷰를 직접 팽창시킬 수있는 * .aar를 생성하기 위해 Android 라이브러리를 변경하고 Android 라이브러리를 만들고 싶습니다. 이것을 어떻게 할 수 있습니까?

답변

0

내 조사가 끝난 후 이와 비슷한 것을 발견했습니다. 모듈에서

  1. 가 LOCAL_RESOURCE_DIR 정의를 제공합니다 http://thread.gmane.org/gmane.comp.handhelds.android.building/1020

    이 대답은 내가 단계를 사용하여 원하는 문자 그대로 모든 모듈에서 나는 AAR을 구축 할 수 있음을 알아낼 수 있었다이에서 그러나, 비록 단편입니다 ; 여기 의 문제는 툴체인이 자동으로 모든 의 xml 파일을 컴파일/병합하려고하므로 (유효한 android res 폴더 구조 및 이름 지정이있는) 내부에 xml 파일이 있으면 오류가 발생합니다. 해결 과정이 당신은 '값'폴더 예를 들어 주어진 고해상도 폴더에 넣을 수 있습니다 다음 예를

    <?xml version="1.0" encoding="utf-8"?> <resources> <integer name="dummy">09</integer> </resources>

    (적어도 하나 개의 유효한 자원, 그 안에 비어 있지 않은 dummy.xml를 넣어 이름 정의는 필수 임)

  2. 모듈/프로젝트에 AndroidManifest.xml을 제공하십시오. 이

    LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res include $(BUILD_STATIC_JAVA_LIBRARY)

  3. 가 이제 실행 자원 디렉토리에 정적 자바 목표는 메이크 도서관과 포인트를 포함하도록 빈 매니페스트는 Android.mk

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" package="com.android.car.vehiclenetwork" > </manifest>

  4. 변경을 할 것입니다 짓다. 이를 위해 약간 다른 접근 방법은 (이 AOSP 소스 트리의 맨 수준 에서 시작해야 함) 음을 사용하는 것보다 필요한 입니다 :

    make out/target/common/obj/JAVA_LIBRARIES/<module-name>_intermediates/javalib.aar

는 AAR은 다음 out/target/common/obj/JAVA_LIBRARIES/<module-name>_intermediates/javalib.aar에서 생산됩니다.

참고 :

  1. AAR을 생성하는 대신 잭의 javac의 필요합니다. 따라서 외부 프로젝트 컴파일을 위해 외부에서 사용하기에 적합한 javac 컴파일 된 클래스를 포함하는 out/target/common/obj/JAVA_LIBRARIES/_intermediates/aar 내에 classes.jar (pre-M 도구 체인이었던 것처럼)도 생성됩니다.

  2. 당신은 툴체인 파일 @ 빌드/코어/static_java_library.mk 수정할 수 있습니다 -

    built_aar := $(intermediates.COMMON)/javalib.aar

    이이 건물의 적절한 모든 모듈을 표시합니다 우측 라인 전에 $ (경고 $ (built_aar))를 추가하십시오 AOSP 코드 트리의 topdir makefile이 호출 될 때 자신의

0

이 AOSP 빌드 시스템에서 .aar 구축하기 위해, 당신은

당신은 패키지 이름 닷컴입니다 xyz.aar라는 이름의 lib 디렉토리를 생성한다고 가정, 라이브러리의 메이크 파일을 작성해야합니다. xyz.xyz 및 내부적 LIB는 패키지 이름 com.abc.abc으로 abc.aar 라는 이름의 다른 AAR을 사용하고 다음 메이크 파일은 아래와 같이 보일 수 있습니다 : -

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE_TAGS := optional 

LOCAL_MODULE := xyz 

LOCAL_STATIC_JAVA_LIBRARIES :=android-common \ 
    android-support-v4 \ 
    android-support-design \ 
    android-support-v7-appcompat \ 
    android-support-design-res \ 
    android-support-v7-cardview 

LOCAL_STATIC_JAVA_AAR_LIBRARIES:= abc 

LOCAL_SRC_FILES := $(call all-java-files-under, java) 

res_dirs := res \ 

LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) \ 
    prebuilts/sdk/current/support/v7/cardview/res \ 
    prebuilts/sdk/current/support/v7/appcompat/res \ 
    prebuilts/sdk/current/support/design/res \ 

LOCAL_AAPT_FLAGS := \ 
    --auto-add-overlay \ 
    --extra-packages android.support.v7.cardview \ 
    --extra-packages android.support.v7.appcompat \ 
    --extra-packages android.support.design \ 
    --extra-packages com.abc.abc 


LOCAL_JACK_ENABLED := disabled 
LOCAL_PROGUARD_ENABLED := disabled 

include $(BUILD_STATIC_JAVA_LIBRARY) 

include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := all_static_libs 

include $(BUILD_MULTI_PREBUILT) 

include $(call all-makefiles-under,$(LOCAL_PATH)) 
대신 를 사용하는 위 메이크 파일에서

사용 는 $ (BUILD_STATIC_JAVA_LIBRARY)을 포함

명령 아래 메이크 파일 사용을 컴파일하려면 변수 LOCAL_MODULE에 AAR lib 디렉토리 이름을 설정 $ (BUILD_STATIC_AAR_LIBRARY)를 포함

> XYZ 밖으로/대상/일반/OBJ/JAVA_LIBRARIES/xyz_intermediates/xyz.aar

귀하의 xyz.aar 위치에있을 것입니다 밖으로/대상/일반/OBJ/JAVA_LIBRARIES/xyz_intermediates/xyz.aar

관련 문제