作者:时尚淘宝交__流站 | 来源:互联网 | 2023-02-11 18:03
1> Ramil Kudash..:
我已经管理libpng使用android NDK应用程序(CMake构建系统而不是Android.mk)作为静态库.我用过libpng-android重新包装.这是我做过的事情:
git clone https://github.com/julienr/libpng-android.git
进${YOUR_LIBS_FOLDER}
(我用过${ANDROID_NDK_ROOT_DIRECTORY}/sources/android
).
将${ANDROID_NDK_ROOT_DIRECTORY}
(home/username/Android/sdk/ndk-bundle
对我来说)添加到$PATH
构建脚本所需的全局变量中.
用lib构建lib ndk-build
(./build.sh
在lib目录中有).图书馆将针对不同的建成ABI目标(arm64-v8a
,armeabi
,x86_64
等).
在这一点上,你必须在库头${YOUR_LIBS_FOLDER}/libpng-android/jni
,并libpng.a
在${YOUR_LIBS_FOLDER}/libpng-android/obj/local/${ANDROID_ABI}/
其中${ANDROID_ABI}
为目标平台.
最后你可以包括lib at CMakeLists.txt
.libpng
需要zlib压缩库,所以你需要链接它(zlib
也是由android studio提供,所以只需添加-lz
标志).
这是我的相关内容CMakeLists.txt
:
add_library(libpng STATIC IMPORTED)
set_target_properties(libpng PROPERTIES IMPORTED_LOCATION
${YOUR_LIBS_FOLDER}/libpng-android/obj/local/${ANDROID_ABI}/libpng.a)
add_library(appManager SHARED src/main/cpp/appManager.cpp)
target_include_directories(appManager PRIVATE ${YOUR_LIBS_FOLDER}/libpng-android/jni/)
target_link_libraries(appManager
android
libpng
z)
那里有几点需要注意:
${ANDROID_ABI}
是由Android Studio构建系统设置的变量.
再次:你需要对链接zlib的,这就是为什么我们libpng z
的,而不是libpng
在target_link_libraries
.