添加外部AAR/JAR作为共享库

发布于 2025-02-06 00:57:27 字数 2159 浏览 2 评论 0原文

我正在使用以下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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文