Here's demo application called "Run Native Exe" to:
run local UNIX commandsrun native executable downloaded from the WebPackage: NativeExe-0.2.apkSource code: on Github (ADT project)
To install the package,
Go to Settings→Application and check "Unknown sources"Open the package link above using Android Browseror type "adb install NativeExe-*.apk" in your PC if you have Android SDK.
↑You can use Runtime.exec() in standard Java. Here's sample code to run /system/bin/ls /sdcard in Android App:
try { // Executes the command. Process process = Runtime.getRuntime().exec("/system/bin/ls /sdcard"); // Reads stdout. // NOTE: You can write to stdin of the command using // process.getOutputStream(). BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream())); int read; char[] buffer = new char[4096]; StringBuffer output = new StringBuffer(); while ((read = reader.read(buffer)) > 0) { output.append(buffer, 0, read); } reader.close(); // Waits for the command to finish. process.waitFor(); return output.toString(); } catch (IOException e) { throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); }This code is based on this article. Thanks yussi to let me know this by comment.
↑First, you need to cross-compile your native executable for ARM.
Here's a way (dynamic link version). Or you can use Scratchbox (Japanese).
If you get a file with a format like this, it's probably OK:
% file yourapp yourapp: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, statically linked, not strippedYou have three ways to put the binary to the phone:
From Android Java app, using assets folder (by fnerg in comment below) Include the binary in the assets folder.Use getAssets().open("YourBinaryHere") to get an InputStream.Write it to /data/data/app-package-name (e.g. /data/data/net.gimite.nativeexe), where your application has access to write files and make it executable.Run "/system/bin/chmod 744 /data/data/app-package-name/yourapp" using the code above.Run your executable using the code above. From Android Java app, downloading via HTTP (which I use in my demo application above) Dowload the executable using HTTP and put it to /data/data/app-package-name (e.g. /data/data/net.gimite.nativeexe), where your application has access to write files and make it executable. You can use standard Java FileOutputStream to write files there.Run "/system/bin/chmod 744 /data/data/app-package-name/yourapp" using the code above.Run your executable using the code above. By adb (needs SDK and root) If you want to put the executable to YOUR phone connected with adb command in Android SDK and you have root, you can put the executable by: % adb shell $ su # mkdir /data/tmp # chmod 777 /data/tmp # exit $ exit % adb push yourapp /data/tmp % adb shell $ chmod 744 /data/tmp/yourapp $ /data/tmp/yourappNote that you cannot make files executable in /sdcard.
转载于:https://www.cnblogs.com/shangdawei/p/4490859.html
相关资源:数据结构—成绩单生成器