一个完整的解释,因为你的Android.mk对我没有多大意义:对不起,如果你已经知道一些。
静态库应该是纯C/C++,并且使用Android NDK进行封装以便可以从Java使用。
highfive.h:
int giveMeFive();
highfive.c:
#include "highfive.h"
int giveMeFive() {
return 5;
}
例如,假设您的静态库是由一个简单的.c和.h文件建
这可以被编译为使用Android NDK编译器,显然你人静态库,准备知道该怎么做:这会给我们一个highfive.a库。
在这种形式下,这个库在Java中是不可用的,但它可以使用Android NDK进行封装。请参阅的Android NDK文档命名约定等等
highfiveWrapper.c:
#include "highfive.h"
jint
Java_your_package_name_HighFive_giveMeFive(JNIEnv *env, jobject o) {
return (jint) giveMeFive();
}
及其对应的Java文件:
package your.package.name;
class HighFive {
static {
System.loadLibrary("highfive");
}
public native int giveMeFive();
}
现在,我们如何编译这一切让它起作用:
Android.mk:
include $(CLEAR_VARS)
LOCAL_MODULE := libhighfive-prebuilt
LOCAL_SRC_FILES := path/to/highfive.a
LOCAL_EXPORT_C_INCLUDES := path/to/highfive.h/folder
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := highfive
LOCAL_SRC_FILES := path/to/highfiveWrapper.c
LOCAL_STATIC_LIBRARIES := libhighfive-prebuilt
include $(BUILD_SHARED_LIBRARY)
还有,你应该能够为你想使用你的本地库!
希望这有助于!