Сборка релиза Android apk на Phonegap 3.x CLI

108

Как я могу создать приложение для Android локально с помощью интерфейса командной строки Phonegap 3.x, готового к выпуску? Я проверяю папку bin, созданную внутри каталога platform / android проекта, и в ней есть только APK .debug.

Кстати, я использую эту команду: phonegap local build android

Гильермо Гутьеррес
источник

Ответы:

153

Это для Phonegap 3.0.x - 3.3.x. Для PhoneGap 3.4.0 и выше см. Ниже .

Нашел часть ответа здесь , в документации по телефонной связи. Полный процесс выглядит следующим образом:

  1. Откройте окно командной строки и перейдите по пути / путь / к / вашему / проекту / платформам / android / cordova .

  2. Беги build --release. Это создает неподписанный выпуск APK в папке / path / to / your / project / platform / android / bin с именем YourAppName-release-unsigned.apk.

  3. Подпишите и выровняйте APK, следуя инструкциям в официальных документах разработчика Android .

Спасибо @LaurieClark за ссылку ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ) и блоггера, который его публикует, потому что он поставил меня на рельсы.

Гильермо Гутьеррес
источник
9
Мне пришлось вручную изменить свой файл AndroidManifest.xml, на который мне <application android:debuggable="true"...нужно было изменить<application android:debuggable="false"
Ян Джеймисон
3
Вы также должны заархивировать файл после: zipalign -v 4 your-unaligned.apk your-align.apk
Дамиан
13
Я бег Кордовы 3.4.1-0.1.0 и файл создается в/path/to/your/project/platforms/android/ant-build
AlexStack
1
Похоже, что, если быть точным, это для phonegap 3.0.x до 3.3.x, от 3.4.x и далее это может варьироваться.
Гильермо Гутьеррес
Большое спасибо, Гильермо. +1
Quick_Silver
112

В PhoneGap 3.4.0 вы можете позвонить:

cordova build android --release

Если вы настроили файл ant.properties в каталоге platform / android, как показано ниже:

key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp

Затем вам будет предложено ввести пароль хранилища ключей, а выходной файл (myapp-release.apk) окажется в каталоге «platform / android / ant-build», уже подписанном, согласованном и готовом к развертыванию.

Стивен Андерсон
источник
1
Текущая версия 3.4.0 Cordova не включает файл «ant-properties».
SteAp
8
Созданный ant.propertiesв platforms/androidи просто бросил эти два свойства в него. Отлично работает, спасибо!
Адам Таттл
6
Если вы не уверены в хранилище ключей / псевдониме или в том, как их создать, полная информация доступна на сайте developer.android.com/tools/publishing/app-signing.html
Шай,
6
Также обратите внимание, что вы можете указать свойства key.store.password и key.alias.password в этом файле, поэтому вам не придется вводить их каждый раз при сборке выпуска. Конечно, будьте осторожны и не фиксируйте этот файл в системе версий.
vbezhenar
5
Для cordova 5.0.0 и выше создайте build.json в корне вашего проекта и заполните его {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} вместо файла ant.properties. FYI cordova.apache.org/docs/en/edge/…
artberri
19

В кордове 6.2.0

cd cordova/ #change to root cordova folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any

Предыдущий ответ:

По данным cordova 5.0.0

{
     "android": {
         "release": {
             "keystore": "app-release-key.keystore",
             "alias": "alias_name"
         }
     }
 }

и запустить ./build --release --buildConfig build.jsonиз каталогаplatforms/android/cordova/

расположение файла хранилища ключей относительно platforms/android/cordova/, поэтому в приведенном выше .keystoreфайле конфигурации и build.jsonнаходится в том же каталоге.

keytool -genkey -v -keystore app-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Кришна
источник
15

Вслед за @ steven-anderson вы также можете настраивать пароли внутри ant.properties, чтобы процесс можно было полностью автоматизировать.

поэтому, если вы поместите в platform \ android \ ant.properties следующее

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Симоне Авогадро
источник
1
В Windows вы должны избегать косых черт ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

просто много размышлял, потому что у меня была такая же проблема, но в моей установке команда «cordova» никогда не была доступна, а «phone gap build android --release» просто игнорировал платформу / android / ant.properties.

Итак, заглянув внутрь своего фильтра платформы, я обнаружил папку с именем «cordova» и внутри нее был двоичный файл «build», который принял аргумент --release, он запросил у меня цепочки ключей, и я закончил подписанным и готовым к производству APK.

