【问题标题】:android ndk: How to access third part shared libraryandroid ndk:如何访问第三方共享库
【发布时间】:2015-02-19 01:16:52
【问题描述】:

我有一个包含一些类 (C++) 的第三方共享库 (.so)。我想在我的 Android 应用程序中使用这个库。我也打算用 C++ 编写一段代码,用于访问第三方共享库。访问第三方共享库的代码将被放在一个共享库中(mySHAredLibrary.so)。我的疑问是如何编译 mySHAredLibrary.so,如何在我的 make 文件中指出 mySHAredLibrary.so 依赖于第三方共享库。

我正在为 Windows 64 位使用 android ndk r10d。 (https://developer.android.com/tools/sdk/ndk/index.html)

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    假设外部库被称为 libThirdParty.so,并且您有 .h 标头,您可以从源代码中使用它。以下是您可以执行的操作:

    将每个架构的 .so 文件放在 jni/ThirdPartyLib/<abi> 下(NDK 目前支持的 Android ABI 有 armeabi、armeabi-v7a、x86、x86_64、arm64-v8a、mips、mips64) .您应该为 armeabi 或 armeabi-v7a 和 x86 提供至少一个版本的 lib,当然最好为所有受支持的架构提供一个版本。

    然后,将您的 .h 文件放在 jni/ThirdPartyLib/include

    现在,您可以在 Makefile 中包含以下内容:

    Android.mk

    LOCAL_PATH := $(call my-dir)
    
    # ThirdParty prebuilt
    include $(CLEAR_VARS)
    LOCAL_MODULE := ThirdParty
    LOCAL_SRC_FILES := ThirdPartyLib/$(TARGET_ARCH_ABI)/libThirdParty.so
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/ThirdPartyLib/include
    include $(PREBUILT_SHARED_LIBRARY)
    
    # Your lib
    include $(CLEAR_VARS)
    LOCAL_MODULE    := mySHaredLibrary
    LOCAL_SRC_FILES := source1.cpp source2.cpp
    LOCAL_SHARED_LIBRARIES := ThirdParty
    include $(BUILD_SHARED_LIBRARY)
    

    Application.mk

    APP_ABI := all # can be "armeabi-v7a x86 mips..." depending on what you support.
    APP_PLATFORM := android-14 # should be the same number than in Android project's minSdkVersion.
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多