Cordova сборка под android

Blog RSS Feed

We are happy to announce that we have just released Cordova Android 10.0.0 ! This is one of Cordova’s supported platforms for building Android mobile applications.

To upgrade:

Release Highlights

AndroidX Only Support

In this release, we have completely migrated to the AndroidX library and no longer support the Android Support Library. All plugins that continue to use the Android Support Library will need to be updated to reference the new AndroidX library.

If plugins have not been updated, you can still use the cordova-plugin-androidx-adapter plugin, which can be used to migrate the legacy references to the new AndroidX references.

WebViewAssetLoader Support

By default, the WebViewAssetLoader is enabled and allows apps to serve their content from a ‘proper’ origin. This will makes routing work easily for frameworks like Angular.

With no additional configurations, the app content is served from https://localhost/ . You can configure the hostname by setting the preference option hostname .

The scheme, https , is not configurable by nature.

Please note that this is a breaking change that will cause data associated with the file:// scheme, such as cookies, local storage, local cache, and web-based databases, to be lost. You will need to handle the migration of data. If you are unable to migrate the data at this time, you can revert this setting by setting the AndroidInsecureFileModeEnabled preference flag.

Setting this flag will keep the content on the file:// scheme, which Google reports to be insecure.

Android App Bundles aab Support

By default, release builds will now generate an aab formatted package type for release.

By nature, aab packages can not be deployed or pushed manually to a device for testing. If you need to test a release build, you will need to change the package type back to apk with the packageType flag.

Debug builds will continue to create an apk formatted package.

Tooling and Default Support Bump

  • Target SDK ( targetSdk ): 30
  • SDK Build Tool: 30.0.3
  • Gradle: 7.1.1
  • Kotlin: 1.5.20
  • Android Gradle Plugin (AGP): 4.2.2
  • Google Services Gradle Plugin: 4.3.5

Node Support

Since Node 10 is no longer being supported by the Node.js team, we have dropped support for Node 10.

Java 11 Support

With the current release of Android Studio 4.2, the Android tooling can now support running on Java 11. Please note that this does not mean you can start compiling Java 11 source code.

Please report any issues you find at issues.cordova.io!

Notice of Issue

There is a known issue for users or plugins that enable the Google Services Gradle plugin.

We are preparing and aiming for a patch release vote within the next three days.

Full Changelog

Breaking:

  • GH-1052 feat!: only support AndroidX
  • GH-1137 feat!: implement WebViewAssetLoader
  • GH-1268 feat!: release build defaults to aab package type
  • GH-1182 feat!: bump target sdk@30 w/ build-tool@30.0.3
  • GH-1257 feat!: upgrade gradle@7.1.1
  • GH-1197 feat!: upgrade gradle@6.8.3
  • GH-1256 feat!: upgrade kotlin@1.5.20
  • GH-1204 feat!: upgrade kotlin@1.4.32
  • GH-1200 feat!: upgrade kotlin@1.4.31
  • GH-1255 feat!: upgrade android-gradle-plugin@4.2.2
  • GH-1232 feat!: upgrade android-gradle-plugin@4.2.1
  • GH-1198 feat!: upgrade android-gradle-plugin@4.1.3
  • GH-1199 feat!: upgrade Google Services Gradle Plugin@4.3.5
  • GH-1262 feat!: bump appcompat@1.3.0
  • GH-1258 feat!: bump android.webkit@1.4.0
  • GH-1252 feat!: drop abandoned com.github.dcendents:android-maven-gradle-plugin
  • GH-1212 feat!: unify & fix gradle library/tooling overrides
  • GH-1138 feat(allow-list)!: integrate and refactor core plugin
  • GH-1201 feat!: upgrade jfrog gradle-bintray-plugin@1.8.5
  • GH-1279 chore!: bump all dependencies
  • GH-1278 chore!: drop node 10 support
  • GH-1205 chore! ( npm ): update all dependencies
  • GH-1274 cleanup!: remove deprecated settings & add todo comments
  • GH-1048 cleanup!: remove keystore password prompt
  • GH-1251 cleanup!: drop jcenter & update dependencies
  • GH-1269 refactor!: do not copy JS lib to platform project
  • GH-1270 refactor(Api)!: use version from package.json
  • GH-1266 refactor(run)!: run method
  • GH-1083 refactor!: drop support for android SDK tool
  • GH-1100 refactor!: remove most platform binaries