это никогда не было задокументировано ни в одной части сайта, посвященного разрывам телефонов, и, честно говоря, теперь я ненавижу телефонные разговоры :( Предполагалось, что это упростит задачу, но все было просто сложно :(

Freaktor
источник
2

Создание приложения PhoneGap для Android для развертывания в Google Play Store

Эти шаги подойдут для Cordova, PhoneGap или Ionic. Единственная разница будет заключаться в том, что где бы ни был размещен вызов cordova, замените его на phonegapили ionicдля вашего конкретного сценария.

Когда вы закончите разработку и будете готовы к развертыванию, выполните следующие действия:

  1. Откройте окно командной строки (Терминал в macOS и Linux ИЛИ Командная строка в Windows).

  2. Перейдите в / путь / к / вашему / проекту /, который мы будем называть корнем проекта.

  3. Находясь в корне проекта, удалите плагин «Консоль» из своего набора плагинов.

    Команда такая:cordova plugin rm cordova-plugin-console

  4. Находясь в корне проекта, используйте команду cordova build, чтобы создать APK для распространения выпуска.

    Команда такая:cordova build --release android

  5. Вышеупомянутый процесс создает файл с именем android-release-unsigned.apkв папкеProjectRoot/platforms/android/build/outputs/apk/

  6. Подпишите и выровняйте APK с помощью инструкций на странице https://developer.android.com/studio/publish/app-signing.html#signing-manually.

    В конце этого шага полученный APK можно загрузить в Play Store. .

Примечание: как новичку или новичку, последний шаг может быть немного запутанным, как и меня. Можно столкнуться с несколькими проблемами и у вас могут возникнуть вопросы относительно того, что это за команды и где их найти.

Q1. Что Jarsigner и Keytool ?
Ans: The Android App инструкции Подписание этого вам сказать , что конкретно Jarsigner и Keytool все о НО это не говорит вам , где найти их , если вы столкнетесь с «команда не найдена ошибка» в окне командной строки.

Таким образом, если у вас есть Java Development Kit (JDK), добавленный в вашу переменную PATH , простой запуск команд, как в Руководстве, будет работать. НО, если у вас его нет в вашем PATH, вы всегда можете получить к ним доступ из папки bin вашей установки JDK.

Q2. Где Zipalign ?
Ответ: высока вероятность не найти команду zipalign и получить ошибку «команда не найдена». Вы, наверное, искали бы в Google zipalign и где его найти? Zipalign утилита присутствует в папке установки Android SDK. В macOS расположение по умолчанию - . Если вы над головой в папке вы найдете кучу других папок , как , , , , ... Открыть в папке. . Здесь будет несколько папок, версия которых будет меняться в соответствии с цепочкой инструментов сборки, которую вы используете в Android SDK Manager. ZipAlign

user-name/Library/Android/sdk/docsplatform-toolsbuild-toolstoolsadd-ons

build-toolscd build-toolsдоступен в каждой из этих папок. Я лично ищу папку с последней версией. Открыть любой.

В macOS или Linux вам, возможно, придется использовать, ./zipalignа не просто вводить, zipalignкак упоминается в документации. В Windows zipalignдостаточно хорошо.

incorelabs
источник
1

Я заставил это работать, скопировав и вставив подписанное приложение в тот же каталог, что и zipalign. Похоже, что aapt.exe не может найти исходный файл, даже если указан путь. т.е. это не сработало zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk он достиг aapt.exeCordovaApp-release-unsigned.apk, завис и после нажатия return 'aapt.exeCordovaApp-release-unsigned.apk' не распознается как внутренняя или внешняя команда, работающая программа или командный файл. И это сделал zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

Роберт Дево
источник
Спасибо за чаевые. Вы также можете включить путь к папке zipalign в переменную среды PATH.
Гильермо Гутьеррес
0

Я знаю, что этот вопрос касается конкретно Phonegap 3.X, но для справки любая версия Phonegap выше 4.0.0 использует Gradle вместо Ant для сборки по умолчанию. Чтобы использовать Ant вместо Gradle, вы можете добавить это в свой config.xml:

<preference name="android-build-tool" value="ant" />

При использовании Gradle информация для подписи хранилища ключей теперь должна перейти в новое место ( как описано в этом сообщении ). Создайте новый файл с именем ' release-signing.properties ' в той же папке, что и файл "build.gradle", и поместите в него следующее содержимое:

storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
юлианский
источник
-7

Вы можете попробовать эту команду, она должна собрать и запустить приложение (поэтому должен быть создан .apk):

phonegap local run android

Лори Кларк
источник
3
Он по-прежнему создает только отладочные APK.
Гильермо Гутьеррес
2
Нет, он просто создает отладочные подписанные APK, а не выпускает APK.
Гильермо Гутьеррес
1
Нашел решение здесь (3/4 пути вниз: «Завершить apk для загрузки в Google Play»): iphonedevlog.wordpress.com/2013.08.16/…
Лори Кларк