@ -1 +1 @@ |
|||||||
Collection of test compose multiplatfom applications used for evaluating performance of Compose for iOS. |
### Moved to [multiplatform](https://github.com/JetBrains/compose-multiplatform/tree/master/benchmarks/multiplatform) |
@ -1,15 +0,0 @@ |
|||||||
*.iml |
|
||||||
.gradle |
|
||||||
/local.properties |
|
||||||
/.idea |
|
||||||
.DS_Store |
|
||||||
build/ |
|
||||||
/captures |
|
||||||
.externalNativeBuild |
|
||||||
.cxx |
|
||||||
iosApp/Podfile.lock |
|
||||||
iosApp/Pods/* |
|
||||||
iosApp/iosApp.xcworkspace/* |
|
||||||
iosApp/iosApp.xcodeproj/* |
|
||||||
!iosApp/iosApp.xcodeproj/project.pbxproj |
|
||||||
shared/shared.podspec |
|
@ -1,23 +0,0 @@ |
|||||||
<component name="ProjectRunConfigurationManager"> |
|
||||||
<configuration default="false" name="desktopApp" type="GradleRunConfiguration" factoryName="Gradle"> |
|
||||||
<ExternalSystemSettings> |
|
||||||
<option name="executionName" /> |
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$/desktopApp" /> |
|
||||||
<option name="externalSystemIdString" value="GRADLE" /> |
|
||||||
<option name="scriptParameters" value="" /> |
|
||||||
<option name="taskDescriptions"> |
|
||||||
<list /> |
|
||||||
</option> |
|
||||||
<option name="taskNames"> |
|
||||||
<list> |
|
||||||
<option value="run" /> |
|
||||||
</list> |
|
||||||
</option> |
|
||||||
<option name="vmOptions" value="" /> |
|
||||||
</ExternalSystemSettings> |
|
||||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess> |
|
||||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess> |
|
||||||
<DebugAllEnabled>false</DebugAllEnabled> |
|
||||||
<method v="2" /> |
|
||||||
</configuration> |
|
||||||
</component> |
|
@ -1,201 +0,0 @@ |
|||||||
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 2020-2021 JetBrains s.r.o. and and respective authors and developers. |
|
||||||
|
|
||||||
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. |
|
@ -1 +0,0 @@ |
|||||||
Infinite animation based on: https://github.com/JetBrains/compose-multiplatform-template |
|
@ -1,38 +0,0 @@ |
|||||||
plugins { |
|
||||||
kotlin("multiplatform") |
|
||||||
id("com.android.application") |
|
||||||
id("org.jetbrains.compose") |
|
||||||
} |
|
||||||
|
|
||||||
kotlin { |
|
||||||
android() |
|
||||||
sourceSets { |
|
||||||
val androidMain by getting { |
|
||||||
dependencies { |
|
||||||
implementation(project(":shared")) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
android { |
|
||||||
compileSdk = (findProperty("android.compileSdk") as String).toInt() |
|
||||||
namespace = "com.myapplication" |
|
||||||
|
|
||||||
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") |
|
||||||
|
|
||||||
defaultConfig { |
|
||||||
applicationId = "com.myapplication.MyApplication" |
|
||||||
minSdk = (findProperty("android.minSdk") as String).toInt() |
|
||||||
targetSdk = (findProperty("android.targetSdk") as String).toInt() |
|
||||||
versionCode = 1 |
|
||||||
versionName = "1.0" |
|
||||||
} |
|
||||||
compileOptions { |
|
||||||
sourceCompatibility = JavaVersion.VERSION_11 |
|
||||||
targetCompatibility = JavaVersion.VERSION_11 |
|
||||||
} |
|
||||||
kotlin { |
|
||||||
jvmToolchain(11) |
|
||||||
} |
|
||||||
} |
|
@ -1,23 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> |
|
||||||
|
|
||||||
<application |
|
||||||
android:allowBackup="true" |
|
||||||
android:icon="@mipmap/ic_launcher" |
|
||||||
android:label="@string/app_name" |
|
||||||
android:roundIcon="@mipmap/ic_launcher_round" |
|
||||||
android:supportsRtl="true" |
|
||||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar"> |
|
||||||
<activity |
|
||||||
android:exported="true" |
|
||||||
android:name=".MainActivity" |
|
||||||
> |
|
||||||
<intent-filter> |
|
||||||
<action android:name="android.intent.action.MAIN" /> |
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" /> |
|
||||||
</intent-filter> |
|
||||||
</activity> |
|
||||||
</application> |
|
||||||
|
|
||||||
</manifest> |
|
@ -1,16 +0,0 @@ |
|||||||
package com.myapplication |
|
||||||
|
|
||||||
import MainView |
|
||||||
import android.os.Bundle |
|
||||||
import androidx.activity.compose.setContent |
|
||||||
import androidx.appcompat.app.AppCompatActivity |
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() { |
|
||||||
override fun onCreate(savedInstanceState: Bundle?) { |
|
||||||
super.onCreate(savedInstanceState) |
|
||||||
|
|
||||||
setContent { |
|
||||||
MainView() |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,30 +0,0 @@ |
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|
||||||
xmlns:aapt="http://schemas.android.com/aapt" |
|
||||||
android:width="108dp" |
|
||||||
android:height="108dp" |
|
||||||
android:viewportWidth="108" |
|
||||||
android:viewportHeight="108"> |
|
||||||
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> |
|
||||||
<aapt:attr name="android:fillColor"> |
|
||||||
<gradient |
|
||||||
android:endX="85.84757" |
|
||||||
android:endY="92.4963" |
|
||||||
android:startX="42.9492" |
|
||||||
android:startY="49.59793" |
|
||||||
android:type="linear"> |
|
||||||
<item |
|
||||||
android:color="#44000000" |
|
||||||
android:offset="0.0" /> |
|
||||||
<item |
|
||||||
android:color="#00000000" |
|
||||||
android:offset="1.0" /> |
|
||||||
</gradient> |
|
||||||
</aapt:attr> |
|
||||||
</path> |
|
||||||
<path |
|
||||||
android:fillColor="#FFFFFF" |
|
||||||
android:fillType="nonZero" |
|
||||||
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" |
|
||||||
android:strokeWidth="1" |
|
||||||
android:strokeColor="#00000000" /> |
|
||||||
</vector> |
|
@ -1,170 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|
||||||
android:width="108dp" |
|
||||||
android:height="108dp" |
|
||||||
android:viewportWidth="108" |
|
||||||
android:viewportHeight="108"> |
|
||||||
<path |
|
||||||
android:fillColor="#3DDC84" |
|
||||||
android:pathData="M0,0h108v108h-108z" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M9,0L9,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,0L19,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M29,0L29,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M39,0L39,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M49,0L49,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M59,0L59,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M69,0L69,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M79,0L79,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M89,0L89,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M99,0L99,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,9L108,9" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,19L108,19" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,29L108,29" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,39L108,39" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,49L108,49" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,59L108,59" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,69L108,69" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,79L108,79" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,89L108,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,99L108,99" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,29L89,29" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,39L89,39" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,49L89,49" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,59L89,59" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,69L89,69" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,79L89,79" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M29,19L29,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M39,19L39,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M49,19L49,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M59,19L59,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M69,19L69,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M79,19L79,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
</vector> |
|
@ -1,5 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|
||||||
<background android:drawable="@drawable/ic_launcher_background" /> |
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground" /> |
|
||||||
</adaptive-icon> |
|
@ -1,5 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|
||||||
<background android:drawable="@drawable/ic_launcher_background" /> |
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground" /> |
|
||||||
</adaptive-icon> |
|
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 16 KiB |
@ -1,3 +0,0 @@ |
|||||||
<resources> |
|
||||||
<string name="app_name">My application</string> |
|
||||||
</resources> |
|
@ -1,8 +0,0 @@ |
|||||||
plugins { |
|
||||||
// this is necessary to avoid the plugins to be loaded multiple times |
|
||||||
// in each subproject's classloader |
|
||||||
kotlin("multiplatform").apply(false) |
|
||||||
id("com.android.application").apply(false) |
|
||||||
id("com.android.library").apply(false) |
|
||||||
id("org.jetbrains.compose").apply(false) |
|
||||||
} |
|
@ -1,10 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
rm -rf .idea |
|
||||||
./gradlew clean |
|
||||||
rm -rf .gradle |
|
||||||
rm -rf build |
|
||||||
rm -rf */build |
|
||||||
rm -rf iosApp/iosApp.xcworkspace |
|
||||||
rm -rf iosApp/Pods |
|
||||||
rm -rf iosApp/iosApp.xcodeproj/project.xcworkspace |
|
||||||
rm -rf iosApp/iosApp.xcodeproj/xcuserdata |
|
@ -1,30 +0,0 @@ |
|||||||
import org.jetbrains.compose.desktop.application.dsl.TargetFormat |
|
||||||
|
|
||||||
plugins { |
|
||||||
kotlin("multiplatform") |
|
||||||
id("org.jetbrains.compose") |
|
||||||
} |
|
||||||
|
|
||||||
kotlin { |
|
||||||
jvm() |
|
||||||
sourceSets { |
|
||||||
val jvmMain by getting { |
|
||||||
dependencies { |
|
||||||
implementation(compose.desktop.currentOs) |
|
||||||
implementation(project(":shared")) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
compose.desktop { |
|
||||||
application { |
|
||||||
mainClass = "MainKt" |
|
||||||
|
|
||||||
nativeDistributions { |
|
||||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) |
|
||||||
packageName = "KotlinMultiplatformComposeDesktopApplication" |
|
||||||
packageVersion = "1.0.0" |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,8 +0,0 @@ |
|||||||
import androidx.compose.ui.window.Window |
|
||||||
import androidx.compose.ui.window.application |
|
||||||
|
|
||||||
fun main() = application { |
|
||||||
Window(onCloseRequest = ::exitApplication) { |
|
||||||
MainView() |
|
||||||
} |
|
||||||
} |
|
@ -1,24 +0,0 @@ |
|||||||
#Gradle |
|
||||||
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" |
|
||||||
|
|
||||||
#Kotlin |
|
||||||
kotlin.code.style=official |
|
||||||
|
|
||||||
#MPP |
|
||||||
kotlin.mpp.stability.nowarn=true |
|
||||||
kotlin.mpp.enableCInteropCommonization=true |
|
||||||
kotlin.mpp.androidSourceSetLayoutVersion=2 |
|
||||||
|
|
||||||
#Compose |
|
||||||
org.jetbrains.compose.experimental.uikit.enabled=true |
|
||||||
|
|
||||||
#Android |
|
||||||
android.useAndroidX=true |
|
||||||
android.compileSdk=33 |
|
||||||
android.targetSdk=33 |
|
||||||
android.minSdk=24 |
|
||||||
|
|
||||||
#Versions |
|
||||||
kotlin.version=1.8.20 |
|
||||||
agp.version=7.4.2 |
|
||||||
compose.version=1.4.0 |
|
@ -1,240 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
|
|
||||||
# |
|
||||||
# Copyright © 2015-2021 the original 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 POSIX generated by Gradle. |
|
||||||
# |
|
||||||
# Important for running: |
|
||||||
# |
|
||||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is |
|
||||||
# noncompliant, but you have some other compliant shell such as ksh or |
|
||||||
# bash, then to run this script, type that shell name before the whole |
|
||||||
# command line, like: |
|
||||||
# |
|
||||||
# ksh Gradle |
|
||||||
# |
|
||||||
# Busybox and similar reduced shells will NOT work, because this script |
|
||||||
# requires all of these POSIX shell features: |
|
||||||
# * functions; |
|
||||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», |
|
||||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»; |
|
||||||
# * compound commands having a testable exit status, especially «case»; |
|
||||||
# * various built-in commands including «command», «set», and «ulimit». |
|
||||||
# |
|
||||||
# Important for patching: |
|
||||||
# |
|
||||||
# (2) This script targets any POSIX shell, so it avoids extensions provided |
|
||||||
# by Bash, Ksh, etc; in particular arrays are avoided. |
|
||||||
# |
|
||||||
# The "traditional" practice of packing multiple parameters into a |
|
||||||
# space-separated string is a well documented source of bugs and security |
|
||||||
# problems, so this is (mostly) avoided, by progressively accumulating |
|
||||||
# options in "$@", and eventually passing that to Java. |
|
||||||
# |
|
||||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, |
|
||||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; |
|
||||||
# see the in-line comments for details. |
|
||||||
# |
|
||||||
# There are tweaks for specific operating systems such as AIX, CygWin, |
|
||||||
# Darwin, MinGW, and NonStop. |
|
||||||
# |
|
||||||
# (3) This script is generated from the Groovy template |
|
||||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt |
|
||||||
# within the Gradle project. |
|
||||||
# |
|
||||||
# You can find Gradle at https://github.com/gradle/gradle/. |
|
||||||
# |
|
||||||
############################################################################## |
|
||||||
|
|
||||||
# Attempt to set APP_HOME |
|
||||||
|
|
||||||
# Resolve links: $0 may be a link |
|
||||||
app_path=$0 |
|
||||||
|
|
||||||
# Need this for daisy-chained symlinks. |
|
||||||
while |
|
||||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path |
|
||||||
[ -h "$app_path" ] |
|
||||||
do |
|
||||||
ls=$( ls -ld "$app_path" ) |
|
||||||
link=${ls#*' -> '} |
|
||||||
case $link in #( |
|
||||||
/*) app_path=$link ;; #( |
|
||||||
*) app_path=$APP_HOME$link ;; |
|
||||||
esac |
|
||||||
done |
|
||||||
|
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit |
|
||||||
|
|
||||||
APP_NAME="Gradle" |
|
||||||
APP_BASE_NAME=${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 "$*" |
|
||||||
} >&2 |
|
||||||
|
|
||||||
die () { |
|
||||||
echo |
|
||||||
echo "$*" |
|
||||||
echo |
|
||||||
exit 1 |
|
||||||
} >&2 |
|
||||||
|
|
||||||
# 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 ;; #( |
|
||||||
MSYS* | 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" && ! "$darwin" && ! "$nonstop" ; then |
|
||||||
case $MAX_FD in #( |
|
||||||
max*) |
|
||||||
MAX_FD=$( ulimit -H -n ) || |
|
||||||
warn "Could not query maximum file descriptor limit" |
|
||||||
esac |
|
||||||
case $MAX_FD in #( |
|
||||||
'' | soft) :;; #( |
|
||||||
*) |
|
||||||
ulimit -n "$MAX_FD" || |
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD" |
|
||||||
esac |
|
||||||
fi |
|
||||||
|
|
||||||
# Collect all arguments for the java command, stacking in reverse order: |
|
||||||
# * args from the command line |
|
||||||
# * the main class name |
|
||||||
# * -classpath |
|
||||||
# * -D...appname settings |
|
||||||
# * --module-path (only if needed) |
|
||||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. |
|
||||||
|
|
||||||
# For Cygwin or MSYS, switch paths to Windows format before running java |
|
||||||
if "$cygwin" || "$msys" ; then |
|
||||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) |
|
||||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) |
|
||||||
|
|
||||||
JAVACMD=$( cygpath --unix "$JAVACMD" ) |
|
||||||
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh |
|
||||||
for arg do |
|
||||||
if |
|
||||||
case $arg in #( |
|
||||||
-*) false ;; # don't mess with options #( |
|
||||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath |
|
||||||
[ -e "$t" ] ;; #( |
|
||||||
*) false ;; |
|
||||||
esac |
|
||||||
then |
|
||||||
arg=$( cygpath --path --ignore --mixed "$arg" ) |
|
||||||
fi |
|
||||||
# Roll the args list around exactly as many times as the number of |
|
||||||
# args, so each arg winds up back in the position where it started, but |
|
||||||
# possibly modified. |
|
||||||
# |
|
||||||
# NB: a `for` loop captures its iteration list before it begins, so |
|
||||||
# changing the positional parameters here affects neither the number of |
|
||||||
# iterations, nor the values presented in `arg`. |
|
||||||
shift # remove old arg |
|
||||||
set -- "$@" "$arg" # push replacement arg |
|
||||||
done |
|
||||||
fi |
|
||||||
|
|
||||||
# Collect all arguments for the java command; |
|
||||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of |
|
||||||
# shell script including quotes and variable substitutions, so put them in |
|
||||||
# double quotes to make sure that they get re-expanded; and |
|
||||||
# * put everything else in single quotes, so that it's not re-expanded. |
|
||||||
|
|
||||||
set -- \ |
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \ |
|
||||||
-classpath "$CLASSPATH" \ |
|
||||||
org.gradle.wrapper.GradleWrapperMain \ |
|
||||||
"$@" |
|
||||||
|
|
||||||
# Stop when "xargs" is not available. |
|
||||||
if ! command -v xargs >/dev/null 2>&1 |
|
||||||
then |
|
||||||
die "xargs is not available" |
|
||||||
fi |
|
||||||
|
|
||||||
# Use "xargs" to parse quoted args. |
|
||||||
# |
|
||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed. |
|
||||||
# |
|
||||||
# In Bash we could simply go: |
|
||||||
# |
|
||||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) && |
|
||||||
# set -- "${ARGS[@]}" "$@" |
|
||||||
# |
|
||||||
# but POSIX shell has neither arrays nor command substitution, so instead we |
|
||||||
# post-process each arg (as a line of input to sed) to backslash-escape any |
|
||||||
# character that might be a shell metacharacter, then use eval to reverse |
|
||||||
# that process (while maintaining the separation between arguments), and wrap |
|
||||||
# the whole thing up as a single "set" statement. |
|
||||||
# |
|
||||||
# This will of course break if any of these variables contains a newline or |
|
||||||
# an unmatched quote. |
|
||||||
# |
|
||||||
|
|
||||||
eval "set -- $( |
|
||||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | |
|
||||||
xargs -n1 | |
|
||||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | |
|
||||||
tr '\n' ' ' |
|
||||||
)" '"$@"' |
|
||||||
|
|
||||||
exec "$JAVACMD" "$@" |
|
@ -1,3 +0,0 @@ |
|||||||
TEAM_ID= |
|
||||||
BUNDLE_ID=com.myapplication.MyApplication |
|
||||||
APP_NAME=My application |
|
@ -1,5 +0,0 @@ |
|||||||
target 'iosApp' do |
|
||||||
use_frameworks! |
|
||||||
platform :ios, '14.1' |
|
||||||
pod 'shared', :path => '../shared' |
|
||||||
end |
|
@ -1,418 +0,0 @@ |
|||||||
// !$*UTF8*$! |
|
||||||
{ |
|
||||||
archiveVersion = 1; |
|
||||||
classes = { |
|
||||||
}; |
|
||||||
objectVersion = 51; |
|
||||||
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 */; }; |
|
||||||
CFDB58B53BB94DE262B13C24 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */; }; |
|
||||||
/* End PBXBuildFile section */ |
|
||||||
|
|
||||||
/* Begin PBXFileReference section */ |
|
||||||
058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; |
|
||||||
058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; }; |
|
||||||
2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = "<group>"; }; |
|
||||||
4FF3202A603A284706412EDC /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = "<group>"; }; |
|
||||||
6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; |
|
||||||
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 = "<group>"; }; |
|
||||||
7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; |
|
||||||
AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; }; |
|
||||||
FF8CA3F5360CEAB49D74065F /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = "<group>"; }; |
|
||||||
/* End PBXFileReference section */ |
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */ |
|
||||||
F85CB1118929364A9C6EFABC /* Frameworks */ = { |
|
||||||
isa = PBXFrameworksBuildPhase; |
|
||||||
buildActionMask = 2147483647; |
|
||||||
files = ( |
|
||||||
CFDB58B53BB94DE262B13C24 /* Pods_iosApp.framework in Frameworks */, |
|
||||||
); |
|
||||||
runOnlyForDeploymentPostprocessing = 0; |
|
||||||
}; |
|
||||||
/* End PBXFrameworksBuildPhase section */ |
|
||||||
|
|
||||||
/* Begin PBXGroup section */ |
|
||||||
058557D7273AAEEB004C7B11 /* Preview Content */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, |
|
||||||
); |
|
||||||
path = "Preview Content"; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
42799AB246E5F90AF97AA0EF /* Frameworks */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */, |
|
||||||
); |
|
||||||
name = Frameworks; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
7555FF72242A565900829871 = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
AB1DB47929225F7C00F7AF9C /* Configuration */, |
|
||||||
7555FF7D242A565900829871 /* iosApp */, |
|
||||||
7555FF7C242A565900829871 /* Products */, |
|
||||||
FEFF387C0A8D172AA4D59CAE /* Pods */, |
|
||||||
42799AB246E5F90AF97AA0EF /* Frameworks */, |
|
||||||
); |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
7555FF7C242A565900829871 /* Products */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
7555FF7B242A565900829871 /* My application.app */, |
|
||||||
); |
|
||||||
name = Products; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
7555FF7D242A565900829871 /* iosApp */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
058557BA273AAA24004C7B11 /* Assets.xcassets */, |
|
||||||
7555FF82242A565900829871 /* ContentView.swift */, |
|
||||||
7555FF8C242A565B00829871 /* Info.plist */, |
|
||||||
2152FB032600AC8F00CF470E /* iOSApp.swift */, |
|
||||||
058557D7273AAEEB004C7B11 /* Preview Content */, |
|
||||||
); |
|
||||||
path = iosApp; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
AB1DB47929225F7C00F7AF9C /* Configuration */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
AB3632DC29227652001CCB65 /* Config.xcconfig */, |
|
||||||
); |
|
||||||
path = Configuration; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
FEFF387C0A8D172AA4D59CAE /* Pods */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
4FF3202A603A284706412EDC /* Pods-iosApp.debug.xcconfig */, |
|
||||||
FF8CA3F5360CEAB49D74065F /* Pods-iosApp.release.xcconfig */, |
|
||||||
); |
|
||||||
path = Pods; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
/* End PBXGroup section */ |
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */ |
|
||||||
7555FF7A242A565900829871 /* iosApp */ = { |
|
||||||
isa = PBXNativeTarget; |
|
||||||
buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; |
|
||||||
buildPhases = ( |
|
||||||
98D614C51D2DA07C614CC46E /* [CP] Check Pods Manifest.lock */, |
|
||||||
7555FF77242A565900829871 /* Sources */, |
|
||||||
7555FF79242A565900829871 /* Resources */, |
|
||||||
F85CB1118929364A9C6EFABC /* Frameworks */, |
|
||||||
2134C13603D0B299603D9F49 /* [CP] Copy Pods Resources */, |
|
||||||
); |
|
||||||
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 */ |
|
||||||
2134C13603D0B299603D9F49 /* [CP] Copy Pods Resources */ = { |
|
||||||
isa = PBXShellScriptBuildPhase; |
|
||||||
buildActionMask = 2147483647; |
|
||||||
files = ( |
|
||||||
); |
|
||||||
inputFileListPaths = ( |
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-input-files.xcfilelist", |
|
||||||
); |
|
||||||
name = "[CP] Copy Pods Resources"; |
|
||||||
outputFileListPaths = ( |
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources-${CONFIGURATION}-output-files.xcfilelist", |
|
||||||
); |
|
||||||
runOnlyForDeploymentPostprocessing = 0; |
|
||||||
shellPath = /bin/sh; |
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-resources.sh\"\n"; |
|
||||||
showEnvVarsInLog = 0; |
|
||||||
}; |
|
||||||
98D614C51D2DA07C614CC46E /* [CP] Check Pods Manifest.lock */ = { |
|
||||||
isa = PBXShellScriptBuildPhase; |
|
||||||
buildActionMask = 2147483647; |
|
||||||
files = ( |
|
||||||
); |
|
||||||
inputFileListPaths = ( |
|
||||||
); |
|
||||||
inputPaths = ( |
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock", |
|
||||||
"${PODS_ROOT}/Manifest.lock", |
|
||||||
); |
|
||||||
name = "[CP] Check Pods Manifest.lock"; |
|
||||||
outputFileListPaths = ( |
|
||||||
); |
|
||||||
outputPaths = ( |
|
||||||
"$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt", |
|
||||||
); |
|
||||||
runOnlyForDeploymentPostprocessing = 0; |
|
||||||
shellPath = /bin/sh; |
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; |
|
||||||
showEnvVarsInLog = 0; |
|
||||||
}; |
|
||||||
/* 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; |
|
||||||
baseConfigurationReference = 4FF3202A603A284706412EDC /* Pods-iosApp.debug.xcconfig */; |
|
||||||
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; |
|
||||||
INFOPLIST_FILE = iosApp/Info.plist; |
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.1; |
|
||||||
LD_RUNPATH_SEARCH_PATHS = ( |
|
||||||
"$(inherited)", |
|
||||||
"@executable_path/Frameworks", |
|
||||||
); |
|
||||||
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; |
|
||||||
baseConfigurationReference = FF8CA3F5360CEAB49D74065F /* Pods-iosApp.release.xcconfig */; |
|
||||||
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; |
|
||||||
INFOPLIST_FILE = iosApp/Info.plist; |
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.1; |
|
||||||
LD_RUNPATH_SEARCH_PATHS = ( |
|
||||||
"$(inherited)", |
|
||||||
"@executable_path/Frameworks", |
|
||||||
); |
|
||||||
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 */; |
|
||||||
} |
|
@ -1,11 +0,0 @@ |
|||||||
{ |
|
||||||
"colors" : [ |
|
||||||
{ |
|
||||||
"idiom" : "universal" |
|
||||||
} |
|
||||||
], |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
@ -1,14 +0,0 @@ |
|||||||
{ |
|
||||||
"images" : [ |
|
||||||
{ |
|
||||||
"filename" : "app-icon-1024.png", |
|
||||||
"idiom" : "universal", |
|
||||||
"platform" : "ios", |
|
||||||
"size" : "1024x1024" |
|
||||||
} |
|
||||||
], |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
Before Width: | Height: | Size: 66 KiB |
@ -1,6 +0,0 @@ |
|||||||
{ |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
@ -1,21 +0,0 @@ |
|||||||
import UIKit |
|
||||||
import SwiftUI |
|
||||||
import shared |
|
||||||
|
|
||||||
struct ComposeView: UIViewControllerRepresentable { |
|
||||||
func makeUIViewController(context: Context) -> UIViewController { |
|
||||||
Main_iosKt.MainViewController() |
|
||||||
} |
|
||||||
|
|
||||||
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} |
|
||||||
} |
|
||||||
|
|
||||||
struct ContentView: View { |
|
||||||
var body: some View { |
|
||||||
ComposeView() |
|
||||||
.ignoresSafeArea(.keyboard) // Compose has own keyboard handler |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,48 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|
||||||
<plist version="1.0"> |
|
||||||
<dict> |
|
||||||
<key>CFBundleDevelopmentRegion</key> |
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string> |
|
||||||
<key>CFBundleExecutable</key> |
|
||||||
<string>$(EXECUTABLE_NAME)</string> |
|
||||||
<key>CFBundleIdentifier</key> |
|
||||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> |
|
||||||
<key>CFBundleInfoDictionaryVersion</key> |
|
||||||
<string>6.0</string> |
|
||||||
<key>CFBundleName</key> |
|
||||||
<string>$(PRODUCT_NAME)</string> |
|
||||||
<key>CFBundlePackageType</key> |
|
||||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> |
|
||||||
<key>CFBundleShortVersionString</key> |
|
||||||
<string>1.0</string> |
|
||||||
<key>CFBundleVersion</key> |
|
||||||
<string>1</string> |
|
||||||
<key>LSRequiresIPhoneOS</key> |
|
||||||
<true/> |
|
||||||
<key>UIApplicationSceneManifest</key> |
|
||||||
<dict> |
|
||||||
<key>UIApplicationSupportsMultipleScenes</key> |
|
||||||
<false/> |
|
||||||
</dict> |
|
||||||
<key>UILaunchScreen</key> |
|
||||||
<dict/> |
|
||||||
<key>UIRequiredDeviceCapabilities</key> |
|
||||||
<array> |
|
||||||
<string>armv7</string> |
|
||||||
</array> |
|
||||||
<key>UISupportedInterfaceOrientations</key> |
|
||||||
<array> |
|
||||||
<string>UIInterfaceOrientationPortrait</string> |
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string> |
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string> |
|
||||||
</array> |
|
||||||
<key>UISupportedInterfaceOrientations~ipad</key> |
|
||||||
<array> |
|
||||||
<string>UIInterfaceOrientationPortrait</string> |
|
||||||
<string>UIInterfaceOrientationPortraitUpsideDown</string> |
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string> |
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string> |
|
||||||
</array> |
|
||||||
</dict> |
|
||||||
</plist> |
|
@ -1,6 +0,0 @@ |
|||||||
{ |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
@ -1,10 +0,0 @@ |
|||||||
import SwiftUI |
|
||||||
|
|
||||||
@main |
|
||||||
struct iOSApp: App { |
|
||||||
var body: some Scene { |
|
||||||
WindowGroup { |
|
||||||
ContentView() |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,36 +0,0 @@ |
|||||||
rootProject.name = "MyApplication" |
|
||||||
|
|
||||||
include(":androidApp") |
|
||||||
include(":shared") |
|
||||||
include(":desktopApp") |
|
||||||
|
|
||||||
pluginManagement { |
|
||||||
repositories { |
|
||||||
gradlePluginPortal() |
|
||||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") |
|
||||||
google() |
|
||||||
} |
|
||||||
|
|
||||||
plugins { |
|
||||||
val kotlinVersion = extra["kotlin.version"] as String |
|
||||||
val agpVersion = extra["agp.version"] as String |
|
||||||
val composeVersion = extra["compose.version"] as String |
|
||||||
|
|
||||||
kotlin("jvm").version(kotlinVersion) |
|
||||||
kotlin("multiplatform").version(kotlinVersion) |
|
||||||
kotlin("android").version(kotlinVersion) |
|
||||||
|
|
||||||
id("com.android.application").version(agpVersion) |
|
||||||
id("com.android.library").version(agpVersion) |
|
||||||
|
|
||||||
id("org.jetbrains.compose").version(composeVersion) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
dependencyResolutionManagement { |
|
||||||
repositories { |
|
||||||
google() |
|
||||||
mavenCentral() |
|
||||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") |
|
||||||
} |
|
||||||
} |
|
@ -1,83 +0,0 @@ |
|||||||
plugins { |
|
||||||
kotlin("multiplatform") |
|
||||||
kotlin("native.cocoapods") |
|
||||||
id("com.android.library") |
|
||||||
id("org.jetbrains.compose") |
|
||||||
} |
|
||||||
|
|
||||||
kotlin { |
|
||||||
android() |
|
||||||
|
|
||||||
jvm("desktop") |
|
||||||
|
|
||||||
iosX64() |
|
||||||
iosArm64() |
|
||||||
iosSimulatorArm64() |
|
||||||
|
|
||||||
cocoapods { |
|
||||||
version = "1.0.0" |
|
||||||
summary = "Some description for the Shared Module" |
|
||||||
homepage = "Link to the Shared Module homepage" |
|
||||||
ios.deploymentTarget = "14.1" |
|
||||||
podfile = project.file("../iosApp/Podfile") |
|
||||||
framework { |
|
||||||
baseName = "shared" |
|
||||||
isStatic = true |
|
||||||
} |
|
||||||
extraSpecAttributes["resources"] = "['src/commonMain/resources/**', 'src/iosMain/resources/**']" |
|
||||||
} |
|
||||||
|
|
||||||
sourceSets { |
|
||||||
val commonMain by getting { |
|
||||||
dependencies { |
|
||||||
implementation(compose.runtime) |
|
||||||
implementation(compose.foundation) |
|
||||||
implementation(compose.material) |
|
||||||
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) |
|
||||||
implementation(compose.components.resources) |
|
||||||
} |
|
||||||
} |
|
||||||
val androidMain by getting { |
|
||||||
dependencies { |
|
||||||
api("androidx.activity:activity-compose:1.6.1") |
|
||||||
api("androidx.appcompat:appcompat:1.6.1") |
|
||||||
api("androidx.core:core-ktx:1.9.0") |
|
||||||
} |
|
||||||
} |
|
||||||
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) |
|
||||||
} |
|
||||||
val desktopMain by getting { |
|
||||||
dependencies { |
|
||||||
implementation(compose.desktop.common) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
android { |
|
||||||
compileSdk = (findProperty("android.compileSdk") as String).toInt() |
|
||||||
namespace = "com.myapplication.common" |
|
||||||
|
|
||||||
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") |
|
||||||
sourceSets["main"].res.srcDirs("src/androidMain/res") |
|
||||||
sourceSets["main"].resources.srcDirs("src/commonMain/resources") |
|
||||||
|
|
||||||
defaultConfig { |
|
||||||
minSdk = (findProperty("android.minSdk") as String).toInt() |
|
||||||
targetSdk = (findProperty("android.targetSdk") as String).toInt() |
|
||||||
} |
|
||||||
compileOptions { |
|
||||||
sourceCompatibility = JavaVersion.VERSION_11 |
|
||||||
targetCompatibility = JavaVersion.VERSION_11 |
|
||||||
} |
|
||||||
kotlin { |
|
||||||
jvmToolchain(11) |
|
||||||
} |
|
||||||
} |
|
@ -1,2 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<manifest /> |
|
@ -1,3 +0,0 @@ |
|||||||
import androidx.compose.runtime.Composable |
|
||||||
|
|
||||||
@Composable fun MainView() = App() |
|
@ -1,4 +0,0 @@ |
|||||||
import androidx.compose.desktop.ui.tooling.preview.Preview |
|
||||||
import androidx.compose.runtime.Composable |
|
||||||
|
|
||||||
@Composable fun MainView() = App() |
|
@ -1,3 +0,0 @@ |
|||||||
import androidx.compose.ui.window.ComposeUIViewController |
|
||||||
|
|
||||||
fun MainViewController() = ComposeUIViewController { App() } |
|
@ -1,8 +1 @@ |
|||||||
# Compose benchmarks for JVM vs Kotlin Native comparison |
### Moved to [multiplatform](https://github.com/JetBrains/compose-multiplatform/tree/master/benchmarks/multiplatform) |
||||||
|
|
||||||
## Run Desktop |
|
||||||
- `./gradlew :run` |
|
||||||
|
|
||||||
## Run native on MacOS |
|
||||||
- `./gradlew runReleaseExecutableMacosArm64` (Works on Arm64 processors) |
|
||||||
- `./gradlew runReleaseExecutableMacosX64` (Works on Intel processors) |
|
@ -1,16 +0,0 @@ |
|||||||
compose.version=1.4.1 |
|
||||||
kotlin.version=1.8.20 |
|
||||||
agp.version=7.0.4 |
|
||||||
org.gradle.jvmargs=-Xmx3g |
|
||||||
kotlin.code.style=official |
|
||||||
kotlin.native.useEmbeddableCompilerJar=true |
|
||||||
kotlin.native.enableDependencyPropagation=false |
|
||||||
kotlin.mpp.enableGranularSourceSetsMetadata=true |
|
||||||
# Enable kotlin/native experimental memory model |
|
||||||
kotlin.native.binary.memoryModel=experimental |
|
||||||
compose.desktop.verbose=true |
|
||||||
android.useAndroidX=true |
|
||||||
kotlin.js.webpack.major.version=4 |
|
||||||
org.jetbrains.compose.experimental.jscanvas.enabled=true |
|
||||||
org.jetbrains.compose.experimental.macos.enabled=true |
|
||||||
org.jetbrains.compose.experimental.uikit.enabled=true |
|
@ -1,5 +0,0 @@ |
|||||||
distributionBase=GRADLE_USER_HOME |
|
||||||
distributionPath=wrapper/dists |
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip |
|
||||||
zipStoreBase=GRADLE_USER_HOME |
|
||||||
zipStorePath=wrapper/dists |
|
@ -1,91 +0,0 @@ |
|||||||
@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% equ 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% equ 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! |
|
||||||
set EXIT_CODE=%ERRORLEVEL% |
|
||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1 |
|
||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% |
|
||||||
exit /b %EXIT_CODE% |
|
||||||
|
|
||||||
:mainEnd |
|
||||||
if "%OS%"=="Windows_NT" endlocal |
|
||||||
|
|
||||||
:omega |
|
@ -1,14 +0,0 @@ |
|||||||
import androidx.compose.runtime.Composable |
|
||||||
import benchmarks.animation.AnimatedVisibility |
|
||||||
import benchmarks.lazygrid.LazyGrid |
|
||||||
import benchmarks.visualeffects.NYContent |
|
||||||
|
|
||||||
fun runBenchmark(name: String, frameCount: Int, content: @Composable () -> Unit) { |
|
||||||
println("$name: " + measureComposable(frameCount, content)) |
|
||||||
} |
|
||||||
|
|
||||||
fun runBenchmarks() { |
|
||||||
runBenchmark("AnimatedVisibility", 1000000) { AnimatedVisibility() } |
|
||||||
runBenchmark("LazyGrid",2000) { LazyGrid() } |
|
||||||
runBenchmark("VisualEffects",1000) { NYContent() } |
|
||||||
} |
|
@ -1,33 +0,0 @@ |
|||||||
import androidx.compose.runtime.Composable |
|
||||||
import androidx.compose.ui.ComposeScene |
|
||||||
import androidx.compose.ui.unit.Constraints |
|
||||||
import kotlin.time.Duration |
|
||||||
import kotlin.time.ExperimentalTime |
|
||||||
|
|
||||||
const val width = 640 |
|
||||||
const val height = 480 |
|
||||||
|
|
||||||
const val nanosPerSecond = 1E9.toLong() |
|
||||||
const val nanosPerFrame = (0.16 * nanosPerSecond).toLong() |
|
||||||
|
|
||||||
@OptIn(ExperimentalTime::class) |
|
||||||
fun measureComposable( |
|
||||||
frameCount: Int = 1000, |
|
||||||
content: @Composable () -> Unit |
|
||||||
): Duration { |
|
||||||
val scene = ComposeScene() |
|
||||||
try { |
|
||||||
scene.setContent(content) |
|
||||||
scene.constraints = Constraints.fixed(width, height) |
|
||||||
val surface = org.jetbrains.skia.Surface.makeNull(width, height) |
|
||||||
return kotlin.time.measureTime { |
|
||||||
var nanoTime = 0L |
|
||||||
repeat(frameCount) { |
|
||||||
scene.render(surface.canvas, nanoTime) |
|
||||||
nanoTime += nanosPerFrame |
|
||||||
} |
|
||||||
} |
|
||||||
} finally { |
|
||||||
scene.close() |
|
||||||
} |
|
||||||
} |
|
@ -1,323 +0,0 @@ |
|||||||
package benchmarks.visualeffects |
|
||||||
|
|
||||||
import androidx.compose.foundation.background |
|
||||||
import androidx.compose.foundation.layout.* |
|
||||||
import androidx.compose.foundation.shape.CircleShape |
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape |
|
||||||
import androidx.compose.material.Surface |
|
||||||
import androidx.compose.runtime.* |
|
||||||
import androidx.compose.runtime.snapshots.SnapshotStateList |
|
||||||
import androidx.compose.ui.Modifier |
|
||||||
import androidx.compose.ui.draw.* |
|
||||||
import androidx.compose.ui.graphics.Color |
|
||||||
import androidx.compose.ui.platform.LocalDensity |
|
||||||
import androidx.compose.ui.unit.Dp |
|
||||||
import androidx.compose.ui.unit.dp |
|
||||||
import height |
|
||||||
import width |
|
||||||
|
|
||||||
import kotlin.math.* |
|
||||||
import kotlin.random.Random |
|
||||||
|
|
||||||
const val snowCount = 80 |
|
||||||
const val starCount = 60 |
|
||||||
const val rocketPartsCount = 30 |
|
||||||
|
|
||||||
data class SnowFlake( |
|
||||||
var x: Dp, |
|
||||||
var y: Dp, |
|
||||||
val scale: Float, |
|
||||||
var v: Double, |
|
||||||
var alpha: Float, |
|
||||||
var angle: Float, |
|
||||||
var rotate: Int, |
|
||||||
var phase: Double |
|
||||||
) |
|
||||||
|
|
||||||
data class Star(val x: Dp, val y: Dp, val color: Color, val size: Dp) |
|
||||||
|
|
||||||
val random = Random(123) |
|
||||||
|
|
||||||
fun random(): Float = random.nextFloat() |
|
||||||
|
|
||||||
class DoubleRocket(val particle: Particle) { |
|
||||||
private val STATE_ROCKET = 0 |
|
||||||
private val STATE_SMALL_ROCKETS = 1 |
|
||||||
var state = STATE_ROCKET |
|
||||||
var rockets: Array<Rocket> = emptyArray() |
|
||||||
private fun checkState(time: Long) { |
|
||||||
if (particle.vy > -3.0 && state == STATE_ROCKET) { |
|
||||||
explode(time) |
|
||||||
} |
|
||||||
if (state == STATE_SMALL_ROCKETS) { |
|
||||||
var done = true |
|
||||||
rockets.forEach { |
|
||||||
if (!it.exploded) { |
|
||||||
it.checkExplode(time) |
|
||||||
} |
|
||||||
if (!it.checkDone()) { |
|
||||||
done = false |
|
||||||
} |
|
||||||
} |
|
||||||
if (done) { |
|
||||||
reset() |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private fun reset() { |
|
||||||
state = STATE_ROCKET |
|
||||||
particle.x = 0.0 |
|
||||||
particle.y = 1000.0 |
|
||||||
particle.vx = 2.1 |
|
||||||
particle.vy = -12.5 |
|
||||||
} |
|
||||||
|
|
||||||
private fun explode(time: Long) { |
|
||||||
val colors = arrayOf(Color(0xff, 0, 0), Color(192, 255, 192), Color(192, 212, 255)) |
|
||||||
rockets = Array(7) { |
|
||||||
val v = 1.2f + 1.0 * random() |
|
||||||
val angle = 2 * PI * random() |
|
||||||
Rocket( |
|
||||||
Particle( |
|
||||||
particle.x, |
|
||||||
particle.y, |
|
||||||
v * sin(angle) + particle.vx, |
|
||||||
v * cos(angle) + particle.vy - 0.5f, |
|
||||||
colors[it % colors.size] |
|
||||||
), colors[it % colors.size], time |
|
||||||
) |
|
||||||
} |
|
||||||
state = STATE_SMALL_ROCKETS |
|
||||||
} |
|
||||||
|
|
||||||
fun move(time: Long, prevTime: Long) { |
|
||||||
if (rocket.state == rocket.STATE_ROCKET) { |
|
||||||
rocket.particle.move(time, prevTime) |
|
||||||
rocket.particle.gravity(time, prevTime) |
|
||||||
} else { |
|
||||||
rocket.rockets.forEach { |
|
||||||
it.move(time, prevTime) |
|
||||||
} |
|
||||||
} |
|
||||||
rocket.checkState(time) |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun draw() { |
|
||||||
if (state == rocket.STATE_ROCKET) { |
|
||||||
particle.draw() |
|
||||||
} else { |
|
||||||
rockets.forEach { |
|
||||||
it.draw() |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
class Rocket(val particle: Particle, val color: Color, val startTime: Long = 0) { |
|
||||||
var exploded = false |
|
||||||
var parts: Array<Particle> = emptyArray() |
|
||||||
|
|
||||||
fun checkExplode(time: Long) { |
|
||||||
if (time - startTime > 1200000000) { |
|
||||||
explode() |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private fun explode() { |
|
||||||
parts = Array(rocketPartsCount) { |
|
||||||
val v = 0.5f + 1.5 * random() |
|
||||||
val angle = 2 * PI * random() |
|
||||||
Particle(particle.x, particle.y, v * sin(angle) + particle.vx, v * cos(angle) + particle.vy, color, 1) |
|
||||||
} |
|
||||||
exploded = true |
|
||||||
} |
|
||||||
|
|
||||||
fun checkDone(): Boolean { |
|
||||||
if (!exploded) return false |
|
||||||
parts.forEach { |
|
||||||
if (it.y < 800) return false |
|
||||||
} |
|
||||||
return true |
|
||||||
} |
|
||||||
|
|
||||||
fun move(time: Long, prevTime: Long) { |
|
||||||
if (!exploded) { |
|
||||||
particle.move(time, prevTime) |
|
||||||
particle.gravity(time, prevTime) |
|
||||||
checkExplode(time) |
|
||||||
} else { |
|
||||||
parts.forEach { |
|
||||||
it.move(time, prevTime) |
|
||||||
it.gravity(time, prevTime) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun draw() { |
|
||||||
if (!exploded) { |
|
||||||
particle.draw() |
|
||||||
} else { |
|
||||||
parts.forEach { |
|
||||||
it.draw() |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
class Particle(var x: Double, var y: Double, var vx: Double, var vy: Double, val color: Color, val type: Int = 0) { |
|
||||||
fun move(time: Long, prevTime: Long) { |
|
||||||
x = (x + vx * (time - prevTime) / 30000000) |
|
||||||
y = (y + vy * (time - prevTime) / 30000000) |
|
||||||
} |
|
||||||
|
|
||||||
fun gravity(time: Long, prevTime: Long) { |
|
||||||
vy = vy + 1.0f * (time - prevTime) / 300000000 |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun draw() { |
|
||||||
val alphaFactor = if (type == 0) 1.0f else 1 / (1 + abs(vy / 5)).toFloat() |
|
||||||
Box(Modifier.size(5.dp).offset(x.dp, y.dp).alpha(alphaFactor).clip(CircleShape).background(color)) |
|
||||||
for (i in 1..5) { |
|
||||||
Box( |
|
||||||
Modifier.size(4.dp).offset((x - vx / 2 * i).dp, (y - vy / 2 * i).dp) |
|
||||||
.alpha(alphaFactor * (1 - 0.18f * i)).clip(CircleShape).background(color) |
|
||||||
) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
val rocket = DoubleRocket(Particle(0.0, 1000.0, 2.1, -12.5, Color.White)) |
|
||||||
|
|
||||||
fun prepareStarsAndSnowFlakes(stars: SnapshotStateList<Star>, snowFlakes: SnapshotStateList<SnowFlake>) { |
|
||||||
for (i in 0..snowCount) { |
|
||||||
snowFlakes.add( |
|
||||||
SnowFlake( |
|
||||||
(50 + (width - 50) * random()).dp, |
|
||||||
(height * random()).dp, |
|
||||||
0.1f + 0.2f * random(), |
|
||||||
1.5 + 3 * random(), |
|
||||||
(0.4f + 0.4 * random()).toFloat(), |
|
||||||
60 * random(), |
|
||||||
Random.nextInt(1, 5) - 3, |
|
||||||
random() * 2 * PI |
|
||||||
) |
|
||||||
) |
|
||||||
} |
|
||||||
val colors = arrayOf(Color.Red, Color.Yellow, Color.Green, Color.Yellow, Color.Cyan, Color.Magenta, Color.White) |
|
||||||
for (i in 0..starCount) { |
|
||||||
stars.add( |
|
||||||
Star( |
|
||||||
(width * random()).dp, |
|
||||||
(height * random()).dp, |
|
||||||
colors[Random.nextInt(colors.size)], |
|
||||||
(3 + 5 * random()).dp |
|
||||||
) |
|
||||||
) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun NYContent() { |
|
||||||
var time by remember { mutableStateOf(0L) } |
|
||||||
val startTime = remember { 0L } |
|
||||||
var prevTime by remember { mutableStateOf(0L) } |
|
||||||
val snowFlakes = remember { mutableStateListOf<SnowFlake>() } |
|
||||||
val stars = remember { mutableStateListOf<Star>() } |
|
||||||
var flickering2 by remember { mutableStateOf(true) } |
|
||||||
remember { prepareStarsAndSnowFlakes(stars, snowFlakes) } |
|
||||||
|
|
||||||
Surface( |
|
||||||
modifier = Modifier.fillMaxSize().padding(5.dp).shadow(3.dp, RoundedCornerShape(20.dp)), |
|
||||||
color = Color.Black, |
|
||||||
shape = RoundedCornerShape(20.dp) |
|
||||||
) { |
|
||||||
|
|
||||||
LaunchedEffect(Unit) { |
|
||||||
while (true) { |
|
||||||
withFrameNanos { |
|
||||||
prevTime = time |
|
||||||
time = it |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (flickering2) { |
|
||||||
if (time - startTime > 15500000000) { //note, that startTime has been updated above |
|
||||||
flickering2 = false |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
rocket.move(time, prevTime) |
|
||||||
|
|
||||||
Box(Modifier.fillMaxSize()) { |
|
||||||
|
|
||||||
snow(time, prevTime, snowFlakes, startTime) |
|
||||||
|
|
||||||
starrySky(stars) |
|
||||||
|
|
||||||
rocket.draw() |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Composable |
|
||||||
fun starrySky(stars: SnapshotStateList<Star>) { |
|
||||||
stars.forEach { |
|
||||||
star(it.x, it.y, it.color, size = it.size) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun star(x: Dp, y: Dp, color: Color = Color.White, size: Dp) { |
|
||||||
Box(Modifier.offset(x, y).scale(1.0f, 0.2f).rotate(45f).size(size).background(color)) |
|
||||||
Box(Modifier.offset(x, y).scale(0.2f, 1.0f).rotate(45f).size(size).background(color)) |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun snow(time: Long, prevTime: Long, snowFlakes: SnapshotStateList<SnowFlake>, startTime: Long) { |
|
||||||
val deltaAngle = (time - startTime) / 100000000 |
|
||||||
with(LocalDensity.current) { |
|
||||||
snowFlakes.forEach { |
|
||||||
var y = it.y + ((it.v * (time - prevTime)) / 300000000).dp |
|
||||||
if (y > (height + 20).dp) { |
|
||||||
y = -20.dp |
|
||||||
} |
|
||||||
it.y = y |
|
||||||
val x = it.x + (15 * sin(time.toDouble() / 3000000000 + it.phase)).dp |
|
||||||
snowFlake(Modifier.offset(x, y).scale(it.scale).rotate(it.angle + deltaAngle * it.rotate), it.alpha) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun snowFlake(modifier: Modifier, alpha: Float = 0.8f) { |
|
||||||
Box(modifier) { |
|
||||||
snowFlakeInt(0, 0f, 30.dp, 0.dp, alpha) |
|
||||||
snowFlakeInt(0, 60f, 15.dp, 25.dp, alpha) |
|
||||||
snowFlakeInt(0, 120f, -15.dp, 25.dp, alpha) |
|
||||||
snowFlakeInt(0, 180f, -30.dp, 0.dp, alpha) |
|
||||||
snowFlakeInt(0, 240f, -15.dp, -25.dp, alpha) |
|
||||||
snowFlakeInt(0, 300f, 15.dp, -25.dp, alpha) |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
@Composable |
|
||||||
fun snowFlakeInt(level: Int, angle: Float, shiftX: Dp, shiftY: Dp, alpha: Float) { |
|
||||||
if (level > 3) return |
|
||||||
Box( |
|
||||||
Modifier.offset(shiftX, shiftY).rotate(angle).width(100.dp).height(10.dp).scale(0.6f).alpha(1f) |
|
||||||
.background(Color.White.copy(alpha = alpha)) |
|
||||||
) { |
|
||||||
snowFlakeInt(level + 1, 30f, 12.dp, 20.dp, alpha * 0.8f) |
|
||||||
snowFlakeInt(level + 1, -30f, 12.dp, -20.dp, alpha * 0.8f) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
@ -1,36 +0,0 @@ |
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|
||||||
android:width="600dp" |
|
||||||
android:height="600dp" |
|
||||||
android:viewportWidth="600" |
|
||||||
android:viewportHeight="600"> |
|
||||||
<path |
|
||||||
android:pathData="M301.21,418.53C300.97,418.54 300.73,418.56 300.49,418.56C297.09,418.59 293.74,417.72 290.79,416.05L222.6,377.54C220.63,376.43 219,374.82 217.85,372.88C216.7,370.94 216.09,368.73 216.07,366.47L216.07,288.16C216.06,287.32 216.09,286.49 216.17,285.67C216.38,283.54 216.91,281.5 217.71,279.6L199.29,268.27L177.74,256.19C175.72,260.43 174.73,265.23 174.78,270.22L174.79,387.05C174.85,393.89 178.57,400.2 184.53,403.56L286.26,461.02C290.67,463.51 295.66,464.8 300.73,464.76C300.91,464.76 301.09,464.74 301.27,464.74C301.24,449.84 301.22,439.23 301.22,439.23L301.21,418.53Z" |
|
||||||
android:fillColor="#041619" |
|
||||||
android:fillType="nonZero"/> |
|
||||||
<path |
|
||||||
android:pathData="M409.45,242.91L312.64,188.23C303.64,183.15 292.58,183.26 283.68,188.51L187.92,245C183.31,247.73 179.93,251.62 177.75,256.17L177.74,256.19L199.29,268.27L217.71,279.6C217.83,279.32 217.92,279.02 218.05,278.74C218.24,278.36 218.43,277.98 218.64,277.62C219.06,276.88 219.52,276.18 220.04,275.51C221.37,273.8 223.01,272.35 224.87,271.25L289.06,233.39C290.42,232.59 291.87,231.96 293.39,231.51C295.53,230.87 297.77,230.6 300,230.72C302.98,230.88 305.88,231.73 308.47,233.2L373.37,269.85C375.54,271.08 377.49,272.68 379.13,274.57C379.68,275.19 380.18,275.85 380.65,276.53C380.86,276.84 381.05,277.15 381.24,277.47L397.79,266.39L420.34,252.93L420.31,252.88C417.55,248.8 413.77,245.35 409.45,242.91Z" |
|
||||||
android:fillColor="#37BF6E" |
|
||||||
android:fillType="nonZero"/> |
|
||||||
<path |
|
||||||
android:pathData="M381.24,277.47C381.51,277.92 381.77,278.38 382.01,278.84C382.21,279.24 382.39,279.65 382.57,280.06C382.91,280.88 383.19,281.73 383.41,282.59C383.74,283.88 383.92,285.21 383.93,286.57L383.93,361.1C383.96,363.95 383.35,366.77 382.16,369.36C381.93,369.86 381.69,370.35 381.42,370.83C379.75,373.79 377.32,376.27 374.39,378L310.2,415.87C307.47,417.48 304.38,418.39 301.21,418.53L301.22,439.23C301.22,439.23 301.24,449.84 301.27,464.74C306.1,464.61 310.91,463.3 315.21,460.75L410.98,404.25C419.88,399 425.31,389.37 425.22,379.03L425.22,267.85C425.17,262.48 423.34,257.34 420.34,252.93L397.79,266.39L381.24,277.47Z" |
|
||||||
android:fillColor="#3870B2" |
|
||||||
android:fillType="nonZero"/> |
|
||||||
<path |
|
||||||
android:pathData="M177.75,256.17C179.93,251.62 183.31,247.73 187.92,245L283.68,188.51C292.58,183.26 303.64,183.15 312.64,188.23L409.45,242.91C413.77,245.35 417.55,248.8 420.31,252.88L420.34,252.93L498.59,206.19C494.03,199.46 487.79,193.78 480.67,189.75L320.86,99.49C306.01,91.1 287.75,91.27 273.07,99.95L114.99,193.2C107.39,197.69 101.81,204.11 98.21,211.63L177.74,256.19L177.75,256.17ZM301.27,464.74C301.09,464.74 300.91,464.76 300.73,464.76C295.66,464.8 290.67,463.51 286.26,461.02L184.53,403.56C178.57,400.2 174.85,393.89 174.79,387.05L174.78,270.22C174.73,265.23 175.72,260.43 177.74,256.19L98.21,211.63C94.86,218.63 93.23,226.58 93.31,234.82L93.31,427.67C93.42,438.97 99.54,449.37 109.4,454.92L277.31,549.77C284.6,553.88 292.84,556.01 301.2,555.94L301.2,555.8C301.39,543.78 301.33,495.26 301.27,464.74Z" |
|
||||||
android:strokeWidth="10" |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:strokeColor="#083042" |
|
||||||
android:fillType="nonZero"/> |
|
||||||
<path |
|
||||||
android:pathData="M498.59,206.19L420.34,252.93C423.34,257.34 425.17,262.48 425.22,267.85L425.22,379.03C425.31,389.37 419.88,399 410.98,404.25L315.21,460.75C310.91,463.3 306.1,464.61 301.27,464.74C301.33,495.26 301.39,543.78 301.2,555.8L301.2,555.94C309.48,555.87 317.74,553.68 325.11,549.32L483.18,456.06C497.87,447.39 506.85,431.49 506.69,414.43L506.69,230.91C506.6,222.02 503.57,213.5 498.59,206.19Z" |
|
||||||
android:strokeWidth="10" |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:strokeColor="#083042" |
|
||||||
android:fillType="nonZero"/> |
|
||||||
<path |
|
||||||
android:pathData="M301.2,555.94C292.84,556.01 284.6,553.88 277.31,549.76L109.4,454.92C99.54,449.37 93.42,438.97 93.31,427.67L93.31,234.82C93.23,226.58 94.86,218.63 98.21,211.63C101.81,204.11 107.39,197.69 114.99,193.2L273.07,99.95C287.75,91.27 306.01,91.1 320.86,99.49L480.67,189.75C487.79,193.78 494.03,199.46 498.59,206.19C503.57,213.5 506.6,222.02 506.69,230.91L506.69,414.43C506.85,431.49 497.87,447.39 483.18,456.06L325.11,549.32C317.74,553.68 309.48,555.87 301.2,555.94Z" |
|
||||||
android:strokeWidth="10" |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:strokeColor="#083042" |
|
||||||
android:fillType="nonZero"/> |
|
||||||
</vector> |
|
@ -1,9 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
|
||||||
*/ |
|
||||||
|
|
||||||
import kotlinx.coroutines.Dispatchers |
|
||||||
import kotlinx.coroutines.runBlocking |
|
||||||
|
|
||||||
fun main() = runBlocking(Dispatchers.Main) { runBenchmarks() } |
|
@ -1,6 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
|
||||||
*/ |
|
||||||
|
|
||||||
fun main() = runBenchmarks() |
|
@ -1,15 +0,0 @@ |
|||||||
*.iml |
|
||||||
.gradle |
|
||||||
/local.properties |
|
||||||
/.idea |
|
||||||
.DS_Store |
|
||||||
build/ |
|
||||||
/captures |
|
||||||
.externalNativeBuild |
|
||||||
.cxx |
|
||||||
iosApp/Podfile.lock |
|
||||||
iosApp/Pods/* |
|
||||||
iosApp/iosApp.xcworkspace/* |
|
||||||
iosApp/iosApp.xcodeproj/* |
|
||||||
!iosApp/iosApp.xcodeproj/project.pbxproj |
|
||||||
shared/shared.podspec |
|
@ -1,23 +0,0 @@ |
|||||||
<component name="ProjectRunConfigurationManager"> |
|
||||||
<configuration default="false" name="desktopApp" type="GradleRunConfiguration" factoryName="Gradle"> |
|
||||||
<ExternalSystemSettings> |
|
||||||
<option name="executionName" /> |
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$/desktopApp" /> |
|
||||||
<option name="externalSystemIdString" value="GRADLE" /> |
|
||||||
<option name="scriptParameters" value="" /> |
|
||||||
<option name="taskDescriptions"> |
|
||||||
<list /> |
|
||||||
</option> |
|
||||||
<option name="taskNames"> |
|
||||||
<list> |
|
||||||
<option value="run" /> |
|
||||||
</list> |
|
||||||
</option> |
|
||||||
<option name="vmOptions" value="" /> |
|
||||||
</ExternalSystemSettings> |
|
||||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess> |
|
||||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess> |
|
||||||
<DebugAllEnabled>false</DebugAllEnabled> |
|
||||||
<method v="2" /> |
|
||||||
</configuration> |
|
||||||
</component> |
|
@ -1,201 +0,0 @@ |
|||||||
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 2020-2021 JetBrains s.r.o. and and respective authors and developers. |
|
||||||
|
|
||||||
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. |
|
@ -1 +0,0 @@ |
|||||||
A benchmark app extracted from https://github.com/androidx/androidx/blob/androidx-main/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/LazyVerticalGridActivity.kt |
|
@ -1,38 +0,0 @@ |
|||||||
plugins { |
|
||||||
kotlin("multiplatform") |
|
||||||
id("com.android.application") |
|
||||||
id("org.jetbrains.compose") |
|
||||||
} |
|
||||||
|
|
||||||
kotlin { |
|
||||||
android() |
|
||||||
sourceSets { |
|
||||||
val androidMain by getting { |
|
||||||
dependencies { |
|
||||||
implementation(project(":shared")) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
android { |
|
||||||
compileSdk = (findProperty("android.compileSdk") as String).toInt() |
|
||||||
namespace = "com.myapplication" |
|
||||||
|
|
||||||
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") |
|
||||||
|
|
||||||
defaultConfig { |
|
||||||
applicationId = "com.myapplication.MyApplication" |
|
||||||
minSdk = (findProperty("android.minSdk") as String).toInt() |
|
||||||
targetSdk = (findProperty("android.targetSdk") as String).toInt() |
|
||||||
versionCode = 1 |
|
||||||
versionName = "1.0" |
|
||||||
} |
|
||||||
compileOptions { |
|
||||||
sourceCompatibility = JavaVersion.VERSION_11 |
|
||||||
targetCompatibility = JavaVersion.VERSION_11 |
|
||||||
} |
|
||||||
kotlin { |
|
||||||
jvmToolchain(11) |
|
||||||
} |
|
||||||
} |
|
@ -1,23 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> |
|
||||||
|
|
||||||
<application |
|
||||||
android:allowBackup="true" |
|
||||||
android:icon="@mipmap/ic_launcher" |
|
||||||
android:label="@string/app_name" |
|
||||||
android:roundIcon="@mipmap/ic_launcher_round" |
|
||||||
android:supportsRtl="true" |
|
||||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar"> |
|
||||||
<activity |
|
||||||
android:exported="true" |
|
||||||
android:name=".MainActivity" |
|
||||||
> |
|
||||||
<intent-filter> |
|
||||||
<action android:name="android.intent.action.MAIN" /> |
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" /> |
|
||||||
</intent-filter> |
|
||||||
</activity> |
|
||||||
</application> |
|
||||||
|
|
||||||
</manifest> |
|
@ -1,16 +0,0 @@ |
|||||||
package com.myapplication |
|
||||||
|
|
||||||
import MainView |
|
||||||
import android.os.Bundle |
|
||||||
import androidx.activity.compose.setContent |
|
||||||
import androidx.appcompat.app.AppCompatActivity |
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() { |
|
||||||
override fun onCreate(savedInstanceState: Bundle?) { |
|
||||||
super.onCreate(savedInstanceState) |
|
||||||
|
|
||||||
setContent { |
|
||||||
MainView() |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,30 +0,0 @@ |
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|
||||||
xmlns:aapt="http://schemas.android.com/aapt" |
|
||||||
android:width="108dp" |
|
||||||
android:height="108dp" |
|
||||||
android:viewportWidth="108" |
|
||||||
android:viewportHeight="108"> |
|
||||||
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> |
|
||||||
<aapt:attr name="android:fillColor"> |
|
||||||
<gradient |
|
||||||
android:endX="85.84757" |
|
||||||
android:endY="92.4963" |
|
||||||
android:startX="42.9492" |
|
||||||
android:startY="49.59793" |
|
||||||
android:type="linear"> |
|
||||||
<item |
|
||||||
android:color="#44000000" |
|
||||||
android:offset="0.0" /> |
|
||||||
<item |
|
||||||
android:color="#00000000" |
|
||||||
android:offset="1.0" /> |
|
||||||
</gradient> |
|
||||||
</aapt:attr> |
|
||||||
</path> |
|
||||||
<path |
|
||||||
android:fillColor="#FFFFFF" |
|
||||||
android:fillType="nonZero" |
|
||||||
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" |
|
||||||
android:strokeWidth="1" |
|
||||||
android:strokeColor="#00000000" /> |
|
||||||
</vector> |
|
@ -1,170 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|
||||||
android:width="108dp" |
|
||||||
android:height="108dp" |
|
||||||
android:viewportWidth="108" |
|
||||||
android:viewportHeight="108"> |
|
||||||
<path |
|
||||||
android:fillColor="#3DDC84" |
|
||||||
android:pathData="M0,0h108v108h-108z" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M9,0L9,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,0L19,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M29,0L29,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M39,0L39,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M49,0L49,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M59,0L59,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M69,0L69,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M79,0L79,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M89,0L89,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M99,0L99,108" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,9L108,9" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,19L108,19" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,29L108,29" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,39L108,39" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,49L108,49" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,59L108,59" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,69L108,69" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,79L108,79" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,89L108,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M0,99L108,99" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,29L89,29" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,39L89,39" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,49L89,49" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,59L89,59" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,69L89,69" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M19,79L89,79" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M29,19L29,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M39,19L39,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M49,19L49,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M59,19L59,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M69,19L69,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
<path |
|
||||||
android:fillColor="#00000000" |
|
||||||
android:pathData="M79,19L79,89" |
|
||||||
android:strokeWidth="0.8" |
|
||||||
android:strokeColor="#33FFFFFF" /> |
|
||||||
</vector> |
|
@ -1,5 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|
||||||
<background android:drawable="@drawable/ic_launcher_background" /> |
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground" /> |
|
||||||
</adaptive-icon> |
|
@ -1,5 +0,0 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|
||||||
<background android:drawable="@drawable/ic_launcher_background" /> |
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground" /> |
|
||||||
</adaptive-icon> |
|
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 16 KiB |
@ -1,3 +0,0 @@ |
|||||||
<resources> |
|
||||||
<string name="app_name">My application</string> |
|
||||||
</resources> |
|
@ -1,8 +0,0 @@ |
|||||||
plugins { |
|
||||||
// this is necessary to avoid the plugins to be loaded multiple times |
|
||||||
// in each subproject's classloader |
|
||||||
kotlin("multiplatform").apply(false) |
|
||||||
id("com.android.application").apply(false) |
|
||||||
id("com.android.library").apply(false) |
|
||||||
id("org.jetbrains.compose").apply(false) |
|
||||||
} |
|
@ -1,10 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
rm -rf .idea |
|
||||||
./gradlew clean |
|
||||||
rm -rf .gradle |
|
||||||
rm -rf build |
|
||||||
rm -rf */build |
|
||||||
rm -rf iosApp/iosApp.xcworkspace |
|
||||||
rm -rf iosApp/Pods |
|
||||||
rm -rf iosApp/iosApp.xcodeproj/project.xcworkspace |
|
||||||
rm -rf iosApp/iosApp.xcodeproj/xcuserdata |
|
@ -1,30 +0,0 @@ |
|||||||
import org.jetbrains.compose.desktop.application.dsl.TargetFormat |
|
||||||
|
|
||||||
plugins { |
|
||||||
kotlin("multiplatform") |
|
||||||
id("org.jetbrains.compose") |
|
||||||
} |
|
||||||
|
|
||||||
kotlin { |
|
||||||
jvm() |
|
||||||
sourceSets { |
|
||||||
val jvmMain by getting { |
|
||||||
dependencies { |
|
||||||
implementation(compose.desktop.currentOs) |
|
||||||
implementation(project(":shared")) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
compose.desktop { |
|
||||||
application { |
|
||||||
mainClass = "MainKt" |
|
||||||
|
|
||||||
nativeDistributions { |
|
||||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) |
|
||||||
packageName = "KotlinMultiplatformComposeDesktopApplication" |
|
||||||
packageVersion = "1.0.0" |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,8 +0,0 @@ |
|||||||
import androidx.compose.ui.window.Window |
|
||||||
import androidx.compose.ui.window.application |
|
||||||
|
|
||||||
fun main() = application { |
|
||||||
Window(onCloseRequest = ::exitApplication) { |
|
||||||
MainView() |
|
||||||
} |
|
||||||
} |
|
@ -1,24 +0,0 @@ |
|||||||
#Gradle |
|
||||||
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" |
|
||||||
|
|
||||||
#Kotlin |
|
||||||
kotlin.code.style=official |
|
||||||
|
|
||||||
#MPP |
|
||||||
kotlin.mpp.stability.nowarn=true |
|
||||||
kotlin.mpp.enableCInteropCommonization=true |
|
||||||
kotlin.mpp.androidSourceSetLayoutVersion=2 |
|
||||||
|
|
||||||
#Compose |
|
||||||
org.jetbrains.compose.experimental.uikit.enabled=true |
|
||||||
|
|
||||||
#Android |
|
||||||
android.useAndroidX=true |
|
||||||
android.compileSdk=33 |
|
||||||
android.targetSdk=33 |
|
||||||
android.minSdk=24 |
|
||||||
|
|
||||||
#Versions |
|
||||||
kotlin.version=1.8.20 |
|
||||||
agp.version=7.4.2 |
|
||||||
compose.version=1.4.0 |
|
@ -1,5 +0,0 @@ |
|||||||
distributionBase=GRADLE_USER_HOME |
|
||||||
distributionPath=wrapper/dists |
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip |
|
||||||
zipStoreBase=GRADLE_USER_HOME |
|
||||||
zipStorePath=wrapper/dists |
|
@ -1,240 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
|
|
||||||
# |
|
||||||
# Copyright © 2015-2021 the original 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 POSIX generated by Gradle. |
|
||||||
# |
|
||||||
# Important for running: |
|
||||||
# |
|
||||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is |
|
||||||
# noncompliant, but you have some other compliant shell such as ksh or |
|
||||||
# bash, then to run this script, type that shell name before the whole |
|
||||||
# command line, like: |
|
||||||
# |
|
||||||
# ksh Gradle |
|
||||||
# |
|
||||||
# Busybox and similar reduced shells will NOT work, because this script |
|
||||||
# requires all of these POSIX shell features: |
|
||||||
# * functions; |
|
||||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», |
|
||||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»; |
|
||||||
# * compound commands having a testable exit status, especially «case»; |
|
||||||
# * various built-in commands including «command», «set», and «ulimit». |
|
||||||
# |
|
||||||
# Important for patching: |
|
||||||
# |
|
||||||
# (2) This script targets any POSIX shell, so it avoids extensions provided |
|
||||||
# by Bash, Ksh, etc; in particular arrays are avoided. |
|
||||||
# |
|
||||||
# The "traditional" practice of packing multiple parameters into a |
|
||||||
# space-separated string is a well documented source of bugs and security |
|
||||||
# problems, so this is (mostly) avoided, by progressively accumulating |
|
||||||
# options in "$@", and eventually passing that to Java. |
|
||||||
# |
|
||||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, |
|
||||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; |
|
||||||
# see the in-line comments for details. |
|
||||||
# |
|
||||||
# There are tweaks for specific operating systems such as AIX, CygWin, |
|
||||||
# Darwin, MinGW, and NonStop. |
|
||||||
# |
|
||||||
# (3) This script is generated from the Groovy template |
|
||||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt |
|
||||||
# within the Gradle project. |
|
||||||
# |
|
||||||
# You can find Gradle at https://github.com/gradle/gradle/. |
|
||||||
# |
|
||||||
############################################################################## |
|
||||||
|
|
||||||
# Attempt to set APP_HOME |
|
||||||
|
|
||||||
# Resolve links: $0 may be a link |
|
||||||
app_path=$0 |
|
||||||
|
|
||||||
# Need this for daisy-chained symlinks. |
|
||||||
while |
|
||||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path |
|
||||||
[ -h "$app_path" ] |
|
||||||
do |
|
||||||
ls=$( ls -ld "$app_path" ) |
|
||||||
link=${ls#*' -> '} |
|
||||||
case $link in #( |
|
||||||
/*) app_path=$link ;; #( |
|
||||||
*) app_path=$APP_HOME$link ;; |
|
||||||
esac |
|
||||||
done |
|
||||||
|
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit |
|
||||||
|
|
||||||
APP_NAME="Gradle" |
|
||||||
APP_BASE_NAME=${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 "$*" |
|
||||||
} >&2 |
|
||||||
|
|
||||||
die () { |
|
||||||
echo |
|
||||||
echo "$*" |
|
||||||
echo |
|
||||||
exit 1 |
|
||||||
} >&2 |
|
||||||
|
|
||||||
# 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 ;; #( |
|
||||||
MSYS* | 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" && ! "$darwin" && ! "$nonstop" ; then |
|
||||||
case $MAX_FD in #( |
|
||||||
max*) |
|
||||||
MAX_FD=$( ulimit -H -n ) || |
|
||||||
warn "Could not query maximum file descriptor limit" |
|
||||||
esac |
|
||||||
case $MAX_FD in #( |
|
||||||
'' | soft) :;; #( |
|
||||||
*) |
|
||||||
ulimit -n "$MAX_FD" || |
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD" |
|
||||||
esac |
|
||||||
fi |
|
||||||
|
|
||||||
# Collect all arguments for the java command, stacking in reverse order: |
|
||||||
# * args from the command line |
|
||||||
# * the main class name |
|
||||||
# * -classpath |
|
||||||
# * -D...appname settings |
|
||||||
# * --module-path (only if needed) |
|
||||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. |
|
||||||
|
|
||||||
# For Cygwin or MSYS, switch paths to Windows format before running java |
|
||||||
if "$cygwin" || "$msys" ; then |
|
||||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) |
|
||||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) |
|
||||||
|
|
||||||
JAVACMD=$( cygpath --unix "$JAVACMD" ) |
|
||||||
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh |
|
||||||
for arg do |
|
||||||
if |
|
||||||
case $arg in #( |
|
||||||
-*) false ;; # don't mess with options #( |
|
||||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath |
|
||||||
[ -e "$t" ] ;; #( |
|
||||||
*) false ;; |
|
||||||
esac |
|
||||||
then |
|
||||||
arg=$( cygpath --path --ignore --mixed "$arg" ) |
|
||||||
fi |
|
||||||
# Roll the args list around exactly as many times as the number of |
|
||||||
# args, so each arg winds up back in the position where it started, but |
|
||||||
# possibly modified. |
|
||||||
# |
|
||||||
# NB: a `for` loop captures its iteration list before it begins, so |
|
||||||
# changing the positional parameters here affects neither the number of |
|
||||||
# iterations, nor the values presented in `arg`. |
|
||||||
shift # remove old arg |
|
||||||
set -- "$@" "$arg" # push replacement arg |
|
||||||
done |
|
||||||
fi |
|
||||||
|
|
||||||
# Collect all arguments for the java command; |
|
||||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of |
|
||||||
# shell script including quotes and variable substitutions, so put them in |
|
||||||
# double quotes to make sure that they get re-expanded; and |
|
||||||
# * put everything else in single quotes, so that it's not re-expanded. |
|
||||||
|
|
||||||
set -- \ |
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \ |
|
||||||
-classpath "$CLASSPATH" \ |
|
||||||
org.gradle.wrapper.GradleWrapperMain \ |
|
||||||
"$@" |
|
||||||
|
|
||||||
# Stop when "xargs" is not available. |
|
||||||
if ! command -v xargs >/dev/null 2>&1 |
|
||||||
then |
|
||||||
die "xargs is not available" |
|
||||||
fi |
|
||||||
|
|
||||||
# Use "xargs" to parse quoted args. |
|
||||||
# |
|
||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed. |
|
||||||
# |
|
||||||
# In Bash we could simply go: |
|
||||||
# |
|
||||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) && |
|
||||||
# set -- "${ARGS[@]}" "$@" |
|
||||||
# |
|
||||||
# but POSIX shell has neither arrays nor command substitution, so instead we |
|
||||||
# post-process each arg (as a line of input to sed) to backslash-escape any |
|
||||||
# character that might be a shell metacharacter, then use eval to reverse |
|
||||||
# that process (while maintaining the separation between arguments), and wrap |
|
||||||
# the whole thing up as a single "set" statement. |
|
||||||
# |
|
||||||
# This will of course break if any of these variables contains a newline or |
|
||||||
# an unmatched quote. |
|
||||||
# |
|
||||||
|
|
||||||
eval "set -- $( |
|
||||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | |
|
||||||
xargs -n1 | |
|
||||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | |
|
||||||
tr '\n' ' ' |
|
||||||
)" '"$@"' |
|
||||||
|
|
||||||
exec "$JAVACMD" "$@" |
|
@ -1,91 +0,0 @@ |
|||||||
@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% equ 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% equ 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! |
|
||||||
set EXIT_CODE=%ERRORLEVEL% |
|
||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1 |
|
||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% |
|
||||||
exit /b %EXIT_CODE% |
|
||||||
|
|
||||||
:mainEnd |
|
||||||
if "%OS%"=="Windows_NT" endlocal |
|
||||||
|
|
||||||
:omega |
|
@ -1,3 +0,0 @@ |
|||||||
TEAM_ID= |
|
||||||
BUNDLE_ID=com.myapplication.MyApplication |
|
||||||
APP_NAME=My application |
|
@ -1,5 +0,0 @@ |
|||||||
target 'iosApp' do |
|
||||||
use_frameworks! |
|
||||||
platform :ios, '14.1' |
|
||||||
pod 'shared', :path => '../shared' |
|
||||||
end |
|
@ -1,400 +0,0 @@ |
|||||||
// !$*UTF8*$! |
|
||||||
{ |
|
||||||
archiveVersion = 1; |
|
||||||
classes = { |
|
||||||
}; |
|
||||||
objectVersion = 51; |
|
||||||
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 */; }; |
|
||||||
CFDB58B53BB94DE262B13C24 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */; }; |
|
||||||
/* End PBXBuildFile section */ |
|
||||||
|
|
||||||
/* Begin PBXFileReference section */ |
|
||||||
058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; |
|
||||||
058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; }; |
|
||||||
2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = "<group>"; }; |
|
||||||
4FF3202A603A284706412EDC /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = "<group>"; }; |
|
||||||
6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; |
|
||||||
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 = "<group>"; }; |
|
||||||
7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; |
|
||||||
AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; }; |
|
||||||
FF8CA3F5360CEAB49D74065F /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = "<group>"; }; |
|
||||||
/* End PBXFileReference section */ |
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */ |
|
||||||
F85CB1118929364A9C6EFABC /* Frameworks */ = { |
|
||||||
isa = PBXFrameworksBuildPhase; |
|
||||||
buildActionMask = 2147483647; |
|
||||||
files = ( |
|
||||||
CFDB58B53BB94DE262B13C24 /* Pods_iosApp.framework in Frameworks */, |
|
||||||
); |
|
||||||
runOnlyForDeploymentPostprocessing = 0; |
|
||||||
}; |
|
||||||
/* End PBXFrameworksBuildPhase section */ |
|
||||||
|
|
||||||
/* Begin PBXGroup section */ |
|
||||||
058557D7273AAEEB004C7B11 /* Preview Content */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, |
|
||||||
); |
|
||||||
path = "Preview Content"; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
42799AB246E5F90AF97AA0EF /* Frameworks */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
6B1049432C0C2B312090ABF6 /* Pods_iosApp.framework */, |
|
||||||
); |
|
||||||
name = Frameworks; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
7555FF72242A565900829871 = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
AB1DB47929225F7C00F7AF9C /* Configuration */, |
|
||||||
7555FF7D242A565900829871 /* iosApp */, |
|
||||||
7555FF7C242A565900829871 /* Products */, |
|
||||||
FEFF387C0A8D172AA4D59CAE /* Pods */, |
|
||||||
42799AB246E5F90AF97AA0EF /* Frameworks */, |
|
||||||
); |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
7555FF7C242A565900829871 /* Products */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
7555FF7B242A565900829871 /* My application.app */, |
|
||||||
); |
|
||||||
name = Products; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
7555FF7D242A565900829871 /* iosApp */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
058557BA273AAA24004C7B11 /* Assets.xcassets */, |
|
||||||
7555FF82242A565900829871 /* ContentView.swift */, |
|
||||||
7555FF8C242A565B00829871 /* Info.plist */, |
|
||||||
2152FB032600AC8F00CF470E /* iOSApp.swift */, |
|
||||||
058557D7273AAEEB004C7B11 /* Preview Content */, |
|
||||||
); |
|
||||||
path = iosApp; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
AB1DB47929225F7C00F7AF9C /* Configuration */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
AB3632DC29227652001CCB65 /* Config.xcconfig */, |
|
||||||
); |
|
||||||
path = Configuration; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
FEFF387C0A8D172AA4D59CAE /* Pods */ = { |
|
||||||
isa = PBXGroup; |
|
||||||
children = ( |
|
||||||
4FF3202A603A284706412EDC /* Pods-iosApp.debug.xcconfig */, |
|
||||||
FF8CA3F5360CEAB49D74065F /* Pods-iosApp.release.xcconfig */, |
|
||||||
); |
|
||||||
path = Pods; |
|
||||||
sourceTree = "<group>"; |
|
||||||
}; |
|
||||||
/* End PBXGroup section */ |
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */ |
|
||||||
7555FF7A242A565900829871 /* iosApp */ = { |
|
||||||
isa = PBXNativeTarget; |
|
||||||
buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; |
|
||||||
buildPhases = ( |
|
||||||
98D614C51D2DA07C614CC46E /* [CP] Check Pods Manifest.lock */, |
|
||||||
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 */ |
|
||||||
98D614C51D2DA07C614CC46E /* [CP] Check Pods Manifest.lock */ = { |
|
||||||
isa = PBXShellScriptBuildPhase; |
|
||||||
buildActionMask = 2147483647; |
|
||||||
files = ( |
|
||||||
); |
|
||||||
inputFileListPaths = ( |
|
||||||
); |
|
||||||
inputPaths = ( |
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock", |
|
||||||
"${PODS_ROOT}/Manifest.lock", |
|
||||||
); |
|
||||||
name = "[CP] Check Pods Manifest.lock"; |
|
||||||
outputFileListPaths = ( |
|
||||||
); |
|
||||||
outputPaths = ( |
|
||||||
"$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt", |
|
||||||
); |
|
||||||
runOnlyForDeploymentPostprocessing = 0; |
|
||||||
shellPath = /bin/sh; |
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; |
|
||||||
showEnvVarsInLog = 0; |
|
||||||
}; |
|
||||||
/* 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; |
|
||||||
baseConfigurationReference = 4FF3202A603A284706412EDC /* Pods-iosApp.debug.xcconfig */; |
|
||||||
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; |
|
||||||
INFOPLIST_FILE = iosApp/Info.plist; |
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.1; |
|
||||||
LD_RUNPATH_SEARCH_PATHS = ( |
|
||||||
"$(inherited)", |
|
||||||
"@executable_path/Frameworks", |
|
||||||
); |
|
||||||
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; |
|
||||||
baseConfigurationReference = FF8CA3F5360CEAB49D74065F /* Pods-iosApp.release.xcconfig */; |
|
||||||
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; |
|
||||||
INFOPLIST_FILE = iosApp/Info.plist; |
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 14.1; |
|
||||||
LD_RUNPATH_SEARCH_PATHS = ( |
|
||||||
"$(inherited)", |
|
||||||
"@executable_path/Frameworks", |
|
||||||
); |
|
||||||
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 */; |
|
||||||
} |
|
@ -1,11 +0,0 @@ |
|||||||
{ |
|
||||||
"colors" : [ |
|
||||||
{ |
|
||||||
"idiom" : "universal" |
|
||||||
} |
|
||||||
], |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
@ -1,14 +0,0 @@ |
|||||||
{ |
|
||||||
"images" : [ |
|
||||||
{ |
|
||||||
"filename" : "app-icon-1024.png", |
|
||||||
"idiom" : "universal", |
|
||||||
"platform" : "ios", |
|
||||||
"size" : "1024x1024" |
|
||||||
} |
|
||||||
], |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
Before Width: | Height: | Size: 66 KiB |
@ -1,6 +0,0 @@ |
|||||||
{ |
|
||||||
"info" : { |
|
||||||
"author" : "xcode", |
|
||||||
"version" : 1 |
|
||||||
} |
|
||||||
} |
|
@ -1,21 +0,0 @@ |
|||||||
import UIKit |
|
||||||
import SwiftUI |
|
||||||
import shared |
|
||||||
|
|
||||||
struct ComposeView: UIViewControllerRepresentable { |
|
||||||
func makeUIViewController(context: Context) -> UIViewController { |
|
||||||
Main_iosKt.MainViewController() |
|
||||||
} |
|
||||||
|
|
||||||
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} |
|
||||||
} |
|
||||||
|
|
||||||
struct ContentView: View { |
|
||||||
var body: some View { |
|
||||||
ComposeView() |
|
||||||
.ignoresSafeArea(.keyboard) // Compose has own keyboard handler |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|