android jar包 权限,Android系统启动执行jar程序
看雪里有人问到android是不是只能执行apk程序?
除了原生程序和脚本外,android是可以启动执行封装java程序的jar包的。
实现流程如下:
第一步新建java程序
public class Main {
public static void main(String[] args) {
for(int i=1;i<10;i++){
System.out.println("this is the test index"+i);
}
}
}
并将程序导出为jar命令为test.jar包。
第二步,将javajar包转为androidjar包。
1.首先,找到dx工具所在文件夹,如android-sdk/build-tools/20.0.0,并将该文件夹加入到环境变量PATH中;
2.其次,执行编译命令dx –dex –output=classes123.dex test.jar
3.再将dex文件打包成android版本的jar,aapt add testandroid.jar classes123.dex
4.将该jar包push到手机的/system/framework目录下
5.修改jar包的权限为777
2.编写一个linux shell脚本
2.1.新建一个文本,命名为run_bktools.sh
base=/system
export CLASSPATH=$base/framework/testandroid.jar
exec app_process base/bincom.jaytang.linux.Main"@”
CLASSPATH为jar包的路径,com.larack.bktools.BKMain为jar包的main函数所在的类,”$@”表示把当前参数传入到main中。
2.2.将该sh文件run_bktools.sh push到手机/system/bin目录下,并且修改权限为777
2.3.最后测试利用sh脚本启动jar包
./run_bktools.sh
实现root shell命令的android程序如下:
package com.example.androidshell;
import java.io.DataOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends Activity {
private static final String TAG = "shell";
private static final String CMD = "run_bktools.sh";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int result = -1;
result = execRootCmdsilent(CMD);
//查看返回值 如果是-1就fail
if (result == -1) {
Toast.makeText(getApplicationContext(), "fail", 0).show();
} else {
Toast.makeText(getApplicationContext(), "sucess", 0).show();
}
}
//执行shell命令的方法
private int execRootCmdsilent(String cmd) {
int result =-1;
DataOutputStream dos=null;
try {
//申请su权限
Process p=Runtime.getRuntime().exec("su");
//拿到输出流
dos=new DataOutputStream(p.getOutputStream());
Log.i(TAG, cmd);
dos.writeBytes(cmd+"\n");
dos.flush();
dos.writeBytes("exit\n");
dos.flush();
p.waitFor();
//改变退出的命令的值
result=p.exitValue();
//将成功信息打印出来
Log.i(TAG, "Success execRootCmdSilent(" + cmd + ")=" + result);
} catch (Exception e) {
// TODO: handle exception
Log.i(TAG,"fail execRootCmdSilent("+cmd+")"+result);
}finally{
if(dos!=null)
{
try {
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return result;
}
}
最后在eclispe的控制台能看到
参考:http://www.cnblogs.com/larack/p/4139766.html
android jar包 权限,Android系统启动执行jar程序相关推荐
- java -jar 工作原理_可执行Jar包运行原理
spring boot有一个很方便的功能就是可以将应用打成可执行的jar.那么大家有没想过这个jar是怎么运行起来的呢?本篇博客就来介绍下spring boot可执行jar包的运行原理. 1. 打可执 ...
- Java反编译Jar包和Android APK(类似.NET Reflector)
JD-GUI 这个JD-GUI可以反编译jar包,用法就是打开jar包直接浏览. JD-Eclipse JD-Eclipse是个Eclipse插件,安装方法是打开Eclipse,菜单 Help – & ...
- 在Linux服务器运行jar包并一直处于后台执行
在Linux服务器运行jar包并一直处于后台执行: 一.一般情况 jar包在linux的目录为 /jarmanager/xxx.jar 使用在/jarmanager目录下使用 java -jar xx ...
- 将jar包转换成可执行.exe文件
将jar包转换成可执行.exe文件 写在前面的话 将jar转换成exe 写在前面的话 在转换之前需要先到处一个可执行的jar,确保你的程序是正确的.我们需要创建一个文件来存放我们生成的exe文件.在这 ...
- pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中
前言:maven-将依赖的 jar包一起打包到项目 jar 包中 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全. 如 ...
- Eclipse中要导出jar包中引用了第三方jar包怎么办
Eclipse中要导出jar包中引用了第三方jar包怎么办 (2009-07-20 15:28:44) 转载▼ 标签: it 分类: Eclipse 今天做个小的java程序,想要先将其导出成 ...
- Maven之jar包冲突引入非第三方jar
文章目录 1. jar包冲突问题 2. 解决办法 2.1 Maven Helper插件 2.1.1 安装 Maven Helper 插件 2.1.2 pom.xml 依赖冲突分析 2.1.2.1 打开 ...
- linux提取最新修改文件下载,linux 解压修改jar包内容并重新打包jar
1.帮助文档 [root@node1 java]# jar Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] ...
- 通过命令运行jar包(指定外部依赖jar包)
前提条件: 1.本机已安装jdk 2.已配好jdk的环境变量 通过以下命令查询jdk是否配好 java -version 执行出现java版本信息即配好 lizhi@LiZhideMacBook-Ai ...
最新文章
- Java enum的用法详解
- 73款阿里巴巴开源软件详解
- BZOJ 4814 Luogu P3699 [CQOI2017]小Q的草稿 (计算几何、扫描线、set)
- PowerBI随笔(5)-关系模型与报表-2
- 【收藏】k8s: pod has unbound PersistentVolumeClaims问题解决
- img设置宽高不生效_便宜 好用 不掉盘 保姆级粒子云刷机攻略
- Mean Shift算法(3)在OpenCV上的实现——图像分割PyrMeanShiftFiltering
- vbs获取群聊当前内容_通过VBS脚本批量检测服务器状态 - 易本地工作室-Ebend SoftwareNetwork Studio - 群发,采集,管理类软件定制开发服务【易本地工作室】...
- 按键精灵执行cmd命令_如何用cmd运行按键精灵脚本
- 智伴机器人安卓怎么设置个人热点_智伴机器人怎么联网?看这个联网视频教程...
- 泊松回归模型matlab,matlab拟合泊松分布
- 视频录制软件进行电脑屏幕录像的使用方法
- lunix 下编译draco遇到的问题及解决办法
- python画圆形螺旋线_Python写的弹球小游戏
- php 2038年,php实现兼容2038年后Unix时间戳转换函数,2038unix_PHP教程
- pin limiting the speed
- 利用VPS服务器搭建一个FRP内网穿透服务和Web服务穿透
- c语言程序设计罗朝盛第三版,c语言程序设计罗朝盛总复习.ppt
- 三相三线STATCOM仿真模型。无功电流采用ipiq检测,pwm采用滞环控制。
- c++判断字符串是否包含指定字符串/判断字符串是否相等/保留小数点后几位
热门文章
- Android设置Gmail邮箱
- UVA10302 Summation of Polynomials【数学】
- UVA457 Linear Cellular Automata【模拟】
- HDU1875 畅通工程再续【Kruskal算法+并查集】
- UVA10473 Simple Base Conversion【进制转换】
- NUC1003 Hangover【数学计算+水题】
- [Math Processing Error] 问题的解决(F5刷新页面与 Ctrl/Shift + F5 刷新页面的区别)
- sklearn 下的 ensemble learning
- 词汇的积累 —— 反义词、同义词
- linux 下的包管理器 —— apt-get 与 dpkg