【发布时间】:2015-02-16 09:12:04
【问题描述】:
我希望在我的 Android Studio NDK 项目中包含一个预编译的静态库。我正在使用 Android Studio 1.0.1,在 SO 上尝试此问题的任何解决方案似乎都已过时(或涉及创建库项目并包含它)。
结构如下:
app
/--src
/--main
/--java
+--jni
+--jniLibs
/--armeabi
/--libpng.a
--armeabiv7
/--libpng.a
...(for each abi)
我正在尝试包含库 libpng。我尝试创建 jniLibs(根据 ph0b(真棒指南,顺便说一句)并将 libpng.a 添加到相应的 ABI 文件夹。这仍然给我错误 - 当我尝试编译时找不到 -llibpng使用以下代码:
ndk {
moduleName "game"
cFlags "-std=c++11 -fexceptions -DANDROID -I${project.buildDir}/../src/main/jni/include \
-I${project.buildDir}/../src/main/jni/include/png"
ldLibs "EGL", "GLESv3", "dl", "log", "android", "libpng"
stl "gnustl_static"
}
【问题讨论】:
-
您在 ndk.ldLibs 表达式中是否尝试过“png”。即不包括前缀'lib'。
-
@RobertRowntree yes :( 已经尝试过那个。还尝试将 libpng 添加到 ndk/platforms/android-21/usr/lib 中的相应平台作为最后的努力。尝试过 .so 和.a,无济于事。唯一有效的方法是将所有源文件用于 libpng 并将它们粘贴在一个目录中,并将其包含在我的 jni.srcDirs 中……非常混乱,笨重,并且需要一分钟立即建造。
-
我仍然对 NDK 使用 ph0b 技术,您可以使用自己的 'sourceSets.main' 覆盖 NDK 插件来覆盖框架... jni.srcDirs = [] /*禁用自动 ndk-build 调用*/ jniLibs.srcDir 'src/main/libs' 如果我不更改实际的 cpp 源文件,它根本不会增加构建时间,并根据 ph0b 使用我自己的 Android.mk 文件
-
这就是我现在正在做的事情,正在切换到 ph0b 的设置。从我阅读数小时后获得的信息来看,我只是不认为 Android Studio 支持我需要的东西。感谢您的意见!
-
ph0b.com/android-studio-gradle-and-ndk-integration 如果你还没有……别忘了获取最新的 NDK。 ( 10c )
标签: android android-ndk android-studio