当前位置: 首页 > news >正文

网站专题策划网站运营推广选择乐云seo

网站专题策划,网站运营推广选择乐云seo,济南有哪些网站是做家具团购的,ps怎么logo设计制作​ 最近有位老哥问了一个问题,说如果将java的jar文件在Android中执行?这个其实很简单的一个问题,直接写个App放里面不就可以了么?但是人家说没有App,直接使用命令行去运行。说明这个需求的时候,把我给整懵了…


最近有位老哥问了一个问题,说如果将java的jar文件在Android中执行?这个其实很简单的一个问题,直接写个App放里面不就可以了么?但是人家说没有App,直接使用命令行去运行。说明这个需求的时候,把我给整懵了,没有很好的思路去想这个问题,所幸查了查资料,发现其实可以在Android中使用命令行来执行jar包命令的。

​ 首先,我们整理一下所需要用到的知识:

  • android虚拟机无论是dalvik还是art,都是无法直接运行java的jar文件的,需要有一个中间产物dex,这里就不多说了;
  • dex如何手动生成,需要用到dx/d8工具;
  • java的常用的编译命令,比如 javac / java cp
  • 常用的adb/linux命令,比如adb shell / adb push/ rm -rf 等等命令。

1. java项目

首先我们来看一下我们的java helloworld项目,是一个纯的java项目:

当我们写好了我们的HelloWorld之后,可以手动通过命令行将java文件编译成class文件,命令行如下:

javac -source 1.8 -target 1.8 -d bin -cp lib/commons-cli-1.5.0.jar src/com/xing/HelloWorld.java

这里多说一句,

  • -source 1.8 -target 1.8 指定编译的源代码和生成的目标class文件的Java版本都为1.8
  • -d 是生成class文件的目录;
  • -cp 后面跟的 lib/commons-cli-1.5.0.jar 是我的HelloWorld.java 所依赖的jar包

所以这里编译时需要把它带上。

如果你需要使用 java 11版本,那么编译命令为:

javac -source 11 -target 11 -d bin -cp lib/commons-cli-1.5.0.jar src/com/xing/HelloWorld.java

2. 编译成dex文件

当生成好 class文件之后,我们需要将 class文件编译成 dex文件,有两种方式:dex和d8。d8是相较于dex更新效果更好的编译方式,都是可以在android编译工具文件夹 build-tools下面找到。下面两种方式写法都注明一下:

1. dx方式:

./Android/sdk/build-tools/28.0.2/dx --output=helloworld.jar --dex ./bin lib/commons-cli-1.5.0.jar
  • --output=helloworld.jar: 指定输出的dex文件的名称为helloworld.jar
  • --dex: 指定执行dex转换操作
  • ./bin: 要转换的Java类文件所在目录(刚刚生成的)
  • lib/commons-cli-1.5.0.jar: 额外的jar库文件,包含可能需要的额外类

2. d8方式:

./Android/sdk/build-tools/33.0.1/d8 --release lib/commons-cli-1.5.0.jar bin/Helloworld.class  --output helloworld.jar
  • --release:启用release模式优化转换
  • lib/commons-cli-1.5.0.jar:额外的jar库文件
  • bin/Helloworld.class:要转换的Java类文件
  • --output helloworld.jar:输出的dex文件

3. 上传文件

由于需要在Android环境中操作,所以我们先写一个 helloworld.sh 执行命令,该命令的好处是不用一直敲很多命令,直接执行这个.sh文件即可。文件中定义了jar运行的环境,然后最重要一个命令即 “exec app_process” 在Andorid环境中执行jar命令。

base=/data/local/tmp/helloworld
export CLASSPATH=$base/helloworld.jar
export ANDROID_DATA=$base
mkdir -p $base/dalvik-cacheexec app_process $base com.xing.HelloWorld "$@"

其它命令这里就不说了,主要聊一下 app_process的用法:

  • app_process:用于启动一个Android应用进程的执行文件,位于/system/bin目录下
  • $base:Jar包的路径,需要替换为实际的Jar包文件名
  • HelloWorld:这个是Jar包内的主类,也需要修改为实际的主类名
  • "$@":表示传递给Java程序的参数,$@会扩展成所有参数形式传递进去

那么定义完成 helloworld.sh文件只,主体文件目录就应该如下了:

|-bin
|  |____com/xing/HelloWorld.class
|
|-lib
|  |____commons-cli-1.5.0.jar
|
|-src
|  |____com/xing/HelloWorld.java
|
|-helloworld.jar
|-helloworld.sh 

那么我们就需要将目标文件上传到android中了,基本命令如下:

  1. 创建临时文件夹helloworld

    adb shell mkdir -p /data/local/tmp/helloworld
    
  2. 将helloworld.jar push到临时helloworld文件夹中:

    adb push helloworld.jar /data/local/tmp/helloworld
    
  3. 将helloworld.sh push到临时helloworld文件夹中:

    adb push helloworld.sh /data/local/tmp/helloworld
    
  4. 给helloworld.sh提权,使得其有可执行权限

    adb shell chmod 777 /data/local/tmp/helloworld/helloworld.sh
    
  5. 直接执行代码:

    adb shell /data/local/tmp/helloworld/helloworld.sh -p
    

这里的 -p 是我自定义添加的,如果一切运行正常,那么就应该可以看到运行的结果了:

当然,如果你有什么疑问的话,可以与我一起探讨,可以加我v:javainstalling,备注[Jar]即可。

http://www.laogonggong.com/news/52485.html

相关文章:

  • 为政府做网站的公司seo公司推荐推广平台
  • 上海网站建设的意义百度收录链接提交入口
  • 常宁网站建设关键词的优化和推广
  • 天津河东做网站哪家好营销培训
  • 英语做美食网站网站站点查询
  • 专做特卖的网站百度广告怎么收费标准
  • matlab做网站关键词搜索工具爱站网
  • 张家港企业做网站牛排seo
  • 包头企业微网站开发新闻稿件代发平台
  • 上海专业网站建设报价单怎样做推广是免费的
  • 网站建设加数据库百度seo关键词优化推荐
  • 怎么让公司网站随便就搜的到长春刚刚最新消息今天
  • 新闻网站开发教程重庆人力资源和社会保障网官网
  • 培训学校网站系统石家庄seo网站管理
  • 做网站设计所遇到的问题seo网站优化快速排名软件
  • 网站正在维护中 模板网络推广是干嘛的
  • 凡科真的是免费做企业网站网上销售哪些平台免费
  • 深圳三级分销网站设计制作百度公司招聘2022年最新招聘
  • 装修公司网站怎么做上海搜索推广
  • 聊城建设委员会官方网站网站怎么做外链
  • 金山网站建设seo优化标题
  • 网站启动画面自动优化app
  • 计算机毕设代做网站seo外包杭州
  • 免费建站哪家性价比高搜狗seo软件
  • 手机上怎么做自己卖菜的网站网站seo工具
  • 网站维护工作济南百度
  • 徐州模板建站平台网站维护是做什么的
  • 关于网站建设电话销售的话术添加友情链接的技巧
  • 广州seo网站多少钱品牌推广方式都有哪些
  • 微信微网站制作武汉seo服务