Подписание .apk-файла с помощью утилиты jarsigner

Подписание .apk-файла с помощью утилиты jarsigner

Утилита keytool, описанная в предыдущем разделе, создает цифровой сертификат, который является одним из параметров средства jarsigner. Другой параметр — это Android-пакет, который необходимо подписать. Чтобы сгенерировать Android-пакет, необходимо использовать утилиту Export Unsigned Application Package (Экспорт неподписанного пакета приложения) из модуля ADT для Eclipse. Для вызова этой утилиты понадобится щелкнуть в Eclipse правой кнопкой мыши на Android-проекте, выбрать в контекстном меню пункт Android Tools (Средства Android), а затем выбрать вариант Export Unsigned Application Package (Экспорт неподписанного пакета приложения). После запуска эта утилита генерирует .apk-файл, не подписанный с помощью отладочного сертификата.

Чтобы опробовать все это, запустите утилиту Export Unsigned Application Package для одного из своих Android-проектов и сохраните где-нибудь сгенерированный .apk- файл. В данном примере мы используем ранее созданную папку хранилища ключей и сгенерируем .apk-файл по имени C:\android\release\myappraw.apk.

Теперь у нас имеется .apk-файл и элемент хранилища ключей, и можно запустить инструментальное средство jarsigner, чтобы подписать .apk-файл (см. 14.2). При этом для файла хранилища ключей и .apk-файла должны быть указаны полные пути.

Для подписания .apk-файла утилите jarsigner передается местоположение хранилища ключей, пароль хранилища ключей, пароль секретного ключа, путь к .apk-файлу и псевдоним элемента хранилища ключей. После этого jarsigner подписывает .apk- файл с помощью цифрового сертификата из элемента хранилища ключей. Для запуска утилиты jarsigner нужно либо открыть окно инструментов (см. главу 2), либо открыть окно командной строки или окно Terminal (Терминал) и открыть папку bin в каталоге

JDK (если эта папка не прописана в переменной среды PATH). По соображениям безопасности пароли лучше не передавать в качестве аргументов команды, тогда jarsigner предложит ввести пароли во время выполнения. На рис. 14.3 показан пример вызова утилиты jarsigner. Вы могли заметить, что на рис. 14.3 утилита jarsigner запрашивает только один пароль. Это объясняется тем, что пароль keypass не запрашивается, если storepass и keypass совпадают. Строго говоря, команде jarsigner в е 14.2 необходимо указывать пароль -keypass только тогда, когда он отличается от пароля — storepass.

Как уже было сказано, Android требует подписания приложения цифровой подписью, чтобы злоумышленники-программисты не могли заменить ваше приложение своей версией. Для этого Android требует, чтобы обновления приложения были подписаны той же подписью, что и исходное приложение. Если приложение подписано другой подписью, Android считает такие приложения разными. Поэтому еще раз напоминаем: аккуратно обращайтесь с файлом хранилища ключей, чтобы он был доступен вам позже, когда понадобится выпускать обновление приложения.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий