a love letter to tangled (android, iOS, and a search API)

build: add android + ios projects

+1674
+101
android/.gitignore
··· 1 + # Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore 2 + 3 + # Built application files 4 + *.apk 5 + *.aar 6 + *.ap_ 7 + *.aab 8 + 9 + # Files for the ART/Dalvik VM 10 + *.dex 11 + 12 + # Java class files 13 + *.class 14 + 15 + # Generated files 16 + bin/ 17 + gen/ 18 + out/ 19 + # Uncomment the following line in case you need and you don't have the release build type files in your app 20 + # release/ 21 + 22 + # Gradle files 23 + .gradle/ 24 + build/ 25 + 26 + # Local configuration file (sdk path, etc) 27 + local.properties 28 + 29 + # Proguard folder generated by Eclipse 30 + proguard/ 31 + 32 + # Log Files 33 + *.log 34 + 35 + # Android Studio Navigation editor temp files 36 + .navigation/ 37 + 38 + # Android Studio captures folder 39 + captures/ 40 + 41 + # IntelliJ 42 + *.iml 43 + .idea/workspace.xml 44 + .idea/tasks.xml 45 + .idea/gradle.xml 46 + .idea/assetWizardSettings.xml 47 + .idea/dictionaries 48 + .idea/libraries 49 + # Android Studio 3 in .gitignore file. 50 + .idea/caches 51 + .idea/modules.xml 52 + # Comment next line if keeping position of elements in Navigation Editor is relevant for you 53 + .idea/navEditor.xml 54 + 55 + # Keystore files 56 + # Uncomment the following lines if you do not want to check your keystore files in. 57 + #*.jks 58 + #*.keystore 59 + 60 + # External native build folder generated in Android Studio 2.2 and later 61 + .externalNativeBuild 62 + .cxx/ 63 + 64 + # Google Services (e.g. APIs or Firebase) 65 + # google-services.json 66 + 67 + # Freeline 68 + freeline.py 69 + freeline/ 70 + freeline_project_description.json 71 + 72 + # fastlane 73 + fastlane/report.xml 74 + fastlane/Preview.html 75 + fastlane/screenshots 76 + fastlane/test_output 77 + fastlane/readme.md 78 + 79 + # Version control 80 + vcs.xml 81 + 82 + # lint 83 + lint/intermediates/ 84 + lint/generated/ 85 + lint/outputs/ 86 + lint/tmp/ 87 + # lint/reports/ 88 + 89 + # Android Profiling 90 + *.hprof 91 + 92 + # Cordova plugins for Capacitor 93 + capacitor-cordova-android-plugins 94 + 95 + # Copied web assets 96 + app/src/main/assets/public 97 + 98 + # Generated Config files 99 + app/src/main/assets/capacitor.config.json 100 + app/src/main/assets/capacitor.plugins.json 101 + app/src/main/res/xml/config.xml
+2
android/app/.gitignore
··· 1 + /build/* 2 + !/build/.npmkeep
+54
android/app/build.gradle
··· 1 + apply plugin: 'com.android.application' 2 + 3 + android { 4 + namespace = "io.ionic.starter" 5 + compileSdk = rootProject.ext.compileSdkVersion 6 + defaultConfig { 7 + applicationId "io.ionic.starter" 8 + minSdkVersion rootProject.ext.minSdkVersion 9 + targetSdkVersion rootProject.ext.targetSdkVersion 10 + versionCode 1 11 + versionName "1.0" 12 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 + aaptOptions { 14 + // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. 15 + // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 16 + ignoreAssetsPattern = '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' 17 + } 18 + } 19 + buildTypes { 20 + release { 21 + minifyEnabled false 22 + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 23 + } 24 + } 25 + } 26 + 27 + repositories { 28 + flatDir{ 29 + dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' 30 + } 31 + } 32 + 33 + dependencies { 34 + implementation fileTree(include: ['*.jar'], dir: 'libs') 35 + implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" 36 + implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" 37 + implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" 38 + implementation project(':capacitor-android') 39 + testImplementation "junit:junit:$junitVersion" 40 + androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" 41 + androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" 42 + implementation project(':capacitor-cordova-android-plugins') 43 + } 44 + 45 + apply from: 'capacitor.build.gradle' 46 + 47 + try { 48 + def servicesJSON = file('google-services.json') 49 + if (servicesJSON.text) { 50 + apply plugin: 'com.google.gms.google-services' 51 + } 52 + } catch(Exception e) { 53 + logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work") 54 + }
+22
android/app/capacitor.build.gradle
··· 1 + // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 + 3 + android { 4 + compileOptions { 5 + sourceCompatibility JavaVersion.VERSION_21 6 + targetCompatibility JavaVersion.VERSION_21 7 + } 8 + } 9 + 10 + apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" 11 + dependencies { 12 + implementation project(':capacitor-app') 13 + implementation project(':capacitor-haptics') 14 + implementation project(':capacitor-keyboard') 15 + implementation project(':capacitor-status-bar') 16 + 17 + } 18 + 19 + 20 + if (hasProperty('postBuildExtras')) { 21 + postBuildExtras() 22 + }
+21
android/app/proguard-rules.pro
··· 1 + # Add project specific ProGuard rules here. 2 + # You can control the set of applied configuration files using the 3 + # proguardFiles setting in build.gradle. 4 + # 5 + # For more details, see 6 + # http://developer.android.com/guide/developing/tools/proguard.html 7 + 8 + # If your project uses WebView with JS, uncomment the following 9 + # and specify the fully qualified class name to the JavaScript interface 10 + # class: 11 + #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 + # public *; 13 + #} 14 + 15 + # Uncomment this to preserve the line number information for 16 + # debugging stack traces. 17 + #-keepattributes SourceFile,LineNumberTable 18 + 19 + # If you keep the line number information, uncomment this to 20 + # hide the original source file name. 21 + #-renamesourcefileattribute SourceFile
+26
android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
··· 1 + package com.getcapacitor.myapp; 2 + 3 + import static org.junit.Assert.*; 4 + 5 + import android.content.Context; 6 + import androidx.test.ext.junit.runners.AndroidJUnit4; 7 + import androidx.test.platform.app.InstrumentationRegistry; 8 + import org.junit.Test; 9 + import org.junit.runner.RunWith; 10 + 11 + /** 12 + * Instrumented test, which will execute on an Android device. 13 + * 14 + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> 15 + */ 16 + @RunWith(AndroidJUnit4.class) 17 + public class ExampleInstrumentedTest { 18 + 19 + @Test 20 + public void useAppContext() throws Exception { 21 + // Context of the app under test. 22 + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 23 + 24 + assertEquals("com.getcapacitor.app", appContext.getPackageName()); 25 + } 26 + }
+41
android/app/src/main/AndroidManifest.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <manifest xmlns:android="http://schemas.android.com/apk/res/android"> 3 + 4 + <application 5 + android:allowBackup="true" 6 + android:icon="@mipmap/ic_launcher" 7 + android:label="@string/app_name" 8 + android:roundIcon="@mipmap/ic_launcher_round" 9 + android:supportsRtl="true" 10 + android:theme="@style/AppTheme"> 11 + 12 + <activity 13 + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation|density" 14 + android:name=".MainActivity" 15 + android:label="@string/title_activity_main" 16 + android:theme="@style/AppTheme.NoActionBarLaunch" 17 + android:launchMode="singleTask" 18 + android:exported="true"> 19 + 20 + <intent-filter> 21 + <action android:name="android.intent.action.MAIN" /> 22 + <category android:name="android.intent.category.LAUNCHER" /> 23 + </intent-filter> 24 + 25 + </activity> 26 + 27 + <provider 28 + android:name="androidx.core.content.FileProvider" 29 + android:authorities="${applicationId}.fileprovider" 30 + android:exported="false" 31 + android:grantUriPermissions="true"> 32 + <meta-data 33 + android:name="android.support.FILE_PROVIDER_PATHS" 34 + android:resource="@xml/file_paths"></meta-data> 35 + </provider> 36 + </application> 37 + 38 + <!-- Permissions --> 39 + 40 + <uses-permission android:name="android.permission.INTERNET" /> 41 + </manifest>
+5
android/app/src/main/java/io/ionic/starter/MainActivity.java
··· 1 + package io.ionic.starter; 2 + 3 + import com.getcapacitor.BridgeActivity; 4 + 5 + public class MainActivity extends BridgeActivity {}
android/app/src/main/res/drawable-land-hdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-land-mdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-land-xhdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-land-xxhdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-land-xxxhdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-port-hdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-port-mdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-port-xhdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-port-xxhdpi/splash.png

This is a binary file and will not be displayed.

android/app/src/main/res/drawable-port-xxxhdpi/splash.png

This is a binary file and will not be displayed.

+34
android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
··· 1 + <vector xmlns:android="http://schemas.android.com/apk/res/android" 2 + xmlns:aapt="http://schemas.android.com/aapt" 3 + android:width="108dp" 4 + android:height="108dp" 5 + android:viewportHeight="108" 6 + android:viewportWidth="108"> 7 + <path 8 + android:fillType="evenOdd" 9 + android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" 10 + android:strokeColor="#00000000" 11 + android:strokeWidth="1"> 12 + <aapt:attr name="android:fillColor"> 13 + <gradient 14 + android:endX="78.5885" 15 + android:endY="90.9159" 16 + android:startX="48.7653" 17 + android:startY="61.0927" 18 + android:type="linear"> 19 + <item 20 + android:color="#44000000" 21 + android:offset="0.0" /> 22 + <item 23 + android:color="#00000000" 24 + android:offset="1.0" /> 25 + </gradient> 26 + </aapt:attr> 27 + </path> 28 + <path 29 + android:fillColor="#FFFFFF" 30 + android:fillType="nonZero" 31 + android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" 32 + android:strokeColor="#00000000" 33 + android:strokeWidth="1" /> 34 + </vector>
+170
android/app/src/main/res/drawable/ic_launcher_background.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <vector xmlns:android="http://schemas.android.com/apk/res/android" 3 + android:width="108dp" 4 + android:height="108dp" 5 + android:viewportHeight="108" 6 + android:viewportWidth="108"> 7 + <path 8 + android:fillColor="#26A69A" 9 + android:pathData="M0,0h108v108h-108z" /> 10 + <path 11 + android:fillColor="#00000000" 12 + android:pathData="M9,0L9,108" 13 + android:strokeColor="#33FFFFFF" 14 + android:strokeWidth="0.8" /> 15 + <path 16 + android:fillColor="#00000000" 17 + android:pathData="M19,0L19,108" 18 + android:strokeColor="#33FFFFFF" 19 + android:strokeWidth="0.8" /> 20 + <path 21 + android:fillColor="#00000000" 22 + android:pathData="M29,0L29,108" 23 + android:strokeColor="#33FFFFFF" 24 + android:strokeWidth="0.8" /> 25 + <path 26 + android:fillColor="#00000000" 27 + android:pathData="M39,0L39,108" 28 + android:strokeColor="#33FFFFFF" 29 + android:strokeWidth="0.8" /> 30 + <path 31 + android:fillColor="#00000000" 32 + android:pathData="M49,0L49,108" 33 + android:strokeColor="#33FFFFFF" 34 + android:strokeWidth="0.8" /> 35 + <path 36 + android:fillColor="#00000000" 37 + android:pathData="M59,0L59,108" 38 + android:strokeColor="#33FFFFFF" 39 + android:strokeWidth="0.8" /> 40 + <path 41 + android:fillColor="#00000000" 42 + android:pathData="M69,0L69,108" 43 + android:strokeColor="#33FFFFFF" 44 + android:strokeWidth="0.8" /> 45 + <path 46 + android:fillColor="#00000000" 47 + android:pathData="M79,0L79,108" 48 + android:strokeColor="#33FFFFFF" 49 + android:strokeWidth="0.8" /> 50 + <path 51 + android:fillColor="#00000000" 52 + android:pathData="M89,0L89,108" 53 + android:strokeColor="#33FFFFFF" 54 + android:strokeWidth="0.8" /> 55 + <path 56 + android:fillColor="#00000000" 57 + android:pathData="M99,0L99,108" 58 + android:strokeColor="#33FFFFFF" 59 + android:strokeWidth="0.8" /> 60 + <path 61 + android:fillColor="#00000000" 62 + android:pathData="M0,9L108,9" 63 + android:strokeColor="#33FFFFFF" 64 + android:strokeWidth="0.8" /> 65 + <path 66 + android:fillColor="#00000000" 67 + android:pathData="M0,19L108,19" 68 + android:strokeColor="#33FFFFFF" 69 + android:strokeWidth="0.8" /> 70 + <path 71 + android:fillColor="#00000000" 72 + android:pathData="M0,29L108,29" 73 + android:strokeColor="#33FFFFFF" 74 + android:strokeWidth="0.8" /> 75 + <path 76 + android:fillColor="#00000000" 77 + android:pathData="M0,39L108,39" 78 + android:strokeColor="#33FFFFFF" 79 + android:strokeWidth="0.8" /> 80 + <path 81 + android:fillColor="#00000000" 82 + android:pathData="M0,49L108,49" 83 + android:strokeColor="#33FFFFFF" 84 + android:strokeWidth="0.8" /> 85 + <path 86 + android:fillColor="#00000000" 87 + android:pathData="M0,59L108,59" 88 + android:strokeColor="#33FFFFFF" 89 + android:strokeWidth="0.8" /> 90 + <path 91 + android:fillColor="#00000000" 92 + android:pathData="M0,69L108,69" 93 + android:strokeColor="#33FFFFFF" 94 + android:strokeWidth="0.8" /> 95 + <path 96 + android:fillColor="#00000000" 97 + android:pathData="M0,79L108,79" 98 + android:strokeColor="#33FFFFFF" 99 + android:strokeWidth="0.8" /> 100 + <path 101 + android:fillColor="#00000000" 102 + android:pathData="M0,89L108,89" 103 + android:strokeColor="#33FFFFFF" 104 + android:strokeWidth="0.8" /> 105 + <path 106 + android:fillColor="#00000000" 107 + android:pathData="M0,99L108,99" 108 + android:strokeColor="#33FFFFFF" 109 + android:strokeWidth="0.8" /> 110 + <path 111 + android:fillColor="#00000000" 112 + android:pathData="M19,29L89,29" 113 + android:strokeColor="#33FFFFFF" 114 + android:strokeWidth="0.8" /> 115 + <path 116 + android:fillColor="#00000000" 117 + android:pathData="M19,39L89,39" 118 + android:strokeColor="#33FFFFFF" 119 + android:strokeWidth="0.8" /> 120 + <path 121 + android:fillColor="#00000000" 122 + android:pathData="M19,49L89,49" 123 + android:strokeColor="#33FFFFFF" 124 + android:strokeWidth="0.8" /> 125 + <path 126 + android:fillColor="#00000000" 127 + android:pathData="M19,59L89,59" 128 + android:strokeColor="#33FFFFFF" 129 + android:strokeWidth="0.8" /> 130 + <path 131 + android:fillColor="#00000000" 132 + android:pathData="M19,69L89,69" 133 + android:strokeColor="#33FFFFFF" 134 + android:strokeWidth="0.8" /> 135 + <path 136 + android:fillColor="#00000000" 137 + android:pathData="M19,79L89,79" 138 + android:strokeColor="#33FFFFFF" 139 + android:strokeWidth="0.8" /> 140 + <path 141 + android:fillColor="#00000000" 142 + android:pathData="M29,19L29,89" 143 + android:strokeColor="#33FFFFFF" 144 + android:strokeWidth="0.8" /> 145 + <path 146 + android:fillColor="#00000000" 147 + android:pathData="M39,19L39,89" 148 + android:strokeColor="#33FFFFFF" 149 + android:strokeWidth="0.8" /> 150 + <path 151 + android:fillColor="#00000000" 152 + android:pathData="M49,19L49,89" 153 + android:strokeColor="#33FFFFFF" 154 + android:strokeWidth="0.8" /> 155 + <path 156 + android:fillColor="#00000000" 157 + android:pathData="M59,19L59,89" 158 + android:strokeColor="#33FFFFFF" 159 + android:strokeWidth="0.8" /> 160 + <path 161 + android:fillColor="#00000000" 162 + android:pathData="M69,19L69,89" 163 + android:strokeColor="#33FFFFFF" 164 + android:strokeWidth="0.8" /> 165 + <path 166 + android:fillColor="#00000000" 167 + android:pathData="M79,19L79,89" 168 + android:strokeColor="#33FFFFFF" 169 + android:strokeWidth="0.8" /> 170 + </vector>
android/app/src/main/res/drawable/splash.png

This is a binary file and will not be displayed.

+12
android/app/src/main/res/layout/activity_main.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 + xmlns:app="http://schemas.android.com/apk/res-auto" 4 + xmlns:tools="http://schemas.android.com/tools" 5 + android:layout_width="match_parent" 6 + android:layout_height="match_parent" 7 + tools:context=".MainActivity"> 8 + 9 + <WebView 10 + android:layout_width="match_parent" 11 + android:layout_height="match_parent" /> 12 + </androidx.coordinatorlayout.widget.CoordinatorLayout>
+5
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> 3 + <background android:drawable="@color/ic_launcher_background"/> 4 + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> 5 + </adaptive-icon>
+5
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> 3 + <background android:drawable="@color/ic_launcher_background"/> 4 + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> 5 + </adaptive-icon>
android/app/src/main/res/mipmap-hdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-mdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xhdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png

This is a binary file and will not be displayed.

android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png

This is a binary file and will not be displayed.

+4
android/app/src/main/res/values/ic_launcher_background.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <resources> 3 + <color name="ic_launcher_background">#FFFFFF</color> 4 + </resources>
+7
android/app/src/main/res/values/strings.xml
··· 1 + <?xml version='1.0' encoding='utf-8'?> 2 + <resources> 3 + <string name="app_name">Twisted</string> 4 + <string name="title_activity_main">Twisted</string> 5 + <string name="package_name">io.ionic.starter</string> 6 + <string name="custom_url_scheme">io.ionic.starter</string> 7 + </resources>
+22
android/app/src/main/res/values/styles.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <resources> 3 + 4 + <!-- Base application theme. --> 5 + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 6 + <!-- Customize your theme here. --> 7 + <item name="colorPrimary">@color/colorPrimary</item> 8 + <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 9 + <item name="colorAccent">@color/colorAccent</item> 10 + </style> 11 + 12 + <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.DayNight.NoActionBar"> 13 + <item name="windowActionBar">false</item> 14 + <item name="windowNoTitle">true</item> 15 + <item name="android:background">@null</item> 16 + </style> 17 + 18 + 19 + <style name="AppTheme.NoActionBarLaunch" parent="Theme.SplashScreen"> 20 + <item name="android:background">@drawable/splash</item> 21 + </style> 22 + </resources>
+5
android/app/src/main/res/xml/file_paths.xml
··· 1 + <?xml version="1.0" encoding="utf-8"?> 2 + <paths xmlns:android="http://schemas.android.com/apk/res/android"> 3 + <external-path name="my_images" path="." /> 4 + <cache-path name="my_cache_images" path="." /> 5 + </paths>
+18
android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
··· 1 + package com.getcapacitor.myapp; 2 + 3 + import static org.junit.Assert.*; 4 + 5 + import org.junit.Test; 6 + 7 + /** 8 + * Example local unit test, which will execute on the development machine (host). 9 + * 10 + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> 11 + */ 12 + public class ExampleUnitTest { 13 + 14 + @Test 15 + public void addition_isCorrect() throws Exception { 16 + assertEquals(4, 2 + 2); 17 + } 18 + }
+29
android/build.gradle
··· 1 + // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 + 3 + buildscript { 4 + 5 + repositories { 6 + google() 7 + mavenCentral() 8 + } 9 + dependencies { 10 + classpath 'com.android.tools.build:gradle:8.13.0' 11 + classpath 'com.google.gms:google-services:4.4.4' 12 + 13 + // NOTE: Do not place your application dependencies here; they belong 14 + // in the individual module build.gradle files 15 + } 16 + } 17 + 18 + apply from: "variables.gradle" 19 + 20 + allprojects { 21 + repositories { 22 + google() 23 + mavenCentral() 24 + } 25 + } 26 + 27 + task clean(type: Delete) { 28 + delete rootProject.buildDir 29 + }
+15
android/capacitor.settings.gradle
··· 1 + // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 + include ':capacitor-android' 3 + project(':capacitor-android').projectDir = new File('../node_modules/.pnpm/@capacitor+android@8.2.0_@capacitor+core@8.2.0/node_modules/@capacitor/android/capacitor') 4 + 5 + include ':capacitor-app' 6 + project(':capacitor-app').projectDir = new File('../node_modules/.pnpm/@capacitor+app@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/app/android') 7 + 8 + include ':capacitor-haptics' 9 + project(':capacitor-haptics').projectDir = new File('../node_modules/.pnpm/@capacitor+haptics@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/haptics/android') 10 + 11 + include ':capacitor-keyboard' 12 + project(':capacitor-keyboard').projectDir = new File('../node_modules/.pnpm/@capacitor+keyboard@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/keyboard/android') 13 + 14 + include ':capacitor-status-bar' 15 + project(':capacitor-status-bar').projectDir = new File('../node_modules/.pnpm/@capacitor+status-bar@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/status-bar/android')
+22
android/gradle.properties
··· 1 + # Project-wide Gradle settings. 2 + 3 + # IDE (e.g. Android Studio) users: 4 + # Gradle settings configured through the IDE *will override* 5 + # any settings specified in this file. 6 + 7 + # For more details on how to configure your build environment visit 8 + # http://www.gradle.org/docs/current/userguide/build_environment.html 9 + 10 + # Specifies the JVM arguments used for the daemon process. 11 + # The setting is particularly useful for tweaking memory settings. 12 + org.gradle.jvmargs=-Xmx1536m 13 + 14 + # When configured, Gradle will run in incubating parallel mode. 15 + # This option should only be used with decoupled projects. More details, visit 16 + # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 + # org.gradle.parallel=true 18 + 19 + # AndroidX package structure to make it clearer which packages are bundled with the 20 + # Android operating system, and which are packaged with your app's APK 21 + # https://developer.android.com/topic/libraries/support-library/androidx-rn 22 + android.useAndroidX=true
android/gradle/wrapper/gradle-wrapper.jar

This is a binary file and will not be displayed.

+7
android/gradle/wrapper/gradle-wrapper.properties
··· 1 + distributionBase=GRADLE_USER_HOME 2 + distributionPath=wrapper/dists 3 + distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip 4 + networkTimeout=10000 5 + validateDistributionUrl=true 6 + zipStoreBase=GRADLE_USER_HOME 7 + zipStorePath=wrapper/dists
+251
android/gradlew
··· 1 + #!/bin/sh 2 + 3 + # 4 + # Copyright © 2015-2021 the original authors. 5 + # 6 + # Licensed under the Apache License, Version 2.0 (the "License"); 7 + # you may not use this file except in compliance with the License. 8 + # You may obtain a copy of the License at 9 + # 10 + # https://www.apache.org/licenses/LICENSE-2.0 11 + # 12 + # Unless required by applicable law or agreed to in writing, software 13 + # distributed under the License is distributed on an "AS IS" BASIS, 14 + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + # See the License for the specific language governing permissions and 16 + # limitations under the License. 17 + # 18 + # SPDX-License-Identifier: Apache-2.0 19 + # 20 + 21 + ############################################################################## 22 + # 23 + # Gradle start up script for POSIX generated by Gradle. 24 + # 25 + # Important for running: 26 + # 27 + # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 28 + # noncompliant, but you have some other compliant shell such as ksh or 29 + # bash, then to run this script, type that shell name before the whole 30 + # command line, like: 31 + # 32 + # ksh Gradle 33 + # 34 + # Busybox and similar reduced shells will NOT work, because this script 35 + # requires all of these POSIX shell features: 36 + # * functions; 37 + # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 38 + # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 39 + # * compound commands having a testable exit status, especially «case»; 40 + # * various built-in commands including «command», «set», and «ulimit». 41 + # 42 + # Important for patching: 43 + # 44 + # (2) This script targets any POSIX shell, so it avoids extensions provided 45 + # by Bash, Ksh, etc; in particular arrays are avoided. 46 + # 47 + # The "traditional" practice of packing multiple parameters into a 48 + # space-separated string is a well documented source of bugs and security 49 + # problems, so this is (mostly) avoided, by progressively accumulating 50 + # options in "$@", and eventually passing that to Java. 51 + # 52 + # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 53 + # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 54 + # see the in-line comments for details. 55 + # 56 + # There are tweaks for specific operating systems such as AIX, CygWin, 57 + # Darwin, MinGW, and NonStop. 58 + # 59 + # (3) This script is generated from the Groovy template 60 + # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 61 + # within the Gradle project. 62 + # 63 + # You can find Gradle at https://github.com/gradle/gradle/. 64 + # 65 + ############################################################################## 66 + 67 + # Attempt to set APP_HOME 68 + 69 + # Resolve links: $0 may be a link 70 + app_path=$0 71 + 72 + # Need this for daisy-chained symlinks. 73 + while 74 + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 75 + [ -h "$app_path" ] 76 + do 77 + ls=$( ls -ld "$app_path" ) 78 + link=${ls#*' -> '} 79 + case $link in #( 80 + /*) app_path=$link ;; #( 81 + *) app_path=$APP_HOME$link ;; 82 + esac 83 + done 84 + 85 + # This is normally unused 86 + # shellcheck disable=SC2034 87 + APP_BASE_NAME=${0##*/} 88 + # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 89 + APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit 90 + 91 + # Use the maximum available, or set MAX_FD != -1 to use that value. 92 + MAX_FD=maximum 93 + 94 + warn () { 95 + echo "$*" 96 + } >&2 97 + 98 + die () { 99 + echo 100 + echo "$*" 101 + echo 102 + exit 1 103 + } >&2 104 + 105 + # OS specific support (must be 'true' or 'false'). 106 + cygwin=false 107 + msys=false 108 + darwin=false 109 + nonstop=false 110 + case "$( uname )" in #( 111 + CYGWIN* ) cygwin=true ;; #( 112 + Darwin* ) darwin=true ;; #( 113 + MSYS* | MINGW* ) msys=true ;; #( 114 + NONSTOP* ) nonstop=true ;; 115 + esac 116 + 117 + CLASSPATH="\\\"\\\"" 118 + 119 + 120 + # Determine the Java command to use to start the JVM. 121 + if [ -n "$JAVA_HOME" ] ; then 122 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 + # IBM's JDK on AIX uses strange locations for the executables 124 + JAVACMD=$JAVA_HOME/jre/sh/java 125 + else 126 + JAVACMD=$JAVA_HOME/bin/java 127 + fi 128 + if [ ! -x "$JAVACMD" ] ; then 129 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 + 131 + Please set the JAVA_HOME variable in your environment to match the 132 + location of your Java installation." 133 + fi 134 + else 135 + JAVACMD=java 136 + if ! command -v java >/dev/null 2>&1 137 + then 138 + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 139 + 140 + Please set the JAVA_HOME variable in your environment to match the 141 + location of your Java installation." 142 + fi 143 + fi 144 + 145 + # Increase the maximum file descriptors if we can. 146 + if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 147 + case $MAX_FD in #( 148 + max*) 149 + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 150 + # shellcheck disable=SC2039,SC3045 151 + MAX_FD=$( ulimit -H -n ) || 152 + warn "Could not query maximum file descriptor limit" 153 + esac 154 + case $MAX_FD in #( 155 + '' | soft) :;; #( 156 + *) 157 + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 158 + # shellcheck disable=SC2039,SC3045 159 + ulimit -n "$MAX_FD" || 160 + warn "Could not set maximum file descriptor limit to $MAX_FD" 161 + esac 162 + fi 163 + 164 + # Collect all arguments for the java command, stacking in reverse order: 165 + # * args from the command line 166 + # * the main class name 167 + # * -classpath 168 + # * -D...appname settings 169 + # * --module-path (only if needed) 170 + # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 171 + 172 + # For Cygwin or MSYS, switch paths to Windows format before running java 173 + if "$cygwin" || "$msys" ; then 174 + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 175 + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 176 + 177 + JAVACMD=$( cygpath --unix "$JAVACMD" ) 178 + 179 + # Now convert the arguments - kludge to limit ourselves to /bin/sh 180 + for arg do 181 + if 182 + case $arg in #( 183 + -*) false ;; # don't mess with options #( 184 + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 185 + [ -e "$t" ] ;; #( 186 + *) false ;; 187 + esac 188 + then 189 + arg=$( cygpath --path --ignore --mixed "$arg" ) 190 + fi 191 + # Roll the args list around exactly as many times as the number of 192 + # args, so each arg winds up back in the position where it started, but 193 + # possibly modified. 194 + # 195 + # NB: a `for` loop captures its iteration list before it begins, so 196 + # changing the positional parameters here affects neither the number of 197 + # iterations, nor the values presented in `arg`. 198 + shift # remove old arg 199 + set -- "$@" "$arg" # push replacement arg 200 + done 201 + fi 202 + 203 + 204 + # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 205 + DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 206 + 207 + # Collect all arguments for the java command: 208 + # * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 209 + # and any embedded shellness will be escaped. 210 + # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 211 + # treated as '${Hostname}' itself on the command line. 212 + 213 + set -- \ 214 + "-Dorg.gradle.appname=$APP_BASE_NAME" \ 215 + -classpath "$CLASSPATH" \ 216 + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ 217 + "$@" 218 + 219 + # Stop when "xargs" is not available. 220 + if ! command -v xargs >/dev/null 2>&1 221 + then 222 + die "xargs is not available" 223 + fi 224 + 225 + # Use "xargs" to parse quoted args. 226 + # 227 + # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 228 + # 229 + # In Bash we could simply go: 230 + # 231 + # readarray ARGS < <( xargs -n1 <<<"$var" ) && 232 + # set -- "${ARGS[@]}" "$@" 233 + # 234 + # but POSIX shell has neither arrays nor command substitution, so instead we 235 + # post-process each arg (as a line of input to sed) to backslash-escape any 236 + # character that might be a shell metacharacter, then use eval to reverse 237 + # that process (while maintaining the separation between arguments), and wrap 238 + # the whole thing up as a single "set" statement. 239 + # 240 + # This will of course break if any of these variables contains a newline or 241 + # an unmatched quote. 242 + # 243 + 244 + eval "set -- $( 245 + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 246 + xargs -n1 | 247 + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 248 + tr '\n' ' ' 249 + )" '"$@"' 250 + 251 + exec "$JAVACMD" "$@"
+94
android/gradlew.bat
··· 1 + @rem 2 + @rem Copyright 2015 the original author or authors. 3 + @rem 4 + @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 + @rem you may not use this file except in compliance with the License. 6 + @rem You may obtain a copy of the License at 7 + @rem 8 + @rem https://www.apache.org/licenses/LICENSE-2.0 9 + @rem 10 + @rem Unless required by applicable law or agreed to in writing, software 11 + @rem distributed under the License is distributed on an "AS IS" BASIS, 12 + @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 + @rem See the License for the specific language governing permissions and 14 + @rem limitations under the License. 15 + @rem 16 + @rem SPDX-License-Identifier: Apache-2.0 17 + @rem 18 + 19 + @if "%DEBUG%"=="" @echo off 20 + @rem ########################################################################## 21 + @rem 22 + @rem Gradle startup script for Windows 23 + @rem 24 + @rem ########################################################################## 25 + 26 + @rem Set local scope for the variables with windows NT shell 27 + if "%OS%"=="Windows_NT" setlocal 28 + 29 + set DIRNAME=%~dp0 30 + if "%DIRNAME%"=="" set DIRNAME=. 31 + @rem This is normally unused 32 + set APP_BASE_NAME=%~n0 33 + set APP_HOME=%DIRNAME% 34 + 35 + @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 + for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 + 38 + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 + set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 + 41 + @rem Find java.exe 42 + if defined JAVA_HOME goto findJavaFromJavaHome 43 + 44 + set JAVA_EXE=java.exe 45 + %JAVA_EXE% -version >NUL 2>&1 46 + if %ERRORLEVEL% equ 0 goto execute 47 + 48 + echo. 1>&2 49 + echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 + echo. 1>&2 51 + echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 + echo location of your Java installation. 1>&2 53 + 54 + goto fail 55 + 56 + :findJavaFromJavaHome 57 + set JAVA_HOME=%JAVA_HOME:"=% 58 + set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 + 60 + if exist "%JAVA_EXE%" goto execute 61 + 62 + echo. 1>&2 63 + echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 + echo. 1>&2 65 + echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 + echo location of your Java installation. 1>&2 67 + 68 + goto fail 69 + 70 + :execute 71 + @rem Setup the command line 72 + 73 + set CLASSPATH= 74 + 75 + 76 + @rem Execute Gradle 77 + "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* 78 + 79 + :end 80 + @rem End local scope for the variables with windows NT shell 81 + if %ERRORLEVEL% equ 0 goto mainEnd 82 + 83 + :fail 84 + rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 85 + rem the _cmd.exe /c_ return code! 86 + set EXIT_CODE=%ERRORLEVEL% 87 + if %EXIT_CODE% equ 0 set EXIT_CODE=1 88 + if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 89 + exit /b %EXIT_CODE% 90 + 91 + :mainEnd 92 + if "%OS%"=="Windows_NT" endlocal 93 + 94 + :omega
+5
android/settings.gradle
··· 1 + include ':app' 2 + include ':capacitor-cordova-android-plugins' 3 + project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') 4 + 5 + apply from: 'capacitor.settings.gradle'
+16
android/variables.gradle
··· 1 + ext { 2 + minSdkVersion = 24 3 + compileSdkVersion = 36 4 + targetSdkVersion = 36 5 + androidxActivityVersion = '1.11.0' 6 + androidxAppCompatVersion = '1.7.1' 7 + androidxCoordinatorLayoutVersion = '1.3.0' 8 + androidxCoreVersion = '1.17.0' 9 + androidxFragmentVersion = '1.8.9' 10 + coreSplashScreenVersion = '1.2.0' 11 + androidxWebkitVersion = '1.14.0' 12 + junitVersion = '4.13.2' 13 + androidxJunitVersion = '1.3.0' 14 + androidxEspressoCoreVersion = '3.7.0' 15 + cordovaAndroidVersion = '14.0.1' 16 + }
+13
ios/.gitignore
··· 1 + App/build 2 + App/Pods 3 + App/output 4 + App/App/public 5 + DerivedData 6 + xcuserdata 7 + 8 + # Cordova plugins for Capacitor 9 + capacitor-cordova-ios-plugins 10 + 11 + # Generated Config files 12 + App/App/capacitor.config.json 13 + App/App/config.xml
+376
ios/App/App.xcodeproj/project.pbxproj
··· 1 + // !$*UTF8*$! 2 + { 3 + archiveVersion = 1; 4 + classes = { 5 + }; 6 + objectVersion = 60; 7 + objects = { 8 + 9 + /* Begin PBXBuildFile section */ 10 + 2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; }; 11 + 4D22ABE92AF431CB00220026 /* CapApp-SPM in Frameworks */ = {isa = PBXBuildFile; productRef = 4D22ABE82AF431CB00220026 /* CapApp-SPM */; }; 12 + 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; }; 13 + 504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; }; 14 + 504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; }; 15 + 504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; }; 16 + 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; }; 17 + 50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; }; 18 + /* End PBXBuildFile section */ 19 + 20 + /* Begin PBXFileReference section */ 21 + 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = "<group>"; }; 22 + 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = "<group>"; }; 23 + 504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; 24 + 504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 25 + 504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 26 + 504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 27 + 504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 28 + 504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 29 + 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = "<group>"; }; 30 + 958DCC722DB07C7200EA8C5F /* debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = debug.xcconfig; path = ../debug.xcconfig; sourceTree = SOURCE_ROOT; }; 31 + /* End PBXFileReference section */ 32 + 33 + /* Begin PBXFrameworksBuildPhase section */ 34 + 504EC3011FED79650016851F /* Frameworks */ = { 35 + isa = PBXFrameworksBuildPhase; 36 + buildActionMask = 2147483647; 37 + files = ( 38 + 4D22ABE92AF431CB00220026 /* CapApp-SPM in Frameworks */, 39 + ); 40 + runOnlyForDeploymentPostprocessing = 0; 41 + }; 42 + /* End PBXFrameworksBuildPhase section */ 43 + 44 + /* Begin PBXGroup section */ 45 + 504EC2FB1FED79650016851F = { 46 + isa = PBXGroup; 47 + children = ( 48 + 958DCC722DB07C7200EA8C5F /* debug.xcconfig */, 49 + 504EC3061FED79650016851F /* App */, 50 + 504EC3051FED79650016851F /* Products */, 51 + ); 52 + sourceTree = "<group>"; 53 + }; 54 + 504EC3051FED79650016851F /* Products */ = { 55 + isa = PBXGroup; 56 + children = ( 57 + 504EC3041FED79650016851F /* App.app */, 58 + ); 59 + name = Products; 60 + sourceTree = "<group>"; 61 + }; 62 + 504EC3061FED79650016851F /* App */ = { 63 + isa = PBXGroup; 64 + children = ( 65 + 50379B222058CBB4000EE86E /* capacitor.config.json */, 66 + 504EC3071FED79650016851F /* AppDelegate.swift */, 67 + 504EC30B1FED79650016851F /* Main.storyboard */, 68 + 504EC30E1FED79650016851F /* Assets.xcassets */, 69 + 504EC3101FED79650016851F /* LaunchScreen.storyboard */, 70 + 504EC3131FED79650016851F /* Info.plist */, 71 + 2FAD9762203C412B000D30F8 /* config.xml */, 72 + 50B271D01FEDC1A000F3C39B /* public */, 73 + ); 74 + path = App; 75 + sourceTree = "<group>"; 76 + }; 77 + /* End PBXGroup section */ 78 + 79 + /* Begin PBXNativeTarget section */ 80 + 504EC3031FED79650016851F /* App */ = { 81 + isa = PBXNativeTarget; 82 + buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */; 83 + buildPhases = ( 84 + 504EC3001FED79650016851F /* Sources */, 85 + 504EC3011FED79650016851F /* Frameworks */, 86 + 504EC3021FED79650016851F /* Resources */, 87 + ); 88 + buildRules = ( 89 + ); 90 + dependencies = ( 91 + ); 92 + name = App; 93 + packageProductDependencies = ( 94 + 4D22ABE82AF431CB00220026 /* CapApp-SPM */, 95 + ); 96 + productName = App; 97 + productReference = 504EC3041FED79650016851F /* App.app */; 98 + productType = "com.apple.product-type.application"; 99 + }; 100 + /* End PBXNativeTarget section */ 101 + 102 + /* Begin PBXProject section */ 103 + 504EC2FC1FED79650016851F /* Project object */ = { 104 + isa = PBXProject; 105 + attributes = { 106 + LastSwiftUpdateCheck = 0920; 107 + LastUpgradeCheck = 0920; 108 + TargetAttributes = { 109 + 504EC3031FED79650016851F = { 110 + CreatedOnToolsVersion = 9.2; 111 + LastSwiftMigration = 1100; 112 + ProvisioningStyle = Automatic; 113 + }; 114 + }; 115 + }; 116 + buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */; 117 + compatibilityVersion = "Xcode 8.0"; 118 + developmentRegion = en; 119 + hasScannedForEncodings = 0; 120 + knownRegions = ( 121 + en, 122 + Base, 123 + ); 124 + mainGroup = 504EC2FB1FED79650016851F; 125 + packageReferences = ( 126 + D4C12C0A2AAA248700AAC8A2 /* XCLocalSwiftPackageReference "CapApp-SPM" */, 127 + ); 128 + productRefGroup = 504EC3051FED79650016851F /* Products */; 129 + projectDirPath = ""; 130 + projectRoot = ""; 131 + targets = ( 132 + 504EC3031FED79650016851F /* App */, 133 + ); 134 + }; 135 + /* End PBXProject section */ 136 + 137 + /* Begin PBXResourcesBuildPhase section */ 138 + 504EC3021FED79650016851F /* Resources */ = { 139 + isa = PBXResourcesBuildPhase; 140 + buildActionMask = 2147483647; 141 + files = ( 142 + 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */, 143 + 50B271D11FEDC1A000F3C39B /* public in Resources */, 144 + 504EC30F1FED79650016851F /* Assets.xcassets in Resources */, 145 + 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */, 146 + 504EC30D1FED79650016851F /* Main.storyboard in Resources */, 147 + 2FAD9763203C412B000D30F8 /* config.xml in Resources */, 148 + ); 149 + runOnlyForDeploymentPostprocessing = 0; 150 + }; 151 + /* End PBXResourcesBuildPhase section */ 152 + 153 + /* Begin PBXSourcesBuildPhase section */ 154 + 504EC3001FED79650016851F /* Sources */ = { 155 + isa = PBXSourcesBuildPhase; 156 + buildActionMask = 2147483647; 157 + files = ( 158 + 504EC3081FED79650016851F /* AppDelegate.swift in Sources */, 159 + ); 160 + runOnlyForDeploymentPostprocessing = 0; 161 + }; 162 + /* End PBXSourcesBuildPhase section */ 163 + 164 + /* Begin PBXVariantGroup section */ 165 + 504EC30B1FED79650016851F /* Main.storyboard */ = { 166 + isa = PBXVariantGroup; 167 + children = ( 168 + 504EC30C1FED79650016851F /* Base */, 169 + ); 170 + name = Main.storyboard; 171 + sourceTree = "<group>"; 172 + }; 173 + 504EC3101FED79650016851F /* LaunchScreen.storyboard */ = { 174 + isa = PBXVariantGroup; 175 + children = ( 176 + 504EC3111FED79650016851F /* Base */, 177 + ); 178 + name = LaunchScreen.storyboard; 179 + sourceTree = "<group>"; 180 + }; 181 + /* End PBXVariantGroup section */ 182 + 183 + /* Begin XCBuildConfiguration section */ 184 + 504EC3141FED79650016851F /* Debug */ = { 185 + isa = XCBuildConfiguration; 186 + baseConfigurationReference = 958DCC722DB07C7200EA8C5F /* debug.xcconfig */; 187 + buildSettings = { 188 + ALWAYS_SEARCH_USER_PATHS = NO; 189 + CLANG_ANALYZER_NONNULL = YES; 190 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 191 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 192 + CLANG_CXX_LIBRARY = "libc++"; 193 + CLANG_ENABLE_MODULES = YES; 194 + CLANG_ENABLE_OBJC_ARC = YES; 195 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 196 + CLANG_WARN_BOOL_CONVERSION = YES; 197 + CLANG_WARN_COMMA = YES; 198 + CLANG_WARN_CONSTANT_CONVERSION = YES; 199 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 200 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 201 + CLANG_WARN_EMPTY_BODY = YES; 202 + CLANG_WARN_ENUM_CONVERSION = YES; 203 + CLANG_WARN_INFINITE_RECURSION = YES; 204 + CLANG_WARN_INT_CONVERSION = YES; 205 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 206 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 207 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 208 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 209 + CLANG_WARN_STRICT_PROTOTYPES = YES; 210 + CLANG_WARN_SUSPICIOUS_MOVE = YES; 211 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 212 + CLANG_WARN_UNREACHABLE_CODE = YES; 213 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 214 + CODE_SIGN_IDENTITY = "iPhone Developer"; 215 + COPY_PHASE_STRIP = NO; 216 + DEBUG_INFORMATION_FORMAT = dwarf; 217 + ENABLE_STRICT_OBJC_MSGSEND = YES; 218 + ENABLE_TESTABILITY = YES; 219 + GCC_C_LANGUAGE_STANDARD = gnu11; 220 + GCC_DYNAMIC_NO_PIC = NO; 221 + GCC_NO_COMMON_BLOCKS = YES; 222 + GCC_OPTIMIZATION_LEVEL = 0; 223 + GCC_PREPROCESSOR_DEFINITIONS = ( 224 + "DEBUG=1", 225 + "$(inherited)", 226 + ); 227 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 228 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 229 + GCC_WARN_UNDECLARED_SELECTOR = YES; 230 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 231 + GCC_WARN_UNUSED_FUNCTION = YES; 232 + GCC_WARN_UNUSED_VARIABLE = YES; 233 + IPHONEOS_DEPLOYMENT_TARGET = 15.0; 234 + MTL_ENABLE_DEBUG_INFO = YES; 235 + ONLY_ACTIVE_ARCH = YES; 236 + SDKROOT = iphoneos; 237 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 238 + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 239 + }; 240 + name = Debug; 241 + }; 242 + 504EC3151FED79650016851F /* Release */ = { 243 + isa = XCBuildConfiguration; 244 + buildSettings = { 245 + ALWAYS_SEARCH_USER_PATHS = NO; 246 + CLANG_ANALYZER_NONNULL = YES; 247 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 248 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 249 + CLANG_CXX_LIBRARY = "libc++"; 250 + CLANG_ENABLE_MODULES = YES; 251 + CLANG_ENABLE_OBJC_ARC = YES; 252 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 253 + CLANG_WARN_BOOL_CONVERSION = YES; 254 + CLANG_WARN_COMMA = YES; 255 + CLANG_WARN_CONSTANT_CONVERSION = YES; 256 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 257 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 258 + CLANG_WARN_EMPTY_BODY = YES; 259 + CLANG_WARN_ENUM_CONVERSION = YES; 260 + CLANG_WARN_INFINITE_RECURSION = YES; 261 + CLANG_WARN_INT_CONVERSION = YES; 262 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 263 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 264 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 265 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 266 + CLANG_WARN_STRICT_PROTOTYPES = YES; 267 + CLANG_WARN_SUSPICIOUS_MOVE = YES; 268 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 269 + CLANG_WARN_UNREACHABLE_CODE = YES; 270 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 271 + CODE_SIGN_IDENTITY = "iPhone Developer"; 272 + COPY_PHASE_STRIP = NO; 273 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 274 + ENABLE_NS_ASSERTIONS = NO; 275 + ENABLE_STRICT_OBJC_MSGSEND = YES; 276 + GCC_C_LANGUAGE_STANDARD = gnu11; 277 + GCC_NO_COMMON_BLOCKS = YES; 278 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 279 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 280 + GCC_WARN_UNDECLARED_SELECTOR = YES; 281 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 282 + GCC_WARN_UNUSED_FUNCTION = YES; 283 + GCC_WARN_UNUSED_VARIABLE = YES; 284 + IPHONEOS_DEPLOYMENT_TARGET = 15.0; 285 + MTL_ENABLE_DEBUG_INFO = NO; 286 + SDKROOT = iphoneos; 287 + SWIFT_COMPILATION_MODE = wholemodule; 288 + SWIFT_OPTIMIZATION_LEVEL = "-O"; 289 + VALIDATE_PRODUCT = YES; 290 + }; 291 + name = Release; 292 + }; 293 + 504EC3171FED79650016851F /* Debug */ = { 294 + isa = XCBuildConfiguration; 295 + baseConfigurationReference = 958DCC722DB07C7200EA8C5F /* debug.xcconfig */; 296 + buildSettings = { 297 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 298 + CODE_SIGN_STYLE = Automatic; 299 + CURRENT_PROJECT_VERSION = 1; 300 + INFOPLIST_FILE = App/Info.plist; 301 + IPHONEOS_DEPLOYMENT_TARGET = 15.0; 302 + LD_RUNPATH_SEARCH_PATHS = ( 303 + "$(inherited)", 304 + "@executable_path/Frameworks", 305 + ); 306 + MARKETING_VERSION = 1.0; 307 + OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; 308 + PRODUCT_BUNDLE_IDENTIFIER = io.ionic.starter; 309 + PRODUCT_NAME = "$(TARGET_NAME)"; 310 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 311 + SWIFT_VERSION = 5.0; 312 + TARGETED_DEVICE_FAMILY = "1,2"; 313 + }; 314 + name = Debug; 315 + }; 316 + 504EC3181FED79650016851F /* Release */ = { 317 + isa = XCBuildConfiguration; 318 + buildSettings = { 319 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 320 + CODE_SIGN_STYLE = Automatic; 321 + CURRENT_PROJECT_VERSION = 1; 322 + INFOPLIST_FILE = App/Info.plist; 323 + IPHONEOS_DEPLOYMENT_TARGET = 15.0; 324 + LD_RUNPATH_SEARCH_PATHS = ( 325 + "$(inherited)", 326 + "@executable_path/Frameworks", 327 + ); 328 + MARKETING_VERSION = 1.0; 329 + PRODUCT_BUNDLE_IDENTIFIER = io.ionic.starter; 330 + PRODUCT_NAME = "$(TARGET_NAME)"; 331 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; 332 + SWIFT_VERSION = 5.0; 333 + TARGETED_DEVICE_FAMILY = "1,2"; 334 + }; 335 + name = Release; 336 + }; 337 + /* End XCBuildConfiguration section */ 338 + 339 + /* Begin XCConfigurationList section */ 340 + 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = { 341 + isa = XCConfigurationList; 342 + buildConfigurations = ( 343 + 504EC3141FED79650016851F /* Debug */, 344 + 504EC3151FED79650016851F /* Release */, 345 + ); 346 + defaultConfigurationIsVisible = 0; 347 + defaultConfigurationName = Release; 348 + }; 349 + 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = { 350 + isa = XCConfigurationList; 351 + buildConfigurations = ( 352 + 504EC3171FED79650016851F /* Debug */, 353 + 504EC3181FED79650016851F /* Release */, 354 + ); 355 + defaultConfigurationIsVisible = 0; 356 + defaultConfigurationName = Release; 357 + }; 358 + /* End XCConfigurationList section */ 359 + 360 + /* Begin XCLocalSwiftPackageReference section */ 361 + D4C12C0A2AAA248700AAC8A2 /* XCLocalSwiftPackageReference "CapApp-SPM" */ = { 362 + isa = XCLocalSwiftPackageReference; 363 + relativePath = "CapApp-SPM"; 364 + }; 365 + /* End XCLocalSwiftPackageReference section */ 366 + 367 + /* Begin XCSwiftPackageProductDependency section */ 368 + 4D22ABE82AF431CB00220026 /* CapApp-SPM */ = { 369 + isa = XCSwiftPackageProductDependency; 370 + package = D4C12C0A2AAA248700AAC8A2 /* XCLocalSwiftPackageReference "CapApp-SPM" */; 371 + productName = "CapApp-SPM"; 372 + }; 373 + /* End XCSwiftPackageProductDependency section */ 374 + }; 375 + rootObject = 504EC2FC1FED79650016851F /* Project object */; 376 + }
+8
ios/App/App.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 + <plist version="1.0"> 4 + <dict> 5 + <key>IDEDidComputeMac32BitWarning</key> 6 + <true/> 7 + </dict> 8 + </plist>
+15
ios/App/App.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
··· 1 + { 2 + "originHash" : "8ec3e3cddd8bc66f8d86a6ca1ba2054f89e1f3173ed766e5538205c75561d3eb", 3 + "pins" : [ 4 + { 5 + "identity" : "capacitor-swift-pm", 6 + "kind" : "remoteSourceControl", 7 + "location" : "https://github.com/ionic-team/capacitor-swift-pm.git", 8 + "state" : { 9 + "revision" : "0e862e6ff13852a710c8a484180ca4d6a2cc9761", 10 + "version" : "8.2.0" 11 + } 12 + } 13 + ], 14 + "version" : 3 15 + }
+49
ios/App/App/AppDelegate.swift
··· 1 + import UIKit 2 + import Capacitor 3 + 4 + @UIApplicationMain 5 + class AppDelegate: UIResponder, UIApplicationDelegate { 6 + 7 + var window: UIWindow? 8 + 9 + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 10 + // Override point for customization after application launch. 11 + return true 12 + } 13 + 14 + func applicationWillResignActive(_ application: UIApplication) { 15 + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 16 + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 17 + } 18 + 19 + func applicationDidEnterBackground(_ application: UIApplication) { 20 + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 21 + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 22 + } 23 + 24 + func applicationWillEnterForeground(_ application: UIApplication) { 25 + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 26 + } 27 + 28 + func applicationDidBecomeActive(_ application: UIApplication) { 29 + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 30 + } 31 + 32 + func applicationWillTerminate(_ application: UIApplication) { 33 + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 34 + } 35 + 36 + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { 37 + // Called when the app was launched with a url. Feel free to add additional processing here, 38 + // but if you want the App API to support tracking app url opens, make sure to keep this call 39 + return ApplicationDelegateProxy.shared.application(app, open: url, options: options) 40 + } 41 + 42 + func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { 43 + // Called when the app was launched with an activity, including Universal Links. 44 + // Feel free to add additional processing here, but if you want the App API to support 45 + // tracking app url opens, make sure to keep this call 46 + return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler) 47 + } 48 + 49 + }
ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png

This is a binary file and will not be displayed.

+14
ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json
··· 1 + { 2 + "images" : [ 3 + { 4 + "filename" : "AppIcon-512@2x.png", 5 + "idiom" : "universal", 6 + "platform" : "ios", 7 + "size" : "1024x1024" 8 + } 9 + ], 10 + "info" : { 11 + "author" : "xcode", 12 + "version" : 1 13 + } 14 + }
+6
ios/App/App/Assets.xcassets/Contents.json
··· 1 + { 2 + "info" : { 3 + "version" : 1, 4 + "author" : "xcode" 5 + } 6 + }
+23
ios/App/App/Assets.xcassets/Splash.imageset/Contents.json
··· 1 + { 2 + "images" : [ 3 + { 4 + "idiom" : "universal", 5 + "filename" : "splash-2732x2732-2.png", 6 + "scale" : "1x" 7 + }, 8 + { 9 + "idiom" : "universal", 10 + "filename" : "splash-2732x2732-1.png", 11 + "scale" : "2x" 12 + }, 13 + { 14 + "idiom" : "universal", 15 + "filename" : "splash-2732x2732.png", 16 + "scale" : "3x" 17 + } 18 + ], 19 + "info" : { 20 + "version" : 1, 21 + "author" : "xcode" 22 + } 23 + }
ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png

This is a binary file and will not be displayed.

ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png

This is a binary file and will not be displayed.

ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png

This is a binary file and will not be displayed.

+32
ios/App/App/Base.lproj/LaunchScreen.storyboard
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17132" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> 3 + <device id="retina4_7" orientation="portrait" appearance="light"/> 4 + <dependencies> 5 + <deployment identifier="iOS"/> 6 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17105"/> 7 + <capability name="System colors in document resources" minToolsVersion="11.0"/> 8 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 9 + </dependencies> 10 + <scenes> 11 + <!--View Controller--> 12 + <scene sceneID="EHf-IW-A2E"> 13 + <objects> 14 + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> 15 + <imageView key="view" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash" id="snD-IY-ifK"> 16 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 17 + <autoresizingMask key="autoresizingMask"/> 18 + <color key="backgroundColor" systemColor="systemBackgroundColor"/> 19 + </imageView> 20 + </viewController> 21 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> 22 + </objects> 23 + <point key="canvasLocation" x="53" y="375"/> 24 + </scene> 25 + </scenes> 26 + <resources> 27 + <image name="Splash" width="1366" height="1366"/> 28 + <systemColor name="systemBackgroundColor"> 29 + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> 30 + </systemColor> 31 + </resources> 32 + </document>
+19
ios/App/App/Base.lproj/Main.storyboard
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14111" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> 3 + <device id="retina4_7" orientation="portrait"> 4 + <adaptation id="fullscreen"/> 5 + </device> 6 + <dependencies> 7 + <deployment identifier="iOS"/> 8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/> 9 + </dependencies> 10 + <scenes> 11 + <!--Bridge View Controller--> 12 + <scene sceneID="tne-QT-ifu"> 13 + <objects> 14 + <viewController id="BYZ-38-t0r" customClass="CAPBridgeViewController" customModule="Capacitor" sceneMemberID="viewController"/> 15 + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> 16 + </objects> 17 + </scene> 18 + </scenes> 19 + </document>
+51
ios/App/App/Info.plist
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 + <plist version="1.0"> 4 + <dict> 5 + <key>CAPACITOR_DEBUG</key> 6 + <string>$(CAPACITOR_DEBUG)</string> 7 + <key>CFBundleDevelopmentRegion</key> 8 + <string>en</string> 9 + <key>CFBundleDisplayName</key> 10 + <string>Twisted</string> 11 + <key>CFBundleExecutable</key> 12 + <string>$(EXECUTABLE_NAME)</string> 13 + <key>CFBundleIdentifier</key> 14 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 15 + <key>CFBundleInfoDictionaryVersion</key> 16 + <string>6.0</string> 17 + <key>CFBundleName</key> 18 + <string>$(PRODUCT_NAME)</string> 19 + <key>CFBundlePackageType</key> 20 + <string>APPL</string> 21 + <key>CFBundleShortVersionString</key> 22 + <string>$(MARKETING_VERSION)</string> 23 + <key>CFBundleVersion</key> 24 + <string>$(CURRENT_PROJECT_VERSION)</string> 25 + <key>LSRequiresIPhoneOS</key> 26 + <true/> 27 + <key>UILaunchStoryboardName</key> 28 + <string>LaunchScreen</string> 29 + <key>UIMainStoryboardFile</key> 30 + <string>Main</string> 31 + <key>UIRequiredDeviceCapabilities</key> 32 + <array> 33 + <string>armv7</string> 34 + </array> 35 + <key>UISupportedInterfaceOrientations</key> 36 + <array> 37 + <string>UIInterfaceOrientationPortrait</string> 38 + <string>UIInterfaceOrientationLandscapeLeft</string> 39 + <string>UIInterfaceOrientationLandscapeRight</string> 40 + </array> 41 + <key>UISupportedInterfaceOrientations~ipad</key> 42 + <array> 43 + <string>UIInterfaceOrientationPortrait</string> 44 + <string>UIInterfaceOrientationPortraitUpsideDown</string> 45 + <string>UIInterfaceOrientationLandscapeLeft</string> 46 + <string>UIInterfaceOrientationLandscapeRight</string> 47 + </array> 48 + <key>UIViewControllerBasedStatusBarAppearance</key> 49 + <true/> 50 + </dict> 51 + </plist>
+9
ios/App/CapApp-SPM/.gitignore
··· 1 + .DS_Store 2 + /.build 3 + /Packages 4 + /*.xcodeproj 5 + xcuserdata/ 6 + DerivedData/ 7 + .swiftpm/config/registries.json 8 + .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata 9 + .netrc
+33
ios/App/CapApp-SPM/Package.swift
··· 1 + // swift-tools-version: 5.9 2 + import PackageDescription 3 + 4 + // DO NOT MODIFY THIS FILE - managed by Capacitor CLI commands 5 + let package = Package( 6 + name: "CapApp-SPM", 7 + platforms: [.iOS(.v15)], 8 + products: [ 9 + .library( 10 + name: "CapApp-SPM", 11 + targets: ["CapApp-SPM"]) 12 + ], 13 + dependencies: [ 14 + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", exact: "8.2.0"), 15 + .package(name: "CapacitorApp", path: "../../../node_modules/.pnpm/@capacitor+app@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/app"), 16 + .package(name: "CapacitorHaptics", path: "../../../node_modules/.pnpm/@capacitor+haptics@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/haptics"), 17 + .package(name: "CapacitorKeyboard", path: "../../../node_modules/.pnpm/@capacitor+keyboard@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/keyboard"), 18 + .package(name: "CapacitorStatusBar", path: "../../../node_modules/.pnpm/@capacitor+status-bar@8.0.1_@capacitor+core@8.2.0/node_modules/@capacitor/status-bar") 19 + ], 20 + targets: [ 21 + .target( 22 + name: "CapApp-SPM", 23 + dependencies: [ 24 + .product(name: "Capacitor", package: "capacitor-swift-pm"), 25 + .product(name: "Cordova", package: "capacitor-swift-pm"), 26 + .product(name: "CapacitorApp", package: "CapacitorApp"), 27 + .product(name: "CapacitorHaptics", package: "CapacitorHaptics"), 28 + .product(name: "CapacitorKeyboard", package: "CapacitorKeyboard"), 29 + .product(name: "CapacitorStatusBar", package: "CapacitorStatusBar") 30 + ] 31 + ) 32 + ] 33 + )
+5
ios/App/CapApp-SPM/README.md
··· 1 + # CapApp-SPM 2 + 3 + This package is used to host SPM dependencies for your Capacitor project 4 + 5 + Do not modify the contents of it or there may be unintended consequences.
+1
ios/App/CapApp-SPM/Sources/CapApp-SPM/CapApp-SPM.swift
··· 1 + public let isCapacitorApp = true
+1
ios/debug.xcconfig
··· 1 + CAPACITOR_DEBUG = true
+2
package.json
··· 15 15 "@atcute/bluesky": "^3.3.0", 16 16 "@atcute/client": "^4.2.1", 17 17 "@atcute/tangled": "^1.0.17", 18 + "@capacitor/android": "^8.2.0", 18 19 "@capacitor/app": "8.0.1", 19 20 "@capacitor/core": "8.2.0", 20 21 "@capacitor/haptics": "8.0.1", 22 + "@capacitor/ios": "^8.2.0", 21 23 "@capacitor/keyboard": "8.0.1", 22 24 "@capacitor/status-bar": "8.0.1", 23 25 "@ionic/vue": "^8.0.0",
+24
pnpm-lock.yaml
··· 17 17 '@atcute/tangled': 18 18 specifier: ^1.0.17 19 19 version: 1.0.17 20 + '@capacitor/android': 21 + specifier: ^8.2.0 22 + version: 8.2.0(@capacitor/core@8.2.0) 20 23 '@capacitor/app': 21 24 specifier: 8.0.1 22 25 version: 8.0.1(@capacitor/core@8.2.0) ··· 26 29 '@capacitor/haptics': 27 30 specifier: 8.0.1 28 31 version: 8.0.1(@capacitor/core@8.2.0) 32 + '@capacitor/ios': 33 + specifier: ^8.2.0 34 + version: 8.2.0(@capacitor/core@8.2.0) 29 35 '@capacitor/keyboard': 30 36 specifier: 8.0.1 31 37 version: 8.0.1(@capacitor/core@8.2.0) ··· 621 627 resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} 622 628 engines: {node: '>= 18'} 623 629 630 + '@capacitor/android@8.2.0': 631 + resolution: {integrity: sha512-XLm5OsWLPfXQxDxzFS7SOdMEgGvW+2c7TGLXkTR2cSKdkWK5Abns4imlT5qghKYhjM9r74IrDkBWg/9ALUGNKQ==} 632 + peerDependencies: 633 + '@capacitor/core': ^8.2.0 634 + 624 635 '@capacitor/app@8.0.1': 625 636 resolution: {integrity: sha512-yeG3yyA0ETKqvgqexwHMBlmVOF13A1hRXzv/km0Ptv5TrNIZvZJK4MTI3uiqvnbHrzoJGP5DwWAjEXEfi90v3Q==} 626 637 peerDependencies: ··· 638 649 resolution: {integrity: sha512-8v8rowLBMeb3CryqoQvXndwyUsoi4pPXf0qFw7IGA4D32Uk7+K6juN2SjRowqunoovkvvbFmU9TD7JIAz2zmFw==} 639 650 peerDependencies: 640 651 '@capacitor/core': '>=8.0.0' 652 + 653 + '@capacitor/ios@8.2.0': 654 + resolution: {integrity: sha512-X2/VtM4qP/R1SM0VQ5W/VotEc6PS/KTooD33EijsfAHWBdee+xmBapW8SeNLnu16wJ+tsfWlvtipaJEyfKbRKQ==} 655 + peerDependencies: 656 + '@capacitor/core': ^8.2.0 641 657 642 658 '@capacitor/keyboard@8.0.1': 643 659 resolution: {integrity: sha512-HDf4qrvvhLRMsgBoqeqIld6hP8JMK/WPbCYMvz8ajhY6TaibYt6B+NQyky4oIPCOfHTz5OcVsuHkbb8fQvGDAg==} ··· 3935 3951 3936 3952 '@badrap/valita@0.4.6': {} 3937 3953 3954 + '@capacitor/android@8.2.0(@capacitor/core@8.2.0)': 3955 + dependencies: 3956 + '@capacitor/core': 8.2.0 3957 + 3938 3958 '@capacitor/app@8.0.1(@capacitor/core@8.2.0)': 3939 3959 dependencies: 3940 3960 '@capacitor/core': 8.2.0 ··· 3966 3986 tslib: 2.8.1 3967 3987 3968 3988 '@capacitor/haptics@8.0.1(@capacitor/core@8.2.0)': 3989 + dependencies: 3990 + '@capacitor/core': 8.2.0 3991 + 3992 + '@capacitor/ios@8.2.0(@capacitor/core@8.2.0)': 3969 3993 dependencies: 3970 3994 '@capacitor/core': 8.2.0 3971 3995