添加外部AAR/JAR作为共享库
我正在使用以下android.mk文件
使用aar-release.aar
include $(CLEAR_VARS)
res_dir := res $(LOCAL_PATH)/res
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES += <...>
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dir))
LOCAL_USE_AAPT2 := true
LOCAL_JAVA_LIBRARIES := com.google.android.material_material \
LOCAL_STATIC_JAVA_LIBRARIES += aar-release
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.appcompat_appcompat \
androidx-constraintlayout_constraintlayout \
androidx.preference_preference \
androidx.fragment_fragment \
androidx.core_core \
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PACKAGE_NAME := <My app>
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_RENDERSCRIPT_TARGET_API := 21
LOCAL_PROGUARD_FLAG_FILES := proguard-project.txt
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += aar-release:libs/aar-release.aar
include $(BUILD_MULTI_PREBUILT)
它工作正常我的图书馆静态。我尝试更改local_static_java_libraries += aar-rease
local_java_libraries:= aar-rease
成功地编译但获得运行时错误,
E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: L<my class>$Runtime;
但我还替换了local_prebuilt_prebuilt_static_static_jastatic_java_libraries
代码> local_prebuilt_java_libraries 并获得错误,
[ 99% 830/831] aar-release dexpreopt
FAILED: out/target/product/<my product>/obj/JAVA LIBRARIES/aar-release_intermediates/dexpreopt.zip
dex2oatd E 06-08 06:05:08 20633 20633 oat writer.cc:568] No dex files in zip file '/system/framework/aar-release.aar': Entry not found
error: out/target/product/<my product>/obj/JAVA_LIBRARIES/aar-release_intermediates/dexpreopt.sh:25 exited with status 1
我该如何添加到AOSP中的预装应用程序中,作为共享库我的aar-release.aar是一个预构建的库?
顺便说一句,我在哪里可以找到android.mk
的完整文档?它应该具有android.bp
https://ci.android.com/builds/submitty/8520137/linux/latest/latest/view/soong_build.html 。
I am having the following Android.mk file
for my app which is using aar-release.aar
include $(CLEAR_VARS)
res_dir := res $(LOCAL_PATH)/res
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES += <...>
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dir))
LOCAL_USE_AAPT2 := true
LOCAL_JAVA_LIBRARIES := com.google.android.material_material \
LOCAL_STATIC_JAVA_LIBRARIES += aar-release
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.appcompat_appcompat \
androidx-constraintlayout_constraintlayout \
androidx.preference_preference \
androidx.fragment_fragment \
androidx.core_core \
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PACKAGE_NAME := <My app>
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_RENDERSCRIPT_TARGET_API := 21
LOCAL_PROGUARD_FLAG_FILES := proguard-project.txt
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += aar-release:libs/aar-release.aar
include $(BUILD_MULTI_PREBUILT)
It is working fine but I have issues with licenses that require me not to link my library statically. I tried changing LOCAL_STATIC_JAVA_LIBRARIES += aar-release
to LOCAL_JAVA_LIBRARIES := aar-release
which compiled successfully but got runtime error
E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: L<my class>$Runtime;
I also replaced LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES
with LOCAL_PREBUILT_JAVA_LIBRARIES
and got error
[ 99% 830/831] aar-release dexpreopt
FAILED: out/target/product/<my product>/obj/JAVA LIBRARIES/aar-release_intermediates/dexpreopt.zip
dex2oatd E 06-08 06:05:08 20633 20633 oat writer.cc:568] No dex files in zip file '/system/framework/aar-release.aar': Entry not found
error: out/target/product/<my product>/obj/JAVA_LIBRARIES/aar-release_intermediates/dexpreopt.sh:25 exited with status 1
How can I add to my preinstalled app in AOSP as a shared library my aar-release.aar which is a prebuilt library?
BTW, where can I find the full documentation for Android.mk
? It should have all the fields like this one for Android.bp
https://ci.android.com/builds/submitted/8520137/linux/latest/view/soong_build.html.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论