【问题标题】:Read and write multiple commands on command prompt through java program通过java程序在命令提示符下读写多个命令
【发布时间】:2017-04-09 19:23:53
【问题描述】:

我正在尝试使用位于 jdk/bin 文件夹中的 apksigner 和 zipalign 工具对 apk 进行签名。我已经为它设置了路径环境变量。现在我想做的是,执行一些shell命令,通过ubuntu中的java代码签署我的apk。命令是,

command-1:

keytool -genkey -v -keystore /Desktop/my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias app

此命令在运行时需要一些输入,例如名字姓氏等。

command-2:

./zipalign -v 4 inputAPK.apk outputAPK.apk

command-3:

apksigner sign --min-sdk-version 15 --ks my-release-key.jks outputAPK.apk

command-4:

apksigner verify --min-sdk-version 15 outputAPK.apk

以上4条命令我想在ubuntu环境下通过java代码执行,如何实现?

【问题讨论】:

  • 您遇到了什么问题?
  • 其实我是java编程新手,所以不知道确切的解决方案,我的意思是如何通过java程序执行以上4个命令以及在运行时如何将输入发送到ubuntu 中的命令行。
  • 我尝试使用您建议的链接,但是在运行第二个命令时出现异常,例如 java.io.IOException: Cannot run program "zipalign -v 4 myInput.apk myOutput.apk": error=2,没有这样的文件或目录

标签: java cmd ubuntu-14.04 command-line-arguments


【解决方案1】:

哦,k。您可以使用java.lang.Runtime.exec 来运行简单的代码。看看这些网站:

http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String)

http://alvinalexander.com/java/edu/pj/pj010016

https://www.mkyong.com/java/how-to-execute-shell-command-from-java/

您也可以使用Process.getOutputStream() 方法获取输入。您输入的任何数据都将传递到您的输入流。

【讨论】:

  • 我尝试使用您建议的链接,但是在运行第二个命令时出现异常,例如 java.io.IOException: Cannot run program "zipalign -v 4 myInput.apk myOutput.apk": error=2,没有这样的文件或目录
  • 在这种情况下,要么您指向错误的位置,如错误所示...要么您需要这样做 - sudo apt-get update sudo apt-get install gcc-multilib lib32z1 lib32stdc++6
  • zipalign 工具位于 Android/sdk/build tools/24.0.3/zipalign。我已经在环境变量中找到了这个路径,但即使没有工作。
  • 你的操作系统怎么样? x64 还是 x32。?还要检查你的 build.xml。
  • 嘿! this post 可以帮到你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
相关资源
最近更新 更多