android - 在不同的Android项目中使用编译好的ffpmeg库

标签 android linux windows android-ndk ffmpeg

我已经编译了 ffmpeg 库用于我的 Android 应用程序,所以现在我有 *.so 文件,我想在其他 Android 项目中使用它们。 但我已经在 Linux 中编译了它们,现在我将在 Windows 中工作。我可以将这些编译后的文件放到我在 Windows 中的项目中,将它们链接到 mk 文件中并使用吗? 32 位和 64 位操作系统之间的区别是否起作用? 谢谢!

最佳答案

只要您的目标 android 平台相同,它就应该可以工作。

Android NDK编译器生成的.so文件是目标android平台的原生代码。 它只是完整地打包到 APK 中,因此您用来打包 APK 的操作系统不会影响结果。

编辑:

  1. 正如评论者所建议的,我所说的目标平台是指 ARM、x86 或 MIPS 等 CPU 架构

  2. 至于API级别,targetSdkVersion和minSdkVersion都不直接影响原生代码。

    相反,如果您使用比实际 Android 设备上可用的更高级别的 API,您的代码可能会在运行时失败。

    为了安全地避免这种情况,您需要根据编译 .so 文件时假定的 NDK API 级别设置您的 minSdkVersion。

    换句话说,“/platforms/android-/arch-/usr/...”下的文件应该被编译 native 代码时的 NDK 编译器。确定使用了哪个级别,并确保您拥有与 minSdkVersion 相同或更大的数字。

    如果您安装了 NDK,它会记录在“/docs/STABLE-APIS.html”中。

关于android - 在不同的Android项目中使用编译好的ffpmeg库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21188754/

相关文章:

windows - 如何在 Windows 10 上逐步设置 Spark

windows - 从 wp7 进行 HTTPS 调用时出现 "Server not found error "

c# - 具有可更改设置的单个 exe

android - 如何将 APP 从 sleep 中唤醒(ActionScript 3 - AIR for Android)

javascript - Dart/Objective-C 和 Dart/Java 之间的交互

linux - 一个进程如何知道它已经收到一个信号

linux - 尝试在 Ubuntu Linux debian 中打包 Unity 游戏

node.js - 响应日期与 MongoDB 不同

android - URL 值未传递给另一个 Activity

android - 从另一个类访问 onCreate 中的 ArrayAdapter