#android #android-source #android-library
#Android #android-исходный код #android-библиотека
Вопрос:
Я создал библиотеку aar и добавил путь: framework/base / packages/MyLib/MyLib.aar в AOSP.
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyLib
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_PREBUILT_MODULE_FILE := $(LOCAL_PATH)/MyLib.aar
include $(BUILD_PREBUILT)
Когда я добавляю эту библиотеку в другое приложение, например, в настройки, и она работает нормально. Но я хочу использовать в framework / base / service / в каком-либо файле Java. Я не могу импортировать файл класса этой библиотеки.
Я добавил его в другие приложения Andropid.mk как LOCAL_STATIC_ANDROID_LIBRARIES := MyLib
Ответ №1:
Это мой метод преобразования предварительно aar
созданной библиотеки Android в статическую. У меня все работало нормально. Вы можете использовать этот метод для своей ситуации.
include $(BUILD_PACKAGE)
######################## TuanPM13 #####################################
# add config to convert prebuilt aar to static android lib
#######################################################################
define aar-to-android-lib
$(foreach t,$(1),
$(eval include $(CLEAR_VARS))
$(eval tw := $(subst :, ,$(strip $(t))))
$(eval LOCAL_MODULE := $(word 1,$(tw)))
$(eval LOCAL_MODULE_TAGS := optional)
$(eval LOCAL_SRC_FILES := $(word 2,$(tw)))
$(eval LOCAL_RESOURCE_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_MODULE),,COMMON)/aar/res)
$(eval LOCAL_USE_AAPT2 := true)
$(eval LOCAL_RENDERSCRIPT_TARGET_API := $(2))
$(eval LOCAL_MODULE_CLASS := JAVA_LIBRARIES)
$(eval LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX))
$(eval LOCAL_BUILT_MODULE_STEM := javalib.jar)
$(eval LOCAL_UNINSTALLABLE_MODULE := true)
$(eval include $(BUILD_PREBUILT))
)
endef
prebuilt_aar_libraries := exoplayer-core:libs/exoplayer-core-2.10.8.aar
exoplayer-ui:libs/exoplayer-ui-2.10.8.aar
exoplayer-extension-mediasession:libs/extension-mediasession-2.10.8.aar
$(call aar-to-android-lib, $(prebuilt_aar_libraries), 28) # API level 28
prebuilt_aar_libraries :=
Отметил, что в моем случае все *.arr были помещены в libs
каталог.
Затем в Android.mk что касается других приложений, я ссылаюсь на них, как показано ниже
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
...
LOCAL_STATIC_ANDROID_LIBRARIES =
exoplayer-extension-mediasession
exoplayer-ui
exoplayer-core
include $(BUILD_PACKAGE)
Комментарии:
1. Зачем его конвертировать, потому что я могу использовать его в каком-либо приложении, например, в настройках, SystemUI и т. Д.
2. @D.J Я еще не знаю точно, что не так в вашем методе, но мой метод — это просто еще один способ попробовать.