使用NDK包括预编译的静态库

zma*_*tin 18 android android-ndk android-studio

我希望包含一个在我的Android Studio NDK项目中预编译的静态库.我正在使用Android Studio 1.0.1,任何在SO上尝试此问题的解决方案似乎已过时(或涉及创建库项目并包含它).

结构如下:

app
/--src
/--main
/--java
+--jni
+--jniLibs
   /--armeabi
       /--libpng.a
    --armeabiv7
       /--libpng.a
    ...(for each abi)
Run Code Online (Sandbox Code Playgroud)

我试图包括库libpng.我尝试创建jniLibs(根据ph0b(awesome guide,btw)并将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"
}
Run Code Online (Sandbox Code Playgroud)

Vas*_*nth 1

在Android Studio 1.0.2中添加.so库

  1. 在“src/main/”内创建文件夹“jniLibs”
  2. 将所有 .so 库放入“src/main/jniLibs”文件夹中
  3. 文件夹结构如下所示:
    |--app:
    |--|--src:
    |--|--|--main
    |--|--|--|--jniLibs
    |--|--|-- |--|--armeabi
    |--|--|--|--|--|--.so 文件
  4. 不需要额外的代码,只需同步您的项目并运行您的应用程序。

    参考
    https://github.com/commonsguy/sqlcipher-gradle/tree/master/src/main

  • 我已经使用 .a 文件(静态库)做到了这一点,但是现在怎么办?如何在我的 java 代码中使用此库中声明的类和函数? (5认同)