【发布时间】:2015-03-06 23:30:18
【问题描述】:
我正在从 Eclipse 迁移到 Android Studio,并且我正在尝试使用 Gradle 来包含 PreBuilt 静态库。 我正在关注 ndk 示例项目提供的两个库示例,并在 Android Studio 中实现它。
我有什么:
预建的静态库:
[ndk 路径]\samples\two-libs\obj\local\armeabi-v7a\libtwolib-first.a
库的头文件:
[ndk 路径]\samples\two-libs\jni\first.h
包含单个方法:
extern int first(int x, int y);
现在如何在 android studio 中将其用作预构建的静态库?
我尝试了什么:
添加文件: 通过创建 jniLibs 将库添加到我的 android studio 项目中(我读到这是用于 preBuild 动态库,不确定 preDuilt 静态库是否也应该使用此路径):
[android-studio-project-path]\app\src\main\jniLibs\armeabi-v7a\libtwolib-first.a
并将头文件添加到:
[android-studio-project-path]\app\src\main\jni\first.h
代码更改:
在java中: 称为本机方法 Foo。
在 JNI 头文件中: 声明了 Foo 方法。
在实现JNI头的c文件中: 添加了#include“first.h” 并调用了第一个方法。
但我在编译过程中遇到错误:
“错误:未定义对‘first’的引用”
我猜这是因为在编译期间它没有找到 first.h 的实现文件并且不能动态加载它。 如果我添加 first.c 文件(实现文件而不是将其作为库加载它可以工作)
我是 c 代码和 JNI 的新手,所以任何帮助都会很好!
【问题讨论】: