如何将 .so 文件添加到 APK 中的 lib 文件夹?
How do I add .so file to lib folder in APK?
如果我将以下内容添加到我的 cmakelists.txt 文件中:
add_library( # Sets the name of the library.
extralib
# Sets the library as a shared library.
MODULE
# Provides a relative path to your source file(s).
extra.cpp)
并构建我的 Android 应用程序,然后 APK 将在其 'lib' 文件夹中包含 libextralib.so。在上面的例子中,'extralib' 是从源代码文件 (extra.cpp) 构建的。我如何使用预先构建的 .so 文件作为 extralib 的 'source'?
我试过了:
add_library( # Sets the name of the library.
extralib
# Sets the library as a shared library.
MODULE
# Provides a relative path to your source file(s).
extra.so)
但 Android Studio 不喜欢这样。我收到以下错误:
CMake 错误:CMake 无法确定目标的链接器语言:extralib
我想弄清楚如何将额外的 .so 文件添加到 APK lib 文件夹(它们将在运行时动态加载),其中一些 .so 文件是从源代码构建的,而另一些是预构建的 .so文件。我知道我可以创建一个 jniLibs 文件夹并将我所有的 .so 文件放入该文件夹,但我不想这样做。我希望它全部在 cmakelists.txt 中定义。
This method 应该仍然有效:
add_library(lib_extra SHARED IMPORTED)
set_target_properties(lib_extra PROPERTIES IMPORTED_LOCATION
${your-extra-lib-location}/${ANDROID_ABI}/libextra.so)
target_link_libraries(${project-lib-name} lib_extra)
确保您计划包含在应用中的每个 ABI 都有一个二进制文件 (extra.so)。构建 APK 后,您可以使用 Studio 的 build -> Analyze APK...
检查它们是否存在(或者只是解压缩 APK 文件)。
如果我将以下内容添加到我的 cmakelists.txt 文件中:
add_library( # Sets the name of the library.
extralib
# Sets the library as a shared library.
MODULE
# Provides a relative path to your source file(s).
extra.cpp)
并构建我的 Android 应用程序,然后 APK 将在其 'lib' 文件夹中包含 libextralib.so。在上面的例子中,'extralib' 是从源代码文件 (extra.cpp) 构建的。我如何使用预先构建的 .so 文件作为 extralib 的 'source'?
我试过了:
add_library( # Sets the name of the library.
extralib
# Sets the library as a shared library.
MODULE
# Provides a relative path to your source file(s).
extra.so)
但 Android Studio 不喜欢这样。我收到以下错误:
CMake 错误:CMake 无法确定目标的链接器语言:extralib
我想弄清楚如何将额外的 .so 文件添加到 APK lib 文件夹(它们将在运行时动态加载),其中一些 .so 文件是从源代码构建的,而另一些是预构建的 .so文件。我知道我可以创建一个 jniLibs 文件夹并将我所有的 .so 文件放入该文件夹,但我不想这样做。我希望它全部在 cmakelists.txt 中定义。
This method 应该仍然有效:
add_library(lib_extra SHARED IMPORTED)
set_target_properties(lib_extra PROPERTIES IMPORTED_LOCATION
${your-extra-lib-location}/${ANDROID_ABI}/libextra.so)
target_link_libraries(${project-lib-name} lib_extra)
确保您计划包含在应用中的每个 ABI 都有一个二进制文件 (extra.so)。构建 APK 后,您可以使用 Studio 的 build -> Analyze APK...
检查它们是否存在(或者只是解压缩 APK 文件)。