From 08b11ca10ac9dd52cb192b3a238e1317623df4eb Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Tue, 31 Oct 2023 08:05:17 +0800 Subject: [PATCH] Initial commit --- .gitignore | 15 + .idea/icon.png | Bin 0 -> 27602 bytes LICENSE | 201 +++++++++ README-zh-CN.md | 94 ++++ README.md | 100 +++++ androidApp/.gitignore | 1 + androidApp/build.gradle.kts | 44 ++ androidApp/proguard-rules.pro | 21 + .../src/androidMain/AndroidManifest.xml | 22 + .../src/androidMain/ic_launcher-playstore.png | Bin 0 -> 27602 bytes .../src/androidMain/kotlin/MainActivity.kt | 14 + .../drawable-v24/ic_launcher_foreground.xml | 30 ++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1858 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 1516 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3682 bytes .../res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 1044 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 978 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2366 bytes .../res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 2542 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 2614 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 5168 bytes .../res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 3680 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 4120 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 8240 bytes .../res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 5164 bytes .../ic_launcher_foreground.webp | Bin 0 -> 5564 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 11578 bytes .../res/values/ic_launcher_background.xml | 4 + .../src/androidMain/res/values/strings.xml | 3 + build.gradle.kts | 6 + desktopApp/.gitignore | 1 + desktopApp/build.gradle.kts | 29 ++ desktopApp/src/desktopMain/kotlin/Main.kt | 12 + gradle.properties | 19 + .../sweet-dependency-config.yaml | 48 +++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 ++++++++ gradlew.bat | 89 ++++ img-src/icon.png | Bin 0 -> 27602 bytes initializer.json | 9 + initializer.py | 32 ++ iosApp/.gitignore | 6 + iosApp/Configuration/Config.xcconfig | 3 + iosApp/iosApp.xcodeproj/project.pbxproj | 400 ++++++++++++++++++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 14 + .../AppIcon.appiconset/app-icon-1024.png | Bin 0 -> 67285 bytes iosApp/iosApp/Assets.xcassets/Contents.json | 6 + iosApp/iosApp/ContentView.swift | 19 + iosApp/iosApp/Info.plist | 50 +++ .../Preview Assets.xcassets/Contents.json | 6 + iosApp/iosApp/iOSApp.swift | 10 + settings.gradle.kts | 17 + shared/.gitignore | 1 + shared/build.gradle.kts | 83 ++++ shared/src/androidMain/kotlin/App.android.kt | 4 + shared/src/commonMain/kotlin/App.kt | 34 ++ shared/src/desktopMain/kotlin/App.desktop.kt | 4 + shared/src/iosMain/kotlin/App.ios.kt | 9 + 63 files changed, 1841 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/icon.png create mode 100644 LICENSE create mode 100644 README-zh-CN.md create mode 100644 README.md create mode 100644 androidApp/.gitignore create mode 100644 androidApp/build.gradle.kts create mode 100644 androidApp/proguard-rules.pro create mode 100644 androidApp/src/androidMain/AndroidManifest.xml create mode 100644 androidApp/src/androidMain/ic_launcher-playstore.png create mode 100644 androidApp/src/androidMain/kotlin/MainActivity.kt create mode 100644 androidApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 androidApp/src/androidMain/res/drawable/ic_launcher_background.xml create mode 100644 androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp create mode 100644 androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher.webp create mode 100644 androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 androidApp/src/androidMain/res/values/ic_launcher_background.xml create mode 100644 androidApp/src/androidMain/res/values/strings.xml create mode 100644 build.gradle.kts create mode 100644 desktopApp/.gitignore create mode 100644 desktopApp/build.gradle.kts create mode 100644 desktopApp/src/desktopMain/kotlin/Main.kt create mode 100644 gradle.properties create mode 100644 gradle/sweet-dependency/sweet-dependency-config.yaml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 img-src/icon.png create mode 100644 initializer.json create mode 100644 initializer.py create mode 100644 iosApp/.gitignore create mode 100644 iosApp/Configuration/Config.xcconfig create mode 100644 iosApp/iosApp.xcodeproj/project.pbxproj create mode 100644 iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png create mode 100644 iosApp/iosApp/Assets.xcassets/Contents.json create mode 100644 iosApp/iosApp/ContentView.swift create mode 100644 iosApp/iosApp/Info.plist create mode 100644 iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 iosApp/iosApp/iOSApp.swift create mode 100644 settings.gradle.kts create mode 100644 shared/.gitignore create mode 100644 shared/build.gradle.kts create mode 100644 shared/src/androidMain/kotlin/App.android.kt create mode 100644 shared/src/commonMain/kotlin/App.kt create mode 100644 shared/src/desktopMain/kotlin/App.desktop.kt create mode 100644 shared/src/iosMain/kotlin/App.ios.kt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/icon.png b/.idea/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..959a79c6e9c7550236c8cb5133bc30c32eebf0d5 GIT binary patch literal 27602 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 literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README-zh-CN.md b/README-zh-CN.md new file mode 100644 index 0000000..08ec8ab --- /dev/null +++ b/README-zh-CN.md @@ -0,0 +1,94 @@ +# compose-multiplatform-template + +[![GitHub license](https://img.shields.io/github/license/BetterAndroid/compose-multiplatform-template?color=blue)](https://github.com/BetterAndroid/compose-multiplatform-template/blob/main/LICENSE) +[![Telegram](https://img.shields.io/badge/discussion-Telegram-blue.svg?logo=telegram)](https://t.me/BetterAndroid) +[![Telegram](https://img.shields.io/badge/discussion%20dev-Telegram-blue.svg?logo=telegram)](https://t.me/HighCapable_Dev) + +LOGO + +一个快速生成 Android、iOS、Desktop (JVM) 的 Jetpack Compose 多平台项目模版。 + +[English](https://github.com/BetterAndroid/compose-multiplatform-template/blob/master/README.md) | 简体中文 + +| LOGO | [BetterAndroid](https://github.com/BetterAndroid) | +|---------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------| + +这个项目属于上述组织,**点击上方链接关注这个组织**,发现更多好项目。 + +## 这是什么 + +这是一个快速生成 Android、iOS、Desktop (JVM) 的 Jetpack Compose 多平台项目模版。 + +Jetpack Compose 的跨平台能力为 Android 开发者将应用程序部署到多个平台提供了可能,这份模版修改自官方提供的 [compose-multiplatform-ios-android-template](https://github.com/JetBrains/compose-multiplatform-ios-android-template), +它改进了项目结构并支持了桌面端 (JVM) 的跨平台能力。 + +## 开始使用 + +在 GitHub 上点击“Use this template”按钮来使用此模版,成功创建新的存储库后,使用 `git clone` 命令将你的项目克隆到本地,此时不要立即打开项目。 + +在项目的根目录,你可以找到 `initializer.json` 和 `initializer.py` 两个文件,请打开 `initializer.json` 文件,内容如下。 + +```json +{ + // 你的项目名称,这将作为整个 Gradle 项目的名称,只允许英文 + "__PROJECT_NAME__": "compose-multiplatform-demo", + // 你的 App 名称 + "__APP_NAME__": "Compose Multiplatform Demo", + // 你的项目描述 + "__PROJECT_DESCRIPTION__": "This is a Jetpack Compose Multiplatform demo.", + // 你的项目存储库 URL (非开源项目可不填并稍后在 gradle.properties 中删除) + "__PROJECT_URL__": "https://github.com/BetterAndroid/compose-multiplatform-template", + // 你的项目组名 (Android 为 Package Name, Java 为 Group, iOS 为 Bundle ID) + "__GROUP_NAME__": "com.highcapable.composemultiplatformdemo", + // 你的项目许可证名称 (非开源项目可不填并稍后在 gradle.properties 中删除) + "__LICENCE_NAME__": "Apache License 2.0", + // 你的项目许可证 URL (非开源项目可不填并稍后在 gradle.properties 中删除) + "__LICENCE_URL__": "https://github.com/BetterAndroid/compose-multiplatform-template/blob/main/LICENSE" +} +``` + +编辑完成配置文件后,运行 `initializer.py` 脚本对项目进行初始化,初始化成功后这两个文件会被自动删除。 + +如果你的系统中没有 Python,请前往 [官网](https://www.python.org/) 下载一个,然后在命令行执行 `python3 initializer.py`。 + +如果你正在使用 macOS 或 Linux,你可以直接执行 `./initializer.py`。 + +项目初始化成功后,你可以使用 Android Studio 或 IntelliJ IDEA 打开这个项目,确保你已经正确安装 [kotlin-multiplatform-mobile](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) 插件。 + +若要正常编译 iOS 项目,你需要使用 macOS 系统进行开发并安装 Xcode。 + +## 项目推广 + +如果你正在寻找一个可以自动管理 Gradle 项目依赖的 Gradle 插件,你可以了解一下 [SweetDependency](https://github.com/HighCapable/SweetDependency) 项目。 + +如果你正在寻找一个可以自动生成属性键值的 Gradle 插件,你可以了解一下 [SweetProperty](https://github.com/HighCapable/SweetProperty) 项目。 + +本项目同样使用了 **SweetDependency** 和 **SweetProperty**。 + +## Star History + +![Star History Chart](https://api.star-history.com/svg?repos=BetterAndroid/compose-multiplatform-template&type=Date) + +## 许可证 + +- [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) + +``` +Apache License Version 2.0 + +Copyright (C) 2019-2023 HighCapable + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` + +版权所有 © 2019-2023 HighCapable \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..65ba43f --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# compose-multiplatform-template + +[![GitHub license](https://img.shields.io/github/license/BetterAndroid/compose-multiplatform-template?color=blue)](https://github.com/BetterAndroid/compose-multiplatform-template/blob/main/LICENSE) +[![Telegram](https://img.shields.io/badge/discussion-Telegram-blue.svg?logo=telegram)](https://t.me/BetterAndroid) +[![Telegram](https://img.shields.io/badge/discussion%20dev-Telegram-blue.svg?logo=telegram)](https://t.me/HighCapable_Dev) + +LOGO + +A Jetpack Compose Multiplatform project template that quickly generates Android, iOS, and Desktop (JVM). + +English | [简体中文](https://github.com/BetterAndroid/compose-multiplatform-template/blob/main/README-zh-CN.md) + +| LOGO | [BetterAndroid](https://github.com/BetterAndroid) | +| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | + +This project belongs to the above-mentioned organization, **click the link above to follow this organization** and discover more good projects. + +## What's this + +This is a Jetpack Compose Multiplatform project template that quickly generates Android, iOS, and Desktop (JVM). + +The cross-platform capability of Jetpack Compose provides Android developers with the possibility to deploy applications to multiple platforms. + +This template is modified from the official [compose-multiplatform-ios-android-template](https://github.com/JetBrains/compose-multiplatform-ios-android-template), +it improves project structure and supports cross-platform capabilities on the desktop (JVM). + +## Get Started + +Click the "Use this template" button on GitHub to use this template. + +After successfully creating a new repository, use the `git clone` command to clone your project locally, do not open the project immediately at this time. + +In the root directory of the project, you can find two files, `initializer.json` and `initializer.py`, please open the `initializer.json` file, the contents are as follows. + +```json +{ + // Your project name, this will be used as the name of the entire Gradle project, only English is allowed + "__PROJECT_NAME__": "compose-multiplatform-demo", + // Your app name + "__APP_NAME__": "Compose Multiplatform Demo", + // Your project description + "__PROJECT_DESCRIPTION__": "This is a Jetpack Compose Multiplatform demo.", + // Your project repository URL (can be left blank for non-open source projects and deleted in gradle.properties later) + "__PROJECT_URL__": "https://github.com/BetterAndroid/compose-multiplatform-template", + // Your project group name (Package Name for Android, Group for Java, Bundle ID for iOS) + "__GROUP_NAME__": "com.highcapable.composemultiplatformdemo", + // Your project license name (for non-open source projects, you can leave it blank and delete it in gradleproperties later) + "__LICENCE_NAME__": "Apache License 2.0", + // Your project license URL (for non-open source projects, you can leave it blank and delete it later in gradle.properties) + "__LICENCE_URL__": "https://github.com/BetterAndroid/compose-multiplatform-template/blob/main/LICENSE" +} +``` + +After editing the configuration file, run the `initializer.py` script to initialize the project, after successful initialization, these two files will be automatically deleted. + +If there is no Python in your system, please go to [official website](https://www.python.org/) to download one, and then execute `python3 initializer.py` on the command line. + +If you are using macOS or Linux, you can execute `./initializer.py` directly. + +After the project is initialized successfully, you can use Android Studio or IntelliJ IDEA to open the project and ensure that you have correctly installed [kotlin-multiplatform-mobile](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) plugin. + +To compile the iOS project normally, you need to use macOS for development and install Xcode. + +## Promotion + +If you are looking for a Gradle plugin that can automatically manage Gradle project dependencies, +you can check out the [SweetDependency](https://github.com/HighCapable/SweetDependency) project. + +If you are looking for a Gradle plugin that can automatically generate properties key-values, +you can check out the [SweetProperty](https://github.com/HighCapable/SweetProperty) project. + +This project also uses **SweetDependency** and **SweetProperty**. + +## Star History + +![Star History Chart](https://api.star-history.com/svg?repos=BetterAndroid/compose-multiplatform-template&type=Date) + +## License + +- [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) + +``` +Apache License Version 2.0 + +Copyright (C) 2019-2023 HighCapable + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` + +Copyright © 2019-2023 HighCapable \ No newline at end of file diff --git a/androidApp/.gitignore b/androidApp/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/androidApp/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts new file mode 100644 index 0000000..e62f41c --- /dev/null +++ b/androidApp/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + autowire(libs.plugins.kotlin.multiplatform) + autowire(libs.plugins.android.application) + autowire(libs.plugins.jetbrains.compose) +} + +group = property.project.groupName + +kotlin { + androidTarget() + jvmToolchain(17) + sourceSets { + val androidMain by getting { + dependencies { + implementation(projects.shared) + } + } + } +} + +android { + namespace = property.project.groupName + compileSdk = property.project.android.compileSdk + + sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") + + defaultConfig { + applicationId = property.project.groupName + minSdk = property.project.android.minSdk + targetSdk = property.project.android.targetSdk + versionName = property.project.androidApp.versionName + versionCode = property.project.androidApp.versionCode + } + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} \ No newline at end of file diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro new file mode 100644 index 0000000..ff59496 --- /dev/null +++ b/androidApp/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/androidApp/src/androidMain/AndroidManifest.xml b/androidApp/src/androidMain/AndroidManifest.xml new file mode 100644 index 0000000..4b85f11 --- /dev/null +++ b/androidApp/src/androidMain/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/androidMain/ic_launcher-playstore.png b/androidApp/src/androidMain/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..959a79c6e9c7550236c8cb5133bc30c32eebf0d5 GIT binary patch literal 27602 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/kotlin/MainActivity.kt b/androidApp/src/androidMain/kotlin/MainActivity.kt new file mode 100644 index 0000000..606b083 --- /dev/null +++ b/androidApp/src/androidMain/kotlin/MainActivity.kt @@ -0,0 +1,14 @@ +package __GROUP_NAME__ + +import MainView +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent + +class MainActivity : ComponentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { MainView() } + } +} \ No newline at end of file diff --git a/androidApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml b/androidApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/androidApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/androidApp/src/androidMain/res/drawable/ic_launcher_background.xml b/androidApp/src/androidMain/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/androidApp/src/androidMain/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/androidApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp b/androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..44bcb0071e1373c3e9eb5bf7c8a79180c93d4abe GIT binary patch literal 1858 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 Skp%oNOEw*`C7A#H|6LDZ`{)M% literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp b/androidApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..468557666ea173816d80d195414e1b2da7408eff GIT binary patch literal 3682 zcmV-o4xRB*Nk&Fm4gdgGMM6+kP&iCZ4gdfzN5ByfHHU(>Z5W3?>>UgdF#+Dy(nLEd zq8*D_dDE5uUy-F8+}+*X-QC^YS$DlYd#9(*IkzAsqlid(1b8QZ0BU=tPxs7yfqzl! zyCJm^5nWwH*i$hJ*e^W~qxOW_5;Gv`{H*S^oTZG6a6FqL+*g)4#}PB(yUY6on*PG{E8Xmp1}qtYCrevw9HXzp!woW5r_qQf~S?wK{G(HsT&%qPv+Rfw&ZOeT_Qi2P~+MFkVLCX#pon*52fCueE3btPD-61 z(nTU&9eqklPJFWQ47AbRYd;78wi`-p2Y^Zqlc=?n`XZ^}D3M|j5~eI`IZ8gC=l}r6 z4%re0KoTEXc=1A_^ke(1^H!jUqxwiKK`*r>5oO+&ZV&(g21VnkoPe4^c_$ z{79)-d`>OG6&2Cu;UjckTy^gY7+95#j&`~gH{P{5%KkN@JLWb*Xc&7JywYb4}l^j zI1ziq#<~a5Y@m%z{Kk@1Ls2B+3TBi9w(1yD@^r3oWu$^Xb=2H~pLCvE9HkCpdPxCs zkplgZCXHi}M2`yL5tW8b5>%N~=% z8w_O#<(2Z*glF21-PPPyIt}!!Ju)O4eHu3kzDGgKm{F92J*b0uLi82^(n{DMnruCgv3$-{3JyrjTuFV`cr+aoA!x-QBRlbu}(B^Lx&E81|0kVM!> z8dPfDd#TS+Y|cr^$FF>(NE-B2`&l?hT>YG6HVw>78vF(4FQpV!ILlx8-!>g^n9F!>i5cC;t6r0 z&N7R7dWMmz^@h}{nE!<}ZDr-44`hl`C4#49>lPDPB?Cn918a-J6_V$;ohBGmYn2f~ z2J%)!oF4GNcckpOv-S-O{ij3d$wc0a*B~Z`Ul^;n;FSdETt4CHmm8itrGz;?fMEfE4Shp(^~p_H=nEmqfZjU9p1Vdn+)o!n?)~JlK!-)5ihEO*8W5K~ zeIicCxAN6qEi9WzfnEzXG2?3pZ-QLJD#aLlu)p0NKdHm|pZd@tLBN z?--j3pQU82#nwRQhJ7Z_7`b7s;(d@NaZ#B4udJiYq4K@q5nm`*#Kp{V32`Fc23e<) zEJtB((BI58ct8%QM{0X))CVmGv0s7*jK;Z(_XYtnuK#ZhsWvk@SR7_N`zFjnTZP0q z_a*P6w2nC^Ef2d5A71%`?@1t1Ex#C2stU<-uFFTuvK)oFV7ImIb$jH!IgsCZZq~?5 zg|+d6;0LCFxFDI0OVMa&r@xHB0dOHcc+plqF2kgeZ+jR~Ch{`prTi|uuUT|SztZqA zNW$I#;r%U~IVVM2?e3!0#BG#3qnRBK4YCoQTIEU3T4KW2^12~y_c9d(|1IaA;|bAj zOH%-OF>U{S0Tw3siILyJRuss^V|;0C+`v<-3V9*KYsr7hgi&~a2tp|vqAZ!Zr6XY* zz&*_C$xYVx&ZLTVq@eksD>Z&wy=&7EbAr&h+yMGa&;5ZJ{k9j3g(#}nl?4x?l zPd;50rXHK>oi$@f9UKFCI5;%G#!((oNp++%_~4!q{yI=aM2}D5So`NYW?&f5|Mxvw>|Sq_1AN}L83p;Qt* zp_|?Pf+PDGZ6juJ+#SM8Q#GM2?Fw<5RX_$IU z@6knkn+%&Gw%(OZJNy*bNun+s+3Q(%|nM zSEX?_`Jrza(y9f(Qb{v*X6Wx;mj91S5Q;?igoySJKjm#1Fb4p-*jrXafKgQOKg-=< z-2!d>&b&!8pA_K+=R7v5k}NAQ=cXj#r!uJ2UItj1q4s_-ap2NCL$B}?0mh4gjKT;| z?`r>FzRxT&=M1p^4b_Qg>`B52`PkKnR!-rnG^(MNJn)HHJIQSR7uJ64e)9_t^a(Md z!=ta|*QOo3mj}7pKb}`YfJwG?`8gJm_ur&KKXvrne&XKmvM~LHJ5_FL)=49z+?Vrx zxg!I9GYv}7gjA!_HTJL^eQo>rBL^(CfBZ+Obl=m9V}hqpa)WuUI>oNXR<+gEKcM2d zl?HzS%-U(DIjMo3HW9KLc_DKOiMT&+~zM3cq311VMja!Jdv(jsfTx;5n#Jh7}#-6wjO?--kQbSZtt?WeJ;3wv~GH4h2!d#l!jlEZ1_CloinCy#=jz2Ua!2HIr z3c}4F&ubyTs;h&ao8wX_^a5B!X?#@EX>P6NIJ4`PI?-(X{if|~KToYnztRBL5$Aay zPyMY<55H``shQJRZ8ZjPSiLW^+T(V3^rbE)d$YWhQp5O_y!46`gCztO{NxIx_)=Ex z>ddu&{GoB&x?g8>4g*lv8o!v*MSyh+H)|Q$+O;m9S&Ey=V+W1&WRD)P&9S0j%;KUf znY)#)=5Cj=H@ZzSwXLbMX&nSuR{7WLpJtf(kSE0G1u+5nze{w;s3mPe&DZMwCSgf{a92au;`|yWRii5a9m%^I?EsTAi3ssrj?Z z7y%9qzfL3$IKF)qpF*$%N`+E3OtqLPIu^NkfYHtC`ahimAAIc~iSa7iIb5{qnR2xCroQ z?P9a6zwzaRT-6y#^n|>N>t#|jQ*;Vb(u<~+QbyOYgv4Mt;QQ9jH_HDVcPFVD5-rj2 zC1q>I`^7gx3wC350}Fk%>qVO%TlBi7`2=JCJ&K|8Ci5 z5a2rQuPT%*>HF2lRu zMS#;$l>pwA0R9^`@G_dv(Cc*a*yC9j35a4aDBYnL z(t-Ro6oVm6IxdluRK(^f1C}5Zev?$tX%vQD}?|#B9ti%drWyDne6g z9BWN$zmfD?mk;iW_miL3PkMY`;ri*G|Ldk!i|d+Bpwjxdug(GH-tYVMwq54?)45t} zl4_ErrccXd)?AF;6UTs7eVv(IOcmq|0jU7l`T!oTa*a`F+o94AP`dD(8#!b(hAe9bgY=>AgKhl{}Y9BWK48+?q zma2s5u?sa2pPv$8@7ZH7#OKCFPUF61iQZ<~Lnb2pK%#k5+GcSM@aA<7G@PmB8M$OE$q5B}u0@|H})5fPyF0Wq8L9J^> z0Q{yNo$}_KgW`+&JD=r#TsI29DGo+n)Zh6c)k41B&|lJBWURYnc<_<5iilwG|E582 zV5~RX`eP{&Df3sqAKklukLmq;4}ZNhmmz|s&71e{-o1OP`nz}U-oLi76o|a=!OEJs O)dztnZvD%=m9&+Yu=y$g literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp b/androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..65355a76ee5b8d29b5751099389b0ada7eb736dc GIT binary patch literal 978 zcmV;@110{{S5MM6+kP&iDz0{{RoYrq;1uZEy)+k`*pMSHtrAds|q|IVND zKmUr{wr!5-q`tw>zyZWrS3roJO7R4BjwJwa?0RtD^>F4CEe_*}3p4>7M`#r8IK?(x zi&a&I01l5Zf<#4|1004CoQh8XBfJVWQZy&<)AXoa6H5Y0#A?<#2O#0vwzHA;tvj}D zu5H`4ZQHhO+t%35B=h{De*Kb}?_1+U^nU`H{jZ<~IciM=vi$9=>SM(><6%EL*?Qmm zCge`BMy@@!F2*t;M|!oJ{Jd6H0H|8)?Yp5yZfBFs!#{!jWvn^=w8WnGqSm*-d$&Dx zdn~Df*|zZg8u+zC5!RV`5>mDYI+v6}fBACHfGvt_E~eAqcQE$DP*d6ksl4t_+1FtF zjpo$%l{AVLI70TQXiRlqh+}?{6x6*Tj`>C4uh}{RI4lb8O_^IxC+KuYG-Uh1zBb zbS^C6sNWe#`~lk(j`9^=e%4JwO-?ABYY*M0vaVzjJFt5YgDB$?OFI;4otm3IR;aO= zz>7ZA{04w`gNf~2T!ONtP6pAyw*c<8qplBu*29DY&Zp9l*UO#69`F{f?+3HUx%AyA zbHXV=xG`BSP__h^iJfr??yqJsh%CMvYv9^yxD0?iDLcf|Mt==%Q|Myz7plXd5F|E_{!P!C@z{jx`22sNBC}MZK5ANt`Ld}Zc0v_~Wxeq(2f%_&M7V0=% z;R7yY^VsJVga1WLa;;EGR``7#P!B}9>G~A>ypG4MAW ziL}lsf?z0L>EpGmgb&D@K?};k|EM!{c?`WG06Ej`!P{#2aEoq%yKuHO@+kC+0lXY+ zN;uYFoVqXAxwIV80B&`nw%7S?bKGf7ec!-Paez}P)c2_oIpfU<=U}i%PmKAedPBRbx4C4g@a;Dotw${4&IE1oppfQC5UJf?JAJcBp?W$E? z0o&>!H{ez$YO|1L##$!lqLHNloN7*F>2?o|E(zevgFG}rX*AK_tTahzP2?Zp08G;7 AC;$Ke literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp b/androidApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..2de270dc3fc0706bc842145ce7957a96cf64b641 GIT binary patch literal 2366 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 E0IQ$w+5i9m literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp b/androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..02dd30f6817ff7f6627d66cdbca08d7a74956e54 GIT binary patch literal 2614 zcmV-63d!|SNk&F43IG6CMM6+kP&iB?3IG5v*T6LpCcFCopSR^){jqJ^wr$(CZS95M z|My?>{~a{rnN^KqRZ}Up+f?>9PAU##>?*b{V4f$ov7*ZATzNbb8{;-MS23(&JK0t2 z)<;!r+<uqc@|LtYOU_;^KQR3W{5GXL4J#G_HJY>*(Bo*cI!klBmeEpO_ZArO`?cG2Z-a^qjbf=Y z=;?q#&sRKs7SpaTG9-#5%~W9U%azESpO{h>d(905YPKjg5w?_g=0C3m^f=jU?lPhz z{A@mHfY$R)E=k+UOe)Bh(*|fcqIE4t8NUeRlR|+@GzQ4 zkSLru10D_-{CcHwCJH?4etj*GG0VBVzFx*$GMcN)?gD{29g0hVFUCW)TD2C?b$>Hi z%TN-rv&pDk6>K%dLY9nzck-FzcwpnG4O z+kE5qh7k!A1!DR{z}?Cg^2*}NM1{w(hrB&-q5`q~6_ZG(FVBgAuM>|7xB2{e9$*X! z7-%>kdnR(bu2{xSTif^My6o(td(tf~jk-FlE#SXp0tSpA8Vco$IrQU!zSpNc@xIsR zegQyexni!US>MFG5&dHz^wBFi-#+?Y9Wd|mq94a;u@L37Tfu;d88~261icd#_K3VulI&W_VQ@MVZ zPl-AgJC9;y>KY0@G^4pBB)^4(Y&e{3K37P)&26ew)AOI{mA`p6Q0aen1>-vCWqjr> z$|2pAe{?rsKZOz|CgsBT>^WXH$5ge*8z91>JyVxI6m4i>Uu(bTcFycH~* zI8(8ZsY@>m(Z^%ArnS& zBC#ixDrjCiUD_tUzrUUZOk@XQSK6(takXEyZJujf?N>bB<+|e|;*c?}=DK4G51GKE z<*X+F`>o-$nzj8}&)GzF4IMXkwk`n!V<*osly)m?oAouE5%y#vJx|sy7y65F`E5FY z8xa_FJB4wvs}=3AbiFQNVC>)l+Jc*f<4x-Y8_ogo7XNF%sd+SHeekMIhYY7)w^Z9W zr#qr`aY)!{0EKMsGK-EIYvn|fDns7BToHF@@l;c>wArS5r*xv>M25zVQRb{p4X22d(`=@*R#3z zDxEhk29*z9Sj2!tuGwLIQOCcH3wy}wtP6rlud~bMs_9}#GBH=Md!4S8!(|_Pg^1j= z*@P{ehWU~8ZO4DYqZ~}*=Gj(IXSL=NuHB~A^H!W#b-Np`b1?kktTn^Q^I7Ye@$^t^ z$h$LHO6zp7pWYWI4iyaUL@^U9TyTIg5#o3T1@C1j-xH z7q@1^B1sbzZ!Dcv4TpZWcSPrsox*$cZ)D!9WY#RF7O35(PimI>q2B`GDWoY5cKrq6 z{<~UC`xEn2t>Lh*SNP|PG|P;M!;M^h?w<+SDNZIgy*RMtT*02G{fT)S^eN!Qi3-HD zW|hH$@g44Vq%J7VCPzFuz(21k+Ii8T-L3WKNt*Sg)ztG`ci(HZ=#wJOpx0X7KDX<| zqS?5U2~&S%D66wJ^Aosba&c-Fcf`6~3INwVkci`0oSPO(m=ghOy*Mrv`pYQGv0PBJ zELJ>Ywh62f@(3405ZPh5Lf#*^TZK~o-p4Xo>fNqk`Hz2ZmiwyruGyrI1K~weW-%XH z;Ja@3_`hkM`^8Ck*<{3i;DWh=J<&(5T(*#*z~`SZUCcvd+t+n($(k(pyk6%Agudy@ zB1R&cfBRG1Te9tv@bgx{!5a^I0h2v%;WB4_s!mG|4t_q1eqXtYt}Tzb&uhBpW9+bO zAw62MZ6X5WC#wLjDUmUYiR0PPl27N+lI@XFme&RR^}2LK5$Ch3C0iS<2Dhp9$oR9v#jPdB zqe8*UvoGFQzej%Hw;^*@WAI5!wqh~2C&u-=xjbRLc`*ndwPa5ly31^<8@nz9R;u6* zMNGnHE!nH5z1DM&!z_H)l0B_hzL={4Th8XL>0%l_Y{@TLD#VKUBD?p+0e3t0y+n+| zhb{TwpC9q_1hxqrywQL*5HS!Rwq(y7>;Gey=RCjSO&9b7VVmU%>!6s6?_O>0dd&}A YdF=Ik_}SSp7W;pM$6A@)f3vS<4u@?d>;M1& literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp b/androidApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..6591e879f48c9ad8e1a5872d23f456c2e486462d GIT binary patch literal 5168 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp b/androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..a03314673da5ebf1929cdade1fbe0332615ff675 GIT binary patch literal 3680 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/androidApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..e7cc04952f70c600157b2988553e423d34fd8483 GIT binary patch literal 4120 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 WA7-*)Y?J2yH29PbWEO+qP}n?%UVa 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..522a828a7543e534d0972d10f745ca7b0e323e21 GIT binary patch literal 5164 zcmV+{6w~WcNk&E_6aWBMMM6+kP&iB&6aWA(zrZgL>QLOajU(^Bc6zRSBVqzLp^%xw z@k0O(zbI8LRWQ>mzpjw91W?gyRoed7b{pS;@5Wc<+=I*6=cxDId+)vX-h1!8_g>O; zwAWsH@3owsJz|+{oPGrrEnk3wf6Nmu=z=wI-6_mtsu8wu3=j8&HQj)_v4malK{>P1 zdxTt|N7vvH)Xc%2uqGyy-a9^Y1t0DS7jvi!)a)@&b72|H2x=sh;&KO`%{^u|O=IC1 z!Hm~9$PLNZ(~;N-b%CDk32d-;*l>*Z%t3-_g6Ta%Dfqzj2x-C+>Jd#`U@APw8By!N zRMyys)0@T%r+1VQ-(yyhN4jm>#v@hhF}h!Zf9t#XzSwqBwr$(CZQHhO8?loyB({wt zNz%Hp?(O=zXU+i`krDY7#!YP7uJU95%da3q1$8t7GC%`@s1SmQe0ggEuk~jDitz0CWPI00k@i-c4nVoP#7IywxzB~#O`5EPt>b3j@F zYXNFRjEE~w#FWT!AW4#GOR8_%|381*&)8Wwwyhm|&X3rhKsvQ)Ife92Z`-zQ+qP}n z#`|UfaJOwczWi+4wwY~nZu{1nTzmgP?e27|#6z?$t`5azjHE;;{t_ca&{hRFkvn<8{psw@~Q%PR{=g$fKL_RR|WXt`12~j*QFo%!37P58yOKh#9(j$*f>JGsQ@|a z0D$XVy4>bY2KF9OhZqcV1Dsu4TvULe0tg2X!2=yY{CC*lt1d1sb3p$uEPD^38yO5A zba8o;3PN�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 literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..ba35137cd3d0f8ce6d4cf74ff821536e78403e48 GIT binary patch literal 5564 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 KKgs{kU^f843Kd-d literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp b/androidApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..be8a34142151ed49131fd45a40ae9174fbbb82a2 GIT binary patch literal 11578 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 literal 0 HcmV?d00001 diff --git a/androidApp/src/androidMain/res/values/ic_launcher_background.xml b/androidApp/src/androidMain/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..930f6a4 --- /dev/null +++ b/androidApp/src/androidMain/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #4285F4 + \ No newline at end of file diff --git a/androidApp/src/androidMain/res/values/strings.xml b/androidApp/src/androidMain/res/values/strings.xml new file mode 100644 index 0000000..c3f801c --- /dev/null +++ b/androidApp/src/androidMain/res/values/strings.xml @@ -0,0 +1,3 @@ + + __APP_NAME__ + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..19264c6 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,6 @@ +plugins { + autowire(libs.plugins.kotlin.multiplatform) apply false + autowire(libs.plugins.android.application) apply false + autowire(libs.plugins.android.library) apply false + autowire(libs.plugins.jetbrains.compose) apply false +} \ No newline at end of file diff --git a/desktopApp/.gitignore b/desktopApp/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/desktopApp/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts new file mode 100644 index 0000000..007af15 --- /dev/null +++ b/desktopApp/build.gradle.kts @@ -0,0 +1,29 @@ +plugins { + autowire(libs.plugins.kotlin.multiplatform) + autowire(libs.plugins.jetbrains.compose) +} + +group = property.project.groupName + +kotlin { + jvm("desktop") + jvmToolchain(17) + sourceSets { + val desktopMain by getting { + dependencies { + implementation(projects.shared) + } + } + } +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +compose.desktop { + application { + mainClass = "MainKt" + } +} \ No newline at end of file diff --git a/desktopApp/src/desktopMain/kotlin/Main.kt b/desktopApp/src/desktopMain/kotlin/Main.kt new file mode 100644 index 0000000..379e597 --- /dev/null +++ b/desktopApp/src/desktopMain/kotlin/Main.kt @@ -0,0 +1,12 @@ +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Window +import androidx.compose.ui.window.application +import androidx.compose.ui.window.rememberWindowState + +fun main() = application { + Window( + onCloseRequest = ::exitApplication, + title = "__APP_NAME__", + state = rememberWindowState(width = 550.dp, height = 450.dp) + ) { MainView() } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..520560b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,19 @@ +# Compiler Configuration +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +android.useAndroidX=true +android.nonTransitiveRClass=true +kotlin.code.style=official +kotlin.incremental.useClasspathSnapshot=true +org.jetbrains.compose.experimental.uikit.enabled=true +# Project Configuration +project.name=__PROJECT_NAME__ +project.description=__PROJECT_DESCRIPTION__ +project.url=__PROJECT_URL__ +project.groupName=__GROUP_NAME__ +project.licence.name=__LICENCE_NAME__ +project.licence.url=__LICENCE_URL__ +project.android.compileSdk=34 +project.android.minSdk=21 +project.android.targetSdk=34 +project.androidApp.versionName=1.0.0 +project.androidApp.versionCode=1 \ No newline at end of file diff --git a/gradle/sweet-dependency/sweet-dependency-config.yaml b/gradle/sweet-dependency/sweet-dependency-config.yaml new file mode 100644 index 0000000..083b9eb --- /dev/null +++ b/gradle/sweet-dependency/sweet-dependency-config.yaml @@ -0,0 +1,48 @@ +preferences: + autowire-on-sync-mode: UPDATE_OPTIONAL_DEPENDENCIES + repositories-mode: FAIL_ON_PROJECT_REPOS + +repositories: + gradle-plugin-portal: + scope: PLUGINS + google: + maven-central: + +plugins: + org.jetbrains.kotlin.multiplatform: + alias: kotlin-multiplatform + version: 1.9.10 + org.jetbrains.compose: + alias: jetbrains-compose + version: 1.5.3 + com.android.application: + alias: android-application + version: + + com.android.library: + alias: android-library + version-ref: android-application + +libraries: + androidx.activity: + activity: + version: + + activity-compose: + version: + + androidx.core: + core-ktx: + version: + + androidx.appcompat: + appcompat: + version: + + com.google.android.material: + material: + version: + + androidx.test.ext: + junit: + version: + + androidx.test.espresso: + espresso-core: + version: + + junit: + junit: + version: + \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..692fc5c --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME \ No newline at end of file diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/img-src/icon.png b/img-src/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..959a79c6e9c7550236c8cb5133bc30c32eebf0d5 GIT binary patch literal 27602 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 literal 0 HcmV?d00001 diff --git a/initializer.json b/initializer.json new file mode 100644 index 0000000..49f4db4 --- /dev/null +++ b/initializer.json @@ -0,0 +1,9 @@ +{ + "__PROJECT_NAME__": "compose-multiplatform-demo", + "__APP_NAME__": "Compose Multiplatform Demo", + "__PROJECT_DESCRIPTION__": "This is a Jetpack Compose Multiplatform demo.", + "__PROJECT_URL__": "https://github.com/BetterAndroid/compose-multiplatform-template", + "__GROUP_NAME__": "com.highcapable.composemultiplatformdemo", + "__LICENCE_NAME__": "Apache License 2.0", + "__LICENCE_URL__": "https://github.com/BetterAndroid/compose-multiplatform-template/blob/main/LICENSE" +} \ No newline at end of file diff --git a/initializer.py b/initializer.py new file mode 100644 index 0000000..823236b --- /dev/null +++ b/initializer.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +import os +import json +import sys + +def replace_strings_in_file(file_path, replacements): + with open(file_path, 'r') as file: + content = file.read() + for key, value in replacements.items(): + content = content.replace(key, value) + with open(file_path, 'w') as file: + file.write(content) + +def replace_strings_in_directory(directory, replacements, extensions): + for root, dirs, files in os.walk(directory): + for file in files: + file_path = os.path.join(root, file) + if file_path.endswith(extensions): + replace_strings_in_file(file_path, replacements) + +def main(): + with open('initializer.json', 'r') as json_file: + replacements = json.load(json_file) + extensions = ('.kt', '.properties', '.xml', '.gradle.kts', '.xcconfig') + replace_strings_in_directory('.', replacements, extensions) + print("Project initialization successful.") + os.remove(sys.argv[0]) + os.remove('initializer.json') + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/iosApp/.gitignore b/iosApp/.gitignore new file mode 100644 index 0000000..a0a2d2e --- /dev/null +++ b/iosApp/.gitignore @@ -0,0 +1,6 @@ +## User settings +xcuserdata/ + +## Xcode 8 and earlier +*.xcscmblueprint +*.xccheckout \ No newline at end of file diff --git a/iosApp/Configuration/Config.xcconfig b/iosApp/Configuration/Config.xcconfig new file mode 100644 index 0000000..27e276d --- /dev/null +++ b/iosApp/Configuration/Config.xcconfig @@ -0,0 +1,3 @@ +TEAM_ID= +BUNDLE_ID=__GROUP_NAME__ +APP_NAME=__APP_NAME__ \ No newline at end of file diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c852042 --- /dev/null +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -0,0 +1,400 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; }; + 7555FF83242A565900829871 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7555FF82242A565900829871 /* ContentView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; + 7555FF7B242A565900829871 /* My application.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "My application.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F85CB1118929364A9C6EFABC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 058557D7273AAEEB004C7B11 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 42799AB246E5F90AF97AA0EF /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 7555FF72242A565900829871 = { + isa = PBXGroup; + children = ( + AB1DB47929225F7C00F7AF9C /* Configuration */, + 7555FF7D242A565900829871 /* iosApp */, + 7555FF7C242A565900829871 /* Products */, + 42799AB246E5F90AF97AA0EF /* Frameworks */, + ); + sourceTree = ""; + }; + 7555FF7C242A565900829871 /* Products */ = { + isa = PBXGroup; + children = ( + 7555FF7B242A565900829871 /* My application.app */, + ); + name = Products; + sourceTree = ""; + }; + 7555FF7D242A565900829871 /* iosApp */ = { + isa = PBXGroup; + children = ( + 058557BA273AAA24004C7B11 /* Assets.xcassets */, + 7555FF82242A565900829871 /* ContentView.swift */, + 7555FF8C242A565B00829871 /* Info.plist */, + 2152FB032600AC8F00CF470E /* iOSApp.swift */, + 058557D7273AAEEB004C7B11 /* Preview Content */, + ); + path = iosApp; + sourceTree = ""; + }; + AB1DB47929225F7C00F7AF9C /* Configuration */ = { + isa = PBXGroup; + children = ( + AB3632DC29227652001CCB65 /* Config.xcconfig */, + ); + path = Configuration; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7555FF7A242A565900829871 /* iosApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; + buildPhases = ( + 05D91A912A5EF49C00F138EB /* Compile Kotlin */, + 7555FF77242A565900829871 /* Sources */, + 7555FF79242A565900829871 /* Resources */, + F85CB1118929364A9C6EFABC /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iosApp; + productName = iosApp; + productReference = 7555FF7B242A565900829871 /* My application.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7555FF73242A565900829871 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1130; + LastUpgradeCheck = 1130; + ORGANIZATIONNAME = orgName; + TargetAttributes = { + 7555FF7A242A565900829871 = { + CreatedOnToolsVersion = 11.3.1; + }; + }; + }; + buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7555FF72242A565900829871; + productRefGroup = 7555FF7C242A565900829871 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7555FF7A242A565900829871 /* iosApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7555FF79242A565900829871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, + 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 05D91A912A5EF49C00F138EB /* Compile Kotlin */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Compile Kotlin"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd \"$SRCROOT/..\"\n./gradlew :shared:embedAndSignAppleFrameworkForXcode\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7555FF77242A565900829871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */, + 7555FF83242A565900829871 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7555FFA3242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AB3632DC29227652001CCB65 /* Config.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7555FFA4242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AB3632DC29227652001CCB65 /* Config.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7555FFA6242A565B00829871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + DEVELOPMENT_TEAM = "${TEAM_ID}"; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)\n", + "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n", + ); + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + "shared\n$(inherited)", + "-framework", + "shared\n", + ); + PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_ID}${TEAM_ID}"; + PRODUCT_NAME = "${APP_NAME}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7555FFA7242A565B00829871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; + DEVELOPMENT_TEAM = "${TEAM_ID}"; + ENABLE_PREVIEWS = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)\n", + "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n", + ); + INFOPLIST_FILE = iosApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + "shared\n$(inherited)", + "-framework", + "shared\n", + ); + PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_ID}${TEAM_ID}"; + PRODUCT_NAME = "${APP_NAME}"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA3242A565B00829871 /* Debug */, + 7555FFA4242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7555FFA6242A565B00829871 /* Debug */, + 7555FFA7242A565B00829871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7555FF73242A565900829871 /* Project object */; +} diff --git a/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..ee7e3ca --- /dev/null +++ b/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..8edf56e --- /dev/null +++ b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "app-icon-1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/app-icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..53fc536fb9ac5c1dbb27c7e1da13db3760070a11 GIT binary patch literal 67285 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 BXNCX( literal 0 HcmV?d00001 diff --git a/iosApp/iosApp/Assets.xcassets/Contents.json b/iosApp/iosApp/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/iosApp/iosApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iosApp/iosApp/ContentView.swift b/iosApp/iosApp/ContentView.swift new file mode 100644 index 0000000..82a9037 --- /dev/null +++ b/iosApp/iosApp/ContentView.swift @@ -0,0 +1,19 @@ +import UIKit +import SwiftUI +import shared + +struct ComposeView: UIViewControllerRepresentable { + func makeUIViewController(context: Context) -> UIViewController { + let viewController = App_iosKt.createUIViewController() + return viewController + } + + func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} +} + +struct ContentView: View { + var body: some View { + ComposeView() + .ignoresSafeArea(.all, edges: .bottom) // Compose has own keyboard handler + } +} diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist new file mode 100644 index 0000000..aaf5e18 --- /dev/null +++ b/iosApp/iosApp/Info.plist @@ -0,0 +1,50 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..4aa7c53 --- /dev/null +++ b/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/iosApp/iosApp/iOSApp.swift b/iosApp/iosApp/iOSApp.swift new file mode 100644 index 0000000..b7bf2f4 --- /dev/null +++ b/iosApp/iosApp/iOSApp.swift @@ -0,0 +1,10 @@ +import SwiftUI + +@main +struct iOSApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..f83a7bf --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,17 @@ +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} +plugins { + id("com.highcapable.sweetdependency") version "1.0.2" + id("com.highcapable.sweetproperty") version "1.0.3" +} +sweetProperty { + rootProject { all { isEnable = false } } +} +rootProject.name = "__PROJECT_NAME__" +include(":androidApp", ":desktopApp", ":shared") \ No newline at end of file diff --git a/shared/.gitignore b/shared/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/shared/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts new file mode 100644 index 0000000..960ff49 --- /dev/null +++ b/shared/build.gradle.kts @@ -0,0 +1,83 @@ +plugins { + autowire(libs.plugins.kotlin.multiplatform) + autowire(libs.plugins.android.library) + autowire(libs.plugins.jetbrains.compose) +} + +group = property.project.groupName + +kotlin { + androidTarget() + jvm("desktop") + listOf( + iosX64(), + iosArm64(), + iosSimulatorArm64(), + ).forEach { iosTarget -> + iosTarget.binaries.framework { + baseName = "shared" + isStatic = true + } + } + jvmToolchain(17) + sourceSets { + all { + languageSettings { + optIn("androidx.compose.material3.ExperimentalMaterial3Api") + } + } + val commonMain by getting { + dependencies { + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material3) + } + } + val androidMain by getting { + dependencies { + api(compose.foundation) + api(androidx.core.core.ktx) + api(androidx.appcompat.appcompat) + api(androidx.activity.activity) + api(androidx.activity.activity.compose) + } + } + val desktopMain by getting { + dependencies { + api(compose.desktop.currentOs) + api(compose.runtime) + api(compose.foundation) + api(compose.material3) + } + } + val iosX64Main by getting + val iosArm64Main by getting + val iosSimulatorArm64Main by getting + val iosMain by creating { + dependsOn(commonMain) + iosX64Main.dependsOn(this) + iosArm64Main.dependsOn(this) + iosSimulatorArm64Main.dependsOn(this) + } + } +} + +android { + namespace = property.project.groupName + compileSdk = property.project.android.compileSdk + + sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") + + defaultConfig { + minSdk = property.project.android.minSdk + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} \ No newline at end of file diff --git a/shared/src/androidMain/kotlin/App.android.kt b/shared/src/androidMain/kotlin/App.android.kt new file mode 100644 index 0000000..6e1edfe --- /dev/null +++ b/shared/src/androidMain/kotlin/App.android.kt @@ -0,0 +1,4 @@ +import androidx.compose.runtime.Composable + +@Composable +fun MainView() = App() \ No newline at end of file diff --git a/shared/src/commonMain/kotlin/App.kt b/shared/src/commonMain/kotlin/App.kt new file mode 100644 index 0000000..7efac3e --- /dev/null +++ b/shared/src/commonMain/kotlin/App.kt @@ -0,0 +1,34 @@ +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp + +@Composable +fun App() { + MaterialTheme { + var greeting by remember { mutableStateOf("Hello world!") } + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text(text = greeting) + Spacer(Modifier.padding(15.dp)) + Button(onClick = { greeting = "Hello Jetpack Compose Multiplatform!" }) { + Text(text = "Greeting") + } + } + } +} \ No newline at end of file diff --git a/shared/src/desktopMain/kotlin/App.desktop.kt b/shared/src/desktopMain/kotlin/App.desktop.kt new file mode 100644 index 0000000..6e1edfe --- /dev/null +++ b/shared/src/desktopMain/kotlin/App.desktop.kt @@ -0,0 +1,4 @@ +import androidx.compose.runtime.Composable + +@Composable +fun MainView() = App() \ No newline at end of file diff --git a/shared/src/iosMain/kotlin/App.ios.kt b/shared/src/iosMain/kotlin/App.ios.kt new file mode 100644 index 0000000..f85cd45 --- /dev/null +++ b/shared/src/iosMain/kotlin/App.ios.kt @@ -0,0 +1,9 @@ +@file:Suppress("unused") + +import androidx.compose.runtime.Composable +import androidx.compose.ui.window.ComposeUIViewController + +fun createUIViewController() = ComposeUIViewController { MainView() } + +@Composable +fun MainView() = App() \ No newline at end of file