Читайте также:  Text edit для android

Features:

  • GH-1241 feat: remove java 1.8 version check
  • GH-1254 feat: support webkit version override
  • GH-1229 feat: CORDOVA_JAVA_HOME env variable
  • GH-1222 feat: add backwards compatibility mode for WebViewAssetLoader
  • GH-1166 feat: overload PluginEntry constructor to set onload property
  • GH-1208 feat: allow appcompat version to be configurable
  • GH-1047 feat: Deprecated onRequestPermissionResult in favour for onRequestPermissionsResult for consistency

Fixes:

  • GH-1283 fix: add missing apache-license header to getASPath.bat
  • GH-1275 fix: add WebViewAssetloader to default allow list
  • GH-1216 fix: request focus after custom view hided
  • GH-1264 fix: missing super.onRequestPermissionsResult error ( MissingSuperCall )
  • GH-563 fix(build): support tilde expansion on Windows
  • GH-1220 fix( requirements check): use regex to get java version from javac output
  • GH-1227 fix(prepare): delete splash screens if none are used
  • GH-1228 fix: java checks
  • GH-1276 fix: remove forced default gradle.daemon setting

Refactors:

  • GH-1265 refactor: do not infer project root from script location
  • GH-1267 refactor: use target SDK of built APK to determine best emulator
  • GH-1253 refactor: gradle cleanup
  • GH-1260 refactor( check_reqs ): drop originalError param from check_android_target
  • GH-1246 refactor( env/java ): improve tests and implementation

Chores & Cleanup:

  • GH-1273 chore: remove old VERSION file
  • GH-1272 cleanup: delete old ANT & Eclipse files
  • GH-1141 cleanup: remove app cache settings

CI, Build & Testing:

  • GH-1218 ci: Add Node16 to CI matrix
  • GH-1271 build: build cordova.js during npm prepare
  • GH-1207 test( AndroidManifest ): update theme to Theme.AppCompat.NoActionBar
  • GH-1263 test( check_reqs ): do not hardcode DEFAULT_TARGET_API
  • GH-1259 test( prepare ): factor out common vars

We are happy to announce that we have just released an update.

Источник

Сборка гибридного приложения под Android

Многие считают, что гибридные приложения не могут иметь хорошую производительность, особенно в плане построения страницы (то есть имеют низкий FPS). Это ошибочное мнение. Если умело собрать приложение, то можно добиться хороших показателей. В статье рассмотрен пример сборки такого гибридного приложения под Android в Windows 7 (хотя для iOs будет почти тоже самое).

Допустим, у нас есть готовое приложение на HTML5, в котором вывод изображения полностью производиться через элемент Canvas (я использовал Phaser framework, 50 движущихся спрайтов). На ПК данное приложение запускается без проблем (60 FPS). На топовых фирменных смартфонах тоже все хорошо (50-60 FPS). Но если мы возьмем средненький планшет, результат будет просто ужасным (3-15 FPS), даже не смотря на хорошие характеристики устройства.
Поэтому нашей целью является создание полностью готового для публикации apk с хорошими показателями производительности.

На данный момент существуем множество инструментов для достижения данной цели. Наиболее популярные из них:
• Cordova
• Ludei
• Intel XDK

Проект Ludei (Cocoon.js) производит построение приложение в облаке, достаточно прост в понимании концепции. Советую обратить внимание на клиентское приложение CocoonJS Launcher App, которое позволяет легко производить отладку приложения прямо на устройстве. Это может очень помочь при разработке приложения. Но использовать данный сервис для построения приложения не советую, т.к. имеется достаточно много багов и в приложение добавляется фирменная заставка.

Читайте также:  Переместить кнопки навигации андроид

Intel XDK – это отличный инструмент, с которого я советую начать. Построение приложения так же производиться в облаке. По сути Intel XDK представляет собой удобное GUI для Cordova c полным набором настроек, плагинов и эмулятором.

С помощью Cordova построение производиться уже на вашем компьютере. Это подход имеет всего два преимущества:
• Сборка производиться быстрее,
• Используются последние версии компонентов.
При этом есть недостаток:
• Требуется организовать окружение.
В статье мы будет рассматривать именно последний вариант, так как с ним в основном возникают проблемы, и так как в итоге вы все равно или поздно перейдете на него.

И так начнем. Устанавливаем:

  1. Node.js
  2. git клиент
  3. Java Development Kit (JDK) 7
  4. Android Studio

Далее открываем Android SDK Manager и устанавливаем:
• Android 5.1.1 (API 22) platform SDK
• Android SDK Build-tools version 19.1.0 или выше
• Android Support Repository (Extras)

Затем в Android Studio сгенерируем набор ключей для подписи apk. Для этого в меню выбираем Build > Generate Signed APK. В открывшемся окне нажимаем Create new. Откроется новое окно, в котором вводим все данные (данные, естественно, сами запоминаем).

После всего можно закрыть Android Studio и больше никогда не открывать.

Затем нужно изменить переменную окружения PATH:
1. Нажмите на меню » Пуск » в левом нижнем углу рабочего стола, щелкните правой кнопкой мыши на Мой комьютер, а затем нажмите кнопку Свойства.
2. Нажмите кнопку Дополнительные параметры системы в столбце слева.
3. В открывшемся диалоговом нажмите Переменные среды.
4. Выберите переменную PATH и нажмите редактировать.
5. Добавьте следующее в PATH, в зависимости от того куда был установлен пакет SDK (у меня f:\AndroidSDK), например:

C:\Users\Root\AppData\Local\Android\sdk\tools;c:\Program Files\Ant\bin;C:\Users\Root\AppData\Roaming\npm;f:\AndroidSDK\platform-tools;f:\AndroidSDK\tools

6. Сохраните значение и закройте оба диалоговые окна.

А только теперь, собственно, устанавливаем Cordova. Открываем командную строку и запускаем:

npm install -g cordova

Затем создаем свой проект. Для этого выполним команду следующего вида:

cordova create projectDirectory com.companyName.appName AppName

Данная команда имеет следующие параметры:
projectDirectory – директория вашего проекта.
com.companyName.appName — указывает идентификатор вашего проекта в обратном формате доменных имен.
AppName — указывает отображаемое имя приложения.
Все эти параметры можно легко поменять позже в файле config.xml.
После выполнения команды будет создан каталог вашего проекта. В этом каталоге будет находиться директория www, в которой будут файлы страницы приложения по умолчанию. Удалите содержимое данной директории и скопируйте в неё файлы вашего web-приложения. Стартовый файл назовите index.html.

Далее работаем уже в директории проекта.

cd hello

Перед тем, как можно будет построить проект, необходимо указать набор целевых платформ. В статье я буду рассматривать только Android. Выполним команду, которая добавит возможность сборки проекта под данную платформу.

cordova platform add android

После выполнения команды появиться каталог projectDirectory\platforms\android и вы сможете собрать debug.apk (отладочный пакет). Сборка отладочного пакета осуществляется командой:

cordova build android

Теперь добавим автоматическую подпись пакета. Cordova подписывает пакет при помощи Gradle. Поэтому мы можем сразу задать установки ключей. Для этого в директории projectDirectory\platforms\android создайте текстовый файл release-signing.properties в котором пропишите следующие настройки:

Читайте также:  Как настроить алкатель андроид

