2016-11-25 10 views
0

Я пытаюсь подписать apk с помощью apksigner и zipalign инструментов, которые находятся в папке jdk/bin. Я уже установил для него переменную окружения. Теперь, что я хочу сделать, выполните некоторые команды оболочки, которые подписывают мой apk через java-код в ubuntu. Команды,Чтение и запись нескольких команд в командной строке через java-программу

командно-1:

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

Эта команда требует несколько входов во время выполнения, как первое имя фамилия и т.д.

командно-2:

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

command-3:

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

командной 4:

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

Все выше 4 команды, которые я хочу, чтобы выполнить его с помощью кода Java в Ubuntu среде, как я могу добиться этого?

+0

В чем проблема, с которой вы столкнулись? –

+0

На самом деле я новичок в программировании на Java, поэтому не знаю точное решение для него, я имею в виду, как я могу выполнить выше 4 команд через java-программу, а также во время выполнения, как я могу отправлять входы в командную строку в ubuntu. –

+1

Возможный дубликат [Выполнять команды cmd через java] (http://stackoverflow.com/questions/15464111/run-cmd-commands-through-java) –

ответ

1

Ох. Вы можете использовать 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() метод, чтобы получить вход. Независимо от того, какие данные вы вводите, будет передан ваш входной поток.

+0

Я попытался использовать ссылку, которую вы предложили, но во время выполнения второй команды, получающей исключение, например, java .io.IOException: не удается запустить программу «zipalign -v 4 myInput.apk myOutput.apk»: ошибка = 2, нет такого файла или каталога –

+0

В этом случае вы указываете на неправильное местоположение, поскольку ошибка говорит ... или вам нужно это сделать - 'sudo apt-get update sudo apt-get install gcc-multilib lib32z1 lib32stdC++ 6' –

+0

zipalign tool находится в Android/sdk/build tools/24.0.3/zipalign. Я уже нашел этот путь в переменной среды, но даже не работал. –