Выберите строку меню/Создать/Создать подписанный пакет/Параметры APK,
В появившемся позже диалоговом окне «Создать подписанный пакет или APK» нажмите кнопку «Создать новый».
Введите пароль jks, имя ключа и пароль ключа в следующем диалоговом окне;
Пароли все
Генерация результатов:
ссылка 【Android Безопасность】DEX шифрование ( DEX Сопутствующий инструмент, используемый шифрованием | dx инструмент | zipalign Выравниваниеинструмент | apksigner знакинструмент ) в блоге apksigner Как пользоваться знакинструментом ,
знак Заказссылка :
apksigner sign --ks Путь к документу jks --ks-key-alias Псевдонимимя --ks-pass pass:jskпароль --key-pass пароль: псевдоним пароля --out out.apk in.apk
Фактический запуск подписанной команды:
D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/apksigner sign –ks D:\002_Project\002_Android_Learn\DexEncryption\dex.jks –ks-key-alias Key0 –ks-pass pass:000000 –key-pass pass:000000 –out D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-signed-aligned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk
Полный пример кода:
/*
5 . знакдействовать */
// знак apk результат вывода, Воля app-unsigned-aligned.apk знак, документ после знака выводится в app-signed-aligned.apk середина
var signedAlignApk = File("app/build/outputs/apk/debug/app-signed-aligned.apk")
// Получить знак jks документ
var jksFile = File("dex.jks")
// Распечатайте команду для выполнения
println("cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/apksigner sign --ks ${jksFile.absolutePath} --ks-key-alias Key0 --ks-pass pass:000000 --key-pass pass:000000 --out ${signedAlignApk.absolutePath} ${unSignedAlignApk.absolutePath}")
/*
Воля app-unsigned.apk Выравнивание
использовать zipalign инструмент Заказ Уведомление : Windows Команде командной строки должно предшествовать "cmd /c " информация , Linux и MAC Нет необходимости добавлять командную строку
*/
process = Runtime.getRuntime().exec("cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/apksigner sign --ks ${jksFile.absolutePath} --ks-key-alias Key0 --ks-pass pass:000000 --key-pass pass:000000 --out ${signedAlignApk.absolutePath} ${unSignedAlignApk.absolutePath}")
// Распечатать журнал ошибок
var br = BufferedReader(InputStreamReader(process.errorStream))
while ( true ){
var line = br.readLine()
if(line == null){
break
}else{
println(line)
}
}
br.close()
// Подождите, пока указанная выше команда завершит выполнение.
process.waitFor()
// Запрос результата выполнения
if(process.exitValue() == 0){
println("Символьная операция Выполнение успешно");
} else {
println("Символьная операция Выполнение не удалось");
}
Результаты сгенерированного файла подписи : в красном прямоугольнике app-signed-aligned.apk Он создан apk Файл подписи ;
Вывод командной строки: в основном отображает полную команду;
cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/apksigner sign --ks D:\002_Project\002_Android_Learn\DexEncryption\dex.jks --ks-key-alias Key0 --ks-pass pass:000000 --key-pass pass:000000 --out D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-signed-aligned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk
знакдействовать Выполнено успешно
Обработка неподдерживаемых ошибок major.minor версии 52.0:
Произошла ошибка : потому что компьютер на Java версия ниже, чем Android Studio в Java Версия ;
C:\Users\octop>D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/apksigner sign --ks D:\002_Project\002_Android_Learn\DexEncryption\dex.jks --ks-key-alias Key0 --ks-pass pass:000000 --key-pass pass:000000 --out D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-signed-aligned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
C:\Users\octop>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
Волякомпьютер本身的 JDK обновлен до 1.8 Вот и все ;