android - NDK - 从静态库构建 ARMv5/ARMv7 共享库

标签 android android-ndk java-native-interface shared-libraries

我有两个从指定项目构建的静态库。

ARMv5 / myLib.a
ARMv7 / myLib.a

现在,我想使用这些库并为 ARMv5 和 ARMV7 平台构建两个共享库。

有没有办法指定我想使用我的静态库的两个版本? 现在,我在我的 ANT 脚本中做了一个坏把戏,它只包含:

  1. 复制静态 ARMv5 库。
  2. 构建共享库 (ARMv5)。
  3. 删除ARMv5静态库,复制ARMv7版本。
  4. 再次构建共享库 (ARMv7)。

我知道有

"APP_ABI := armeabi armeabi-v7a" 

但是如何告诉他我想从两个独立的静态库中构建而不只是从一个静态库中构建呢?

问候,

最佳答案

这可能不是最好的方法,但您可以尝试在 Android.mk 中使用 if else 语句并检查 APP_ABI 值并使用相应的库。

ifeq ($(APP_ABI), armeabi-v7a)
  LOCAL_SRC_FILES := ARMv7/myLib.a
else
  LOCAL_SRC_FILES := ARMv5/myLib.a
endif

或者使用 LOCAL_STATIC_LIBRARIES 以防您直接链接它们。当然,您的 Application.mk 应该包含您声明的行:

APP_ABI := armeabi armeabi-v7a

关于android - NDK - 从静态库构建 ARMv5/ARMv7 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182308/

相关文章:

android - 如何检查android设备是否配备了wifi适配器?

android - 如何使用Android获取Linux内核的版本?

android - bundle 失败 : Error and 404 when running React-Native project

android - 通过信号调用 Android NDK 项目中的 ffmpeg 部分来终止进程

java - Java 中的事件监听器没有应用程序的焦点? (全局按键检测)

启动画面后android ionic 4白屏

android - android studio 项目中 CMake 和 NDK-build 的区别

java - NDK JNI函数调用

java - NDK,使用 FloatBuffer 作为参数

java - 避免 JNI C 与 Java 之间的内存泄漏