2014-01-04 3 views
75

Я искал в Google и SO, но не могу найти ответ.Android Studio: как сгенерировать подписанный apk с помощью Gradle?

Это первый раз, когда я работаю с системой градиентов, и теперь я собираюсь создать подписанный APK для загрузки в игру Google (проект импортируется из eclipse).

Теперь я прочитал часть здесь http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Building-and-Tasks, что вы должны добавить к вашему signingConfigsbuild.gradle

Я добавил эти строки, и теперь я увидел, что вам нужно запустить ./gradlew assembleRelease, но работает это в Gradle моего CMD возвращает» 'не распознается как внутренняя или внешняя команда, управляемая программа или командный файл. Я также попытался щелкнуть правой кнопкой мыши по build.gradle и запустить его, указав, что это было успешно, но как только я смотрю в папке build/apk, только файл под названием

Итак, как мне сгенерировать подписанный apk, используя Грейд-система?

+1

См. http://stackoverflow.com/questions/20876069/using-android-studio-how-do-i-get-a- signed-non-debug-and-zip-aligned-apk/20876737 # 20876737 –

+0

@ScottBarta Частично сделал трюк, как только я переключился в режим деблокирования и запустил градлу, у меня все еще появилась ошибка, но с помощью he build> generate signed apk via меню в итоге получилось! Спасибо, что поддержал вас по предоставленной ссылке. – Gooey

ответ

89

Есть три способа создания вашей сборки согласно buildType. (В вашем случае, это освобождение, но это можно назвать все, что вы хотите.)

  1. Перейти к Gradle задачи в правой панели Android Studio и поиск assembleRelease или assemble(#your_defined_buildtype) под модулем Задачи

  2. Перейдите в построить вариант в левой панели и выберите сборку из выпадающего

  3. Перейти к проецировать корневой каталог в файл Исследовать и открытый CMD/терминал и выполните команду:

    Linux: ./gradlew assembleRelease or assemble(#your_defined_buildtype)

    Окна: gradlew assembleRelease or assemble(#your_defined_buildtype)

Если вы хотите сделать релиз сборки (только), вы можете использовать Построить>Генерирование Подпись APK. Для других типов сборки доступны только три вышеуказанные опции.

Вы можете найти сгенерированный APK в своем module/build каталоге, в котором есть имя типа сборки.

+4

Это приведет к созданию подписанного apk, если у вас есть конфигурация сборки в файле build.gradle. Если вы сохраните это в инструментах управления исходным кодом или поделитесь им с другими людьми, вы должны подумать об отмене учетных данных вашего ключа подписи из исходного кода. – Janusz

+0

Build> Generate Signed apk ... это так же просто, как это – Atul

-1

меню сборки> Generate подписал APK

+0

Если вы запустите это, он сообщает вам, что это не способ сделать это. Кроме того, если я загружаю этот файл .apk, возникает ошибка, указывающая на то, что обнаружены ошибки или что-то еще. – Gooey

+11

говорится, что отладка продолжается ... в студии Android, слева, должна быть вкладка с надписью «варианты сборки» ... нажмите на нее и переключите все с «debug» на «release» ... после что, сгенерированный подписанный apk снова ... – trickedoutdavid

+2

Это больше не работает! Например, APK, который он создает, имеет значение BuildConfig.DEBUG равным true. Это не вызвало у меня никаких проблем, теперь вы должны использовать метод gralew assembleRelease. –

46

Это можно взять любой существующий Gradle проект Android Studio и построить/подписать его из командной строки без редактирования файлов.Это делает его очень хорошо для хранения вашего проекта в системе управления версиями, сохраняя при этом свои ключи и пароли отдельно:

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD 
+1

Так как нам нужно передать исходный код компаньону, это лучший способ сохранить секретный материал в хранилище ключей. Благодарю. – Yeung

+1

в любом случае, чтобы узнать эти ** android.injected.signing. *** свойства существования? – Sanny

+0

Я получил эту информацию от Xav от команды Android Studio, и я не знаю, есть ли другие переменные, подобные этому. –

18

Вы можете использовать этот код

android { 
    ... 
    signingConfigs { 
     release { 
      storeFile file("../your_key_store_file.jks") 
      storePassword "some_password" 
      keyAlias "alias_name" 
      keyPassword "key_password" 
     } 
    } 

    buildTypes { 

     release { 
      signingConfig signingConfigs.release 
     } 
    } 
    ... 
} 

затем с вашего терминала запуска

gradle assembleRelease 

вы получите apk по адресу

ваш андроид-ап p/build/output/apk/your-android-app-release.apk

+0

Не работает. – ozcanovunc

+0

@ozcanovunc, пожалуйста, проверьте свой путь к хранилищу ключей, возможно, ваш путь определен неправильно. –

Смежные вопросы