导航:首页 > 文件教程 > android加载so文件

android加载so文件

发布时间:2025-09-25 00:17:42

㈠ 如何加载so文件 android

android中加载so文件:

在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,工程目录下图:

Android中加载so文件的提供的API:

void System.load(String pathName);

说明:

1、pathName:文件名+文件路劲;

2、该方法调用成功后so文件中的导出函数都将插入的系统提供的一个映射表(类型Map);

3、具体代码如下:

try {
String localPath = Environment.getExternalStorageDirectory() + path;
Log.v(TAG, "LazyBandingLib localPath:" + localPath);

String[] tokens = mPatterns.split(path);
if (null == tokens || tokens.length <= 0
|| tokens[tokens.length - 1] == "") {
Log.v(TAG, "非法的文件路径!");
return -3;
}
// 开辟一个输入流
File inFile = new File(localPath);
// 判断需加载的文件是否存在
if (!inFile.exists()) {
// 下载远程驱动文件
Log.v(TAG, inFile.getAbsolutePath() + " is not fond!");
return 1;
}
FileInputStream fis = new FileInputStream(inFile);

File dir = context.getDir("libs", Context.MODE_PRIVATE);
// 获取驱动文件输出流
File soFile = new File(dir, tokens[tokens.length - 1]);
if (!soFile.exists()) {
Log.v(TAG, "### " + soFile.getAbsolutePath() + " is not exists");
FileOutputStream fos = new FileOutputStream(soFile);
Log.v(TAG, "FileOutputStream:" + fos.toString() + ",tokens:"
+ tokens[tokens.length - 1]);

// 字节数组输出流,写入到内存中(ram)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
// 从内存到写入到具体文件
fos.write(baos.toByteArray());
// 关闭文件流
baos.close();
fos.close();
}
fis.close();
Log.v(TAG, "### System.load start");
// 加载外设驱动
System.load(soFile.getAbsolutePath());
Log.v(TAG, "### System.load End");

return 0;

} catch (Exception e) {
Log.v(TAG, "Exception " + e.getMessage());
e.printStackTrace();
return -1;

}

阅读全文

与android加载so文件相关的资料

热点内容
两数据库同步 浏览:348
怎么做小型数据库 浏览:350
数控g02圆弧怎么编程 浏览:764
计算机二级c程序设计 浏览:362
如何升级谷歌play服务 浏览:805
86版本光之助力伤害计算 浏览:959
苹果微电影优酷视频 浏览:2
qq游戏宝宝升级 浏览:739
武侠类微信公众号 浏览:815
matlab工具包pls 浏览:550
js控制滚动条到最底部 浏览:900
网络管理员历年真题 浏览:880
编程语言适合学什么 浏览:362
天正怎么导cad文件 浏览:842
下载苹果6手机壁纸 浏览:77
怎么部分压缩文件 浏览:80
php源码安装到空间教程 浏览:680
航天金税注册文件 浏览:88
js添加元素 浏览:813
让角色数数怎么编程 浏览:347

友情链接