Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/xorum-io/kmp_mobile_template

Template for the development of native iOS and Android apps with shared business-logic using KMP, Redux architecture and XcodeGen.
https://github.com/xorum-io/kmp_mobile_template

android ios kotlin kotlin-multiplatform mobile redux swift xcodegen

Last synced: about 6 hours ago
JSON representation

Template for the development of native iOS and Android apps with shared business-logic using KMP, Redux architecture and XcodeGen.

Awesome Lists containing this project

README

        

## KMP Mobile Template

This is a template for the development of native iOS and Android apps with shared business-logic using [KMP](https://kotlinlang.org/lp/mobile/).

[Redux architecture](https://medium.com/xorum-io/redux-for-android-with-kotlin-in-practice-part-1-initial-setup-8f1a417d466e) is used to facilitate interactions between **Android / iOS** user-facing and **common** modules.

[XcodeGen](https://github.com/yonaskolb/XcodeGen) is used to generate `.xcodeproj` file from source files and `project.yml` file.

Find more details on this template in [our Medium blog](https://yev-kanivets.medium.com/battle-tested-template-project-for-kotlin-multiplatform-54d0692bb00c?sk=399363810f81c43301472a08cbfef50d).

## To Do

Once cloned do the following to adapt template to your needs.

### Android (app and common folders)

1. Update `applicationId` in `build.gradle`.
2. Update `BACKEND_LINK` in `common/src/commonMain/kotlin/io/xorum/network/HttpClientFactory.kt`. If needed change `protocol` to `URLProtocol.HTTPS`
3. Rename package `io.xorum` in `app` and `common` modules.
4. Paste project name into the `cocoapods` and `xcode` in `common/build.gradle`.
5. Rename `XorumApplication` class.
6. Change `app_name` in `strings.xml`.
7. Change `root.project.name` in `settings.gradle`.
8. Change `group` in `gradle.properties`
9. Change `spec.homepage` and `spec.summary` in `common.podspec`
10. Change package in `common/src/main/AndroidManifest.xml`
11. Don't forget to remove api.open-notify.org from network-security-config later

### iOS (ios folder)

1. Install XcodeGen (`brew install xcodegen`).
2. Change all 3 folders prefixes from `KMP Mobile Template` to your project name.
3. Change all occurrences of `KMP Mobile Template` in `Podfile` to your project name.
4. Change all occurrences of `KMP Mobile Template` in `project.yml` to your project name.
5. Update `PRODUCT_BUNDLE_IDENTIFIER` in `project.yml`.
6. Give executable permission to `init.sh` (`chmod +x init.sh`).
7. Execute `./init.sh` every time you need updated `common` in iOS app.
8. Don't forget to remove api.open-notify.org from plist later

## Release

1. Generate `app/app.keystore` with "app" key alias, and secure passwords (update `signingConfigs`).
2. Generate provisioning profiles, and include them in `project.yml`.