【问题标题】:Prevent manually added libraries from being deleted by ndk-build防止手动添加的库被 ndk-build 删除
【发布时间】:2023-03-06 01:41:02
【问题描述】:

我有一个项目正在重用预编译的本机库 (libocr.so),但我没有源文件。 我手动将库放在项目的 libs/armeabi 上,一切正常。

然后我需要为同一个项目创建一个新的本地库。我将我的源代码和 Android.mk 文件一样放在我的 jni 文件夹中,并使用 ndk-buld 命令构建它。 该库已构建并放置在 libs/armeabi 文件夹中,但 libocr.so (手动添加的)会自动从那里删除... 如何防止 libocr.so 被删除?

这是我的 Android.mk 文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := libyuv
LOCAL_SRC_FILES := ycrcbutils.c

include $(BUILD_SHARED_LIBRARY)

提前感谢您的帮助,卢卡。

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    ...好吧,我自己找到了答案... 根据ndk/docs/PREBUILTS.HTML 我改变了我的Android.mk 像这样:

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_LDLIBS := -llog
    
    LOCAL_MODULE    := libyuv
    LOCAL_SRC_FILES := ycrcbutils.c
    
    include $(BUILD_SHARED_LIBRARY)
    
    
    # Add prebuilt libocr
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := libocr
    LOCAL_SRC_FILES := libocr.so
    
    include $(PREBUILT_SHARED_LIBRARY)
    

    并将我的 libocr.so 的副本放在我项目的 jni 文件夹下。

    【讨论】:

    • 注意 TARGET_ARCH_ABI 的可选使用,例如:LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libfoo.so
    • @NateS 我非常爱你。
    • @lviggiani 我面临着类似的问题,我只有 .so 文件而不是 .cpp,当我运行程序时它给出错误停止中止
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多