度娘搜到这篇博客,Android 动态加载 .SO

博文中只有部分代码,对拷贝so文件至系统目录的接口(

FileUtils.assetToFile(this, "libTestJNI.so", soFile);
)没有实现,搜索一番未得,发在这里给大家测试一下。

源码下载地址:http://download.csdn.net/detail/mnorst/8065011

package com.example.testtwolib;import java.io.File;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;public class MainActivity extends Activity {// 静态加载.so// static {// //System.loadLibrary("test2");// //System.loadLibrary("test");//// }private TextView mTextNum;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTextNum = (TextView) findViewById(R.id.num);// 动态加载.soload();// load2();int z = add(3, 4);mTextNum.setText("add=" + z);}private void load() {File dir = getDir("lib", Context.MODE_PRIVATE);File soFile = new File(dir, "libtest.so");FileUtils.assetToFile(this, "libtest.so", soFile);try {System.load(soFile.getAbsolutePath());} catch (Exception e) {}}private void load2() {File dir = getDir("lib", Context.MODE_PRIVATE);File soFile = new File(dir, "libtest2.so");FileUtils.assetToFile(this, "libtest2.so", soFile);try {System.load(soFile.getAbsolutePath());} catch (Exception e) {}}public static native int add(int x, int y);}


package com.example.testtwolib;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import android.content.Context;import android.content.res.AssetManager;public class FileUtils {public static void assetToFile(Context context, String name, File file) {AssetManager assetManager = context.getAssets();InputStream is;try {is = assetManager.open(name);java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();byte[] bufferByte = new byte[1024];int l = -1;while ((l = is.read(bufferByte)) > -1) {bout.write(bufferByte, 0, l);}byte[] rBytes = bout.toByteArray();bout.close();is.close();if (!file.exists()) {file.createNewFile();}DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));dos.write(rBytes);dos.flush();dos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (OutOfMemoryError e) {// TODO Auto-generated catch blocke.printStackTrace();}}}




更多相关文章

  1. Android高效加载大图、多图解决方案,有效避免程序OOM
  2. 万能imageLoader加载图片的包装,直接用
  3. Android快速开发框架之xUtils---图片模块
  4. android 自定义ButtonTab , ActivityGroup 动态加载 activity
  5. Android(安卓)类加载机制以及基于类加载机制的热修复
  6. 利用AS(3.0)工具将工程打包成jar
  7. [Android(安卓)Pro] 使用CursorLoader异步加载数据 from 3.0
  8. Android(安卓)Robolectric 加载运行本地 So 动态库
  9. [置顶] 我的Android进阶之旅------>android异步加载图片显示,并且

随机推荐

  1. Android(安卓)API 实验记录(一)
  2. Android(安卓)EditText 代码实现键盘弹出
  3. Android(安卓)Interface Definition Lang
  4. Android(安卓)之 EditText属性用法介绍
  5. android:screenOrientation 强制屏幕方向
  6. Android(安卓)JUnit单元测试
  7. Android数据库操作的两种方式
  8. android 中限制EditText 最大输入字符数
  9. Google Maps API Key申请方法及地址
  10. 2010.11.27———android 展示网络上的图