1.首先交叉编译可执行文件hello
参考:http://blog.csdn.net/yf210yf/article/details/9009367
2.将hello放到assets下
3.举例:
package com.test.android.exe;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;public class MainActivity extends Activity { private String exe_path = "data/data/com.test.android.exe/hello"; private File exe_file; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { copyBigDataToSD(exe_path); exe_file = new File(exe_path); exe_file.setExecutable(true, true); execCmd(exe_path); } catch (IOException e1) { e1.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private void execCmd(String cmd) throws IOException { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(cmd); InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while (null != (line = br.readLine())) { Log.e("########", line); } try { process.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); }}private void copyBigDataToSD(String strOutFileName) throws IOException { InputStream myInput; OutputStream myOutput = new FileOutputStream(strOutFileName); myInput = this.getAssets().open("hello"); byte[] buffer = new byte[1024]; int length = myInput.read(buffer); while(length > 0) { myOutput.write(buffer, 0, length); length = myInput.read(buffer); } myOutput.flush(); myInput.close(); myOutput.close(); }}
4.效果: