Предварительный релиз NativeScript 3.0

Предварительный релиз NativeScript 3.0
Сегодня наконец вышел предварительный релиз NativeScript 3.0! Как мы писали ранее, в нём было запланированы улучшения производительности, а также некоторые крупные изменения, ломающие обратную совместимость.

Разработчики подготовили документ, описывающий каждое изменение в этом релизе, его цель и важность для проекта (англ.). Также доступен гайд по миграции на NS 3.0, который поможет вам обновить ваши приложения на новую версию фреймворка.

Основные изменения
Кросс-платформенные модули
  • Новая имплементация модулей. Кросс-платформенные модули обновлены для повышения производительности, расширяемости, улучшения API.
  • Полностью обновлённая система измерений в макетах. До версии 3.0 система работала на основе DIP (независимых от устройства пикселей), а начиная с 3.0 всё пересчитывается в DP (пиксели устройства) и вы можете указать суффикс px для создания однопиксельного края элемента (1-px), к примеру.
  • Переход на TypeScript 2.2
NativeScript CLI

В поведение утилиты NativeScript CLI, кроме улучшений производительности и исправления ошибок, были внесены следующие изменения:

  • Удалена команда livesync, вместо неё команда tns run будет автоматически запускаться с ключом livesync —watch.
  • Удалена команда plugin find/search за неиспользованием.
  • Команда emulate запрещена, этот функционал выполняет команда run —emulate.
  • Команда run --device теперь сама запускает эмулятор, если он не был запущен ранее. До версии 3.0 ключ —device работал только с физическими устройствами.
Изменения в платформах iOS и Android

Теперь можно отслеживать сетевой трафик приложения прямо из Chrome DevTools. Для Android возвращена статическая генерация кода вместо создания файлов *.DEX. Обновлена утилита Gradle, что значительно ускорило сборку приложения для Android.

Переход на NativeScript 3.0 RC

Установить релиз-кандидат можно так:

npm install -g nativescript@rc

Создание проектов с NativeScript 3.0 RC

Создать проект на базе новых шаблонов можно так:

  • На чистом JavaScript: tns create MyApp --template tns-template-hello-world@rc
  • На TypeScript: tns create MyApp --template tns-template-hello-world-ts@rc
  • На Angular: tns create MyApp --template tns-template-hello-world-ng@rc

Добавить платформы можно так:

tns platform add android@rc
и
tns platform add ios@rc

И это всё! Запустить приложение можно будет так: tns run

Обновление существующего проекта

Для обновления проекта нужно обновить tns-core-modules и платформы:

tns plugin remove tns-core-modules
tns plugin add tns-core-modules@rc
tns platform remove tns platform add @rc

Для приложений TypeScript и Angular нужно обновить плагин TypeScript:

npm uninstall nativescript-dev-typescript --save-dev
npm uninstall typescript --save-dev
npm install nativescript-dev-typescript@0.4 --save-dev

И, наконец, для проектов Angular выполните следующие команды:

1. Обновите плагин nativescript-angular:

tns plugin remove nativescript-angular
tns plugin add nativescript-angular@rc

2. Обновитесь до Angular 4, открыв файл package.json и прописав там версию 4.0.0. При этом зависимость zone.js должна быть прописана в зависимостях проекта (dependency), вместо зависимостей при разработке (devDependency), и обновлена до версии 0.8.2.

В результате файл package.json будет выглядеть примерно так:

"dependencies": {
"nativescript-theme-core": "~1.0.2",
"nativescript-angular": "rc",
"tns-core-modules": "rc",
"@angular/animations": "4.0.0",
"@angular/core": "4.0.0",
"@angular/common": "4.0.0",
"@angular/compiler": "4.0.0",
"@angular/http": "4.0.0",
"@angular/platform-browser": "4.0.0",
"@angular/platform-browser-dynamic": "4.0.0",
"@angular/forms": "4.0.0",
"@angular/router": "4.0.0",
"rxjs": "~5.2.0",
"reflect-metadata": "~0.1.8",
"zone.js": "~0.8.2"
},
"devDependencies": {
"typescript": "~2.2.1",
"nativescript-dev-typescript": "~0.4.0",
"nativescript-dev-android-snapshot": "^0.*.*"
}

Известные проблемы

На текущий момент известно о нескольких проблемах, которые будут исправлены в ближайшее время:

  • Нет поддержки Xcode 8.3
  • Невозможно установить приложение на физическое устройство iOS без ключа —syncAllFiles
  • Для Android пока нет снапшотов (snapshot packages)

Новый релиз-кандидат будет выпущен как только исправят эти недостатки.

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

Также возможны проблемы с некоторыми плагинами (которые работают непосредственно с интерфейсом приложения), но с ними уже идёт работа.

Когда будет официальный релиз?

Официальный релиз 3.0 запланирован на 26 апреля 2017 года. А до этого времени будут выпускаться релиз-кандидаты и исправляться возможные ошибки.

Подготовлено по материалам официального блога NativeScript.

Leave a Comment