В этом руководстве будет описано создание небольшого приложения под Android и iOS с технологией Kotlin Multiplatform основываясь на шаблоне moko-template.
Для работы потребуется:
xcode-select --install);sudo gem install cocoapods);gradle из Xcode build phase.В результате выполнения всех руководств серии GiphyApp будет получено приложение просмотра гифок с использованием GIPHY API. Интерфейс приложения будет полностью нативный, проигрывание Gif будет сделано нативными библиотеками glide для Android и SwiftyGif для iOS.
android app | ios app |
|
|
Готовый код проекта доступен на github.
Для создания проекта будет использован шаблон moko-template.
Positive : Шаблон имеет настроенную конфигурацию сборки Android и iOS приложений с общей библиотекой, что позволяет не тратить время на интеграцию сборки общей библиотеки под iOS с iOS проектом, на конфигурирование Kotlin Multiplatform модулей и зависимостей (используя mobile-multiplatform-gradle-plugin конфигурация значительно упрощена). Так же шаблон имеет несколько фич-примеров.
Чтобы использовать шаблон нужно перейти на GitHub репозиторий шаблона moko-template и нажать зеленую кнопку Use this template. Этим действием мы создадим новый репозиторий с контентом, соответствующим последнему коммиту из master ветки moko-template.
После успешного создания нового репозитория склонируем репозиторий себе - git clone .
Чтобы убедиться, что стартовое состояние корректно работает - запустим оба приложения. Для этого нужно:
Gradle Sync можно запустить модуль android-app как обычное приложение;ios-app запускаем pod install, а после завершения открываем ios-app/ios-app.xcworkspace и жмем Run для запуска приложения.Positive : Время сборки Kotlin/Native части продолжительное (сборка запускается автоматически при pod install для корректной интеграции в проект, а так же при сборке iOS проекта).
Настройки индентификации приложения вносятся полностью так же, как и в обычных Android и iOS приложениях.
Android - в файле android-app/build.gradle.kts изменить:
android {
...
defaultConfig {
...
applicationId = "dev.icerock.codelab.giphy"
...
}
}
iOS - в Xcode в настройках проекта указать Bundle Identifier как на скриншоте:
Android - в файле android-app/src/main/res/values/strings.xml изменить:
<resources>
<string name="app_name">Giphy App</string>
...
</resources>
iOS - в Xcode в настройках проекта указать Display name как на скриншоте: 
Ресурсы иконки можно скачать по ссылке.
Для замены Android иконок нужно перенести содержимое из директории android архива в android-app/src/main/res. После этого нужно указать иконку в android-app/src/main/AndroidManifest.xml:
<manifest>
<application
...
android:icon="@mipmap/ic_launcher">
...
</application>
</manifest>
Для замены на iOS требуется заменить директорию ios-app/src/Assets.xcassets/AppIcon.appiconset на версию из архива.
Загрузочный экран есть на iOS и меняется он через Xcode в файле ios-app/src/Resources/LaunchScreen.storyboard. Для примера просто заменим текст, как на скриншоте: 
В следующем руководстве GiphyApp #2 разобрана реализация списка Gif.