JNI 1
来源:互联网 发布:ceic数据库与wind 编辑:程序博客网 时间:2024/06/05 16:14
1,项目->AndroidTool ->AddNativeSupport ->.so名
2,修改jni/Android.mk文件, 注意把cpp,改为c,
3,新建一个java类,并且定义native函数,并且
package com.tfsc;public class TFSCSample { private native int sdTest(); public final int TFSCsdTest(){ return sdTest(); } static { System.loadLibrary("TFSCa"); }}
4,Javah 包.类名 在bin\classes目录生成对应的.h文件,拷贝.h文件中的函数声明到jni/xxx.c文件中即可,
PS: adb push c程序到手机运行
1,把android.mk中的
2,cmd进入项目目录,
ndk-build需要在项目目录进行,不能在jni目录,
否则eclipse会不刷新生成的.so库
ndk-build clean
ndk-build
adb push lib\armeabi\xxx /data/local/tmp/
adb shell
cd /data/local/tmp/
chmod 777 xxx
./xxx
PS:分清动态库和静态库,
安卓,即linux上,.so为动态库,.a为静态库,
一般库代码少就放到静态库里面。
静态库的加载方式如下:
动态库的加载方式如下
//动态加载SKF库,描述代码//.java skfTest.LoadSKF("/data/data/com.SKFDemo/lib/libSKFInterface.so");//.ctypedef ULONG (DEVAPI *pSKF_SetPackageName)(LPSTR pszPackageName);pSKF_SetPackageName Fun_SKF_SetPackageName = NULL;g_hSKFLib = dlopen(pszSKFName, RTLD_NOW);//(dkopen打开动态库,需要#include <dlfcn.h>,函数返回句柄)//pszSKFName即是"/data/data/com.SKFDemo/lib/libSKFInterface.so"if (NULL == g_hSKFLib)goto EndOP;// Android4.4 需要设置包名 Fun_SKF_SetPackageName = (pSKF_SetPackageName)dlsym(g_hSKFLib, "SKF_SetPackageName");//赋值if ( NULL == Fun_SKF_SetPackageName)goto EndOP;ulRet = Fun_SKF_SetPackageName(pszPackageName);//使用
windows版本:
1,显示声明.h和lib
#include "xxx.h"#pragma comment(lib, "xxx.lib");
2,隐式包含 .lib放到项目属性->链接器->输入->附加依赖项
.h 项目属性->c/c++->常规->附加包含目录
PS:编译时需要lib即可,调试或者运行时需要把dll放到对应的Debug,或Release中。
0 0
- Jni< 1 >
- JNI 1
- jni(1)
- JNI学习(1)
- Android JNI 面面观 1
- android jni 学习1
- JNI 学习实录1
- JNI整理_helloworld(1)
- JNI学习1
- JNI学习(1)
- JNI技术-1
- jni 学习1
- Android JNI (1)
- android jni(1)
- JNI学习(1)
- JNI学习入门1
- Android jni(1)
- jni笔记1
- 如何在present出来的viewController里使用push方法
- 使用Android Studio阅读整个Android源码
- 计算机网络——1.计算机网络基础
- 【BZOJ1001】【Beijing2006】狼抓兔子(平面图转对偶图:最小割+最短路)
- WebMagic无法输出抓取到的数据和文件
- JNI 1
- C++除法取整
- spring中@param和mybatis中@param使用区别
- 创意杯子该怎么选择
- 编程书籍推荐
- Android解析Intent协议并打开程序
- android txt文件名listview item 点击并传值
- android中修改framework层代码后怎样操作才能看到修改后的效果?
- 正确使用AFNetworking的SSL保证网络安全