storeFile=../../ keystore.jks
storeType=jks
keyAlias=myalias
keyPassword=passwordhere
storePassword=passwordhere

Как вы поняли, нужно использовать данные, которые были указаны при создании ключей.

Далее проведем первое испытание – соберем подписанный apk для публикации.

cordova build android —release

На выполнение команды потребуется несколько минут. По окончанию построения готовый apk мы можем найти в директории projectDirectory\platforms\android\build\outputs\apk

Испытаем полученный apk на среднем планшете и… мы получим опять ужасные результаты (5 FPS). На этом этапе многие разработчики теряют надежду. После такого облома они либо бегут на www.ludei.com (потому что там хоть на выходе получается что-то вменяемое), либо присоединяются к «армии мудаков», которые убеждены, что гибридные приложение полный отстой.

На самом деле терять надежду ещё рано. Есть такой замечательный проект – Crosswalk. С помощью данного проекта можно в нативное приложение под Android встроить браузер Google Chrome и в нем проигрывать ваш проект. Преимущества очевидны: производительность хорошего браузера и независимость от ОС устройства.
В Cordova проект Crosswalk добавляется, как плагин. Значит, пора расширить наше приложение плагинами. Делается это очень легко. В командной строке запущенной из директории проекта запускаем команды:

cordova plugin add cordova-plugin-splashscreen

В проект будет добавлена возможность установить стартовую заставку. Обязательно установить этот плагин.
Далее можете добавить плагины по вашим запросам. Вот лишь некоторые из них:

cordova plugin add cordova-plugin-vibration

(плагин добавляет возможность управлять вибрацией)

cordova plugin add cordova-plugin-globalization

(плагин добавляет возможность определить локализацию устройства)

cordova plugin add cordova-plugin-inappbrowser

(плагин добавляет возможность делать запросы к серверу)

Ну, и наконец, добавим Crosswalk:

cordova plugin add cordova-plugin-crosswalk-webview

После установки соберем очередной apk и испытаем его на устройстве. Мы, скорее всего, получим также паршивые результаты (15 FPS)…
Тут теряют надежды те, которые её не потеряли при первом испытании. И эти разработчики пополняют «армию мудаков», которые убеждены, что гибридные приложение полный отстой.
Но ещё рано сдаваться… Тут начинается «магия».

Для браузера Google Chrome существует специальный GPU-blacklist, который ограничивает использование WebGL. Это очередная забагованная функция от Google. Почему забагованная?
Во-первых, функция ограничивает не только движок WebGL, но весьма ощутимо снижает производительность движка Canvas.
Во-вторых, хоть функция называется «черный список GPU», работает она как «белый список». То есть, если у вас топовый фирменый смартфон, то он есть в этом списке и ваше приложение прекрасно работает. А если у вас какой-нибудь «китаец» (или даже фирманный не топовый телефон), то его уже нет в списке, и, соответственно, производительность приложения низкая.
Google объясняет это заботой о пользователях. Мол, на не топовых фирменных смартфонах браузер может работать нестабильно. Ага, конечно… По моим наблюдениям вся эта «нестабильность» сводиться к закрытию приложения при сверхвысоких нагрузках (например, одновременное создание 200-300 объектов).

Чтобы добиться максимальной производительности. Отключим данную функцию. Для этого создадим в директории projectDirectory\platforms\android\assets текстовый файл xwalk-command-line в котором будет лишь одна строка:

xwalk —ignore-gpu-blacklist

Все. Снова собираем очередной проект и испытываем… В итоге отличная производительность (50-60 FPS). Результат достигнут.

Что дальше? А дальше осталось настроить файл конфигурации, иконки и заставки. С этим, я думаю, вы справитесь сами. Кстати, стартовая заставка поддерживает технологию 9-patch Image. Для этого нужно лишь добавить к названию файла цифру 9.

Как видите, гибридные приложения в умелых руках могут иметь высокую производительность. Надеюсь, эта статья поможет вам в их создании. Удачного дня.

Источник

Оцените статью