用NDK调用第三方库
来源:互联网 发布:淘宝邮票真假怎么鉴定 编辑:程序博客网 时间:2024/05/19 20:44
用NDK调用第三方库遇到不少坑,总结一下。
1、添加JNI目录
参考:http://blog.csdn.net/qq_24949727/article/details/73850703
2、文件介绍:
其中:JniFactory 是包含native函数的类
libc4jniTest.a是第三方的库文件,非JNI规范
libc4jniTest.h 是对应的头文件
myjni-lib.c 是JNI规范的源文件,用于封装第三方库
上代码:
MainActivity
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Example of a call to a native method TextView tv = (TextView) findViewById(R.id.sample_text); tv.setText(JniFactory.cpp4jni("VBVBBVVBB")+"<<"); } }
JniFactory
public class JniFactory { public static native String cpp4jni(String str); static { System.loadLibrary("lmyjni-lib"); }}
Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := libc4jniTestLOCAL_SRC_FILES := libc4jniTest.ainclude $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := lmyjni-libLOCAL_SRC_FILES := myjni-lib.cLOCAL_STATIC_LIBRARIES := libc4jniTestinclude $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := armeabi armeabi-v7a
c4jniTest.h
#ifndef C4JNI_C4JNITEST_H#define C4JNI_C4JNITEST_H#include <string.h>char* c4jni_hello(char* string);#endif //C4JNI_C4JNITEST_H
myjni-lib.c
#include <jni.h>#include "c4jniTest.h"jstring Java_com_xh_jni_JniFactory_cpp4jni ( JNIEnv* env, jobject jobject,jstring x ){return c4jni_hello(x);}
值得注意的有:
libc4jniTest.a 应该是交叉编译,应用于arm平台
步骤:
1.进入ndk目录 cd /opt/Java/android-ndk-r14b/build/tools
2. 安装工具到指定目录 ./make-standalone-toolchain.sh --platform=android-14 --install-dir=/opt/Java/arm-linux-androideabi/
3.编译c /opt/Java/arm-linux-androideabi/bin/arm-linux-androideabi-gcc -c c4jniTest.c
/opt/Java/arm-linux-androideabi/bin/arm-linux-androideabi-ar -cvr libc4jniTest.a c4jniTest.o
参考资料:http://blog.csdn.net/jiangxuchen/article/details/22883575
- 用NDK调用第三方动态库
- 用NDK调用第三方库
- 用NDK调用第三方动态库--个人总结
- 用NDK调用第三方动态库--个人总结
- NDK调用第三方so共享库
- NDK 动态库 调用第三方动态库
- android ndk调用第三方库生成动态库
- NDK 调用第三方库及系统库的分析
- 关于Android NDK中调用第三方的动态库
- android通过NDK调用第三方动态库
- NDK编译第三方库,通过JNI调用。
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- Android NDK中调用第三方的动态库
- 16、购物单
- TFTP相关指令内容
- 学习问题
- HDU 4513吉哥系列故事——完美队形II
- linux命令sed
- 用NDK调用第三方库
- 经验分享 | HTML5简化移动应用开发过程
- Maven常用命令
- storm调优
- 链表节点查找
- 定义一个存储过程,以员工编号为参数,返回该员工的工作年限。
- Manaher算法详解
- 大家猜学会那个就能搞定世界上所有的数据库
- PHP 表单验证