diff --git a/ballerine-android-sdk/.gitignore b/ballerine-android-sdk/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/ballerine-android-sdk/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/ballerine-android-sdk/build.gradle.kts b/ballerine-android-sdk/build.gradle.kts deleted file mode 100644 index 9d3403b..0000000 --- a/ballerine-android-sdk/build.gradle.kts +++ /dev/null @@ -1,79 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") - id("maven-publish") -} - -android { - compileSdk = 32 - - defaultConfig { - minSdk = 23 - targetSdk = 32 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro") - } - } - buildFeatures { - compose = true - } - - composeOptions { - kotlinCompilerExtensionVersion = "1.1.1" - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" - } -} - -dependencies { - - val compose_version = "1.1.1" - - implementation("androidx.core:core-ktx:1.8.0") - - implementation ("androidx.activity:activity-compose:1.5.1") - implementation ("androidx.compose.ui:ui:$compose_version") - implementation ("androidx.compose.material:material:$compose_version") - implementation ("androidx.compose.ui:ui-tooling-preview:$compose_version") - androidTestImplementation ("androidx.compose.ui:ui-test-junit4:$compose_version") - debugImplementation ("androidx.compose.ui:ui-tooling:$compose_version") - - //Permission handling - implementation("com.google.accompanist:accompanist-permissions:0.26.0-alpha") - // CameraX core library using the camera2 implementation - val camerax_version = "1.2.0-alpha04" - // The following line is optional, as the core library is included indirectly by camera-camera2 - implementation("androidx.camera:camera-core:${camerax_version}") - implementation("androidx.camera:camera-camera2:${camerax_version}") - // If you want to additionally use the CameraX Lifecycle library - implementation("androidx.camera:camera-lifecycle:${camerax_version}") - // If you want to additionally use the CameraX VideoCapture library - implementation("androidx.camera:camera-video:${camerax_version}") - // If you want to additionally use the CameraX View class - implementation("androidx.camera:camera-view:${camerax_version}") - // If you want to additionally add CameraX ML Kit Vision Integration - implementation("androidx.camera:camera-mlkit-vision:${camerax_version}") - // If you want to additionally use the CameraX Extensions library - implementation("androidx.camera:camera-extensions:${camerax_version}") -} - -afterEvaluate { - publishing { - publications { - - } - } -} \ No newline at end of file diff --git a/ballerine-android-sdk/consumer-rules.pro b/ballerine-android-sdk/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/ballerine-android-sdk/proguard-rules.pro b/ballerine-android-sdk/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/ballerine-android-sdk/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/ballerine-android-sdk/src/androidTest/java/io/ballerine/kmp/android_webview/ExampleInstrumentedTest.kt b/ballerine-android-sdk/src/androidTest/java/io/ballerine/kmp/android_webview/ExampleInstrumentedTest.kt deleted file mode 100644 index 6a33d5c..0000000 --- a/ballerine-android-sdk/src/androidTest/java/io/ballerine/kmp/android_webview/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package io.ballerine.kmp.android_webview - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("io.ballerine.kmp.android_webview.test", appContext.packageName) - } -} \ No newline at end of file diff --git a/ballerine-android-sdk/src/main/AndroidManifest.xml b/ballerine-android-sdk/src/main/AndroidManifest.xml deleted file mode 100644 index b609f07..0000000 --- a/ballerine-android-sdk/src/main/AndroidManifest.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/BallerineKYCFlowWebView.kt b/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/BallerineKYCFlowWebView.kt deleted file mode 100644 index 32164f3..0000000 --- a/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/BallerineKYCFlowWebView.kt +++ /dev/null @@ -1,188 +0,0 @@ -package io.ballerine.kmp.android_webview - -import android.Manifest -import android.annotation.SuppressLint -import android.content.Context -import android.content.pm.PackageManager -import android.net.Uri -import android.util.Log -import android.view.ViewGroup -import android.webkit.* -import android.widget.Toast -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.* -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.viewinterop.AndroidView -import androidx.core.content.ContextCompat -import java.io.File -import java.util.concurrent.ExecutorService - -/** - * Custom Web view which handles the Web KYC verification flow - * - * @param1 - outputFileDirectory is the location of where the images are saved - * @param2 - cameraExecutorService - * @param3 - url is the base app url - * @param4 - onVerificationComplete - returns the Callback function with the VerificationResult object - */ -@SuppressLint("SetJavaScriptEnabled") -@Composable -fun BallerineKYCFlowWebView( - outputFileDirectory: File, - cameraExecutorService: ExecutorService, - url: String, - onVerificationComplete: (VerificationResult) -> Unit, -) { - - var isOpenFrontCamera by remember { - mutableStateOf(false) - } - var filePathCallback: ValueCallback>? by remember { - mutableStateOf(null) - } - var showMediaPicker by remember { - mutableStateOf(false) - } - var isCameraPermissionAvailable by remember { - mutableStateOf(false) - } - val context = LocalContext.current - - /** - * Checks if camera permission is granted by the user - */ - val launcher = rememberLauncherForActivityResult( - ActivityResultContracts.RequestPermission() - ) { isGranted: Boolean -> - if (isGranted) { - // Permission Accepted - isCameraPermissionAvailable = true - showMediaPicker = true - } else { - // Permission Denied - permissionRequiredToast(context = context) - } - } - - - /** - * Checks if camera permission is already available - */ - when (PackageManager.PERMISSION_GRANTED) { - ContextCompat.checkSelfPermission( - context, - Manifest.permission.CAMERA - ) -> { - isCameraPermissionAvailable = true - } - } - - if (showMediaPicker) { - CameraView( - isOpenFrontCamera = isOpenFrontCamera, - outputDirectory = outputFileDirectory, - executor = cameraExecutorService, - onImageCaptured = { uri -> - filePathCallback?.onReceiveValue(arrayOf(uri)) - filePathCallback = null - showMediaPicker = false - } - ) { Log.e("CameraView", "View error:", it) } - } - - val webViewChromeClient = object : WebChromeClient() { - - override fun onShowFileChooser( - webView: WebView?, - filePathCb: ValueCallback>?, - fileChooserParams: FileChooserParams?, - ): Boolean { - - if (filePathCallback != null) { - filePathCallback!!.onReceiveValue(null) - } - filePathCallback = filePathCb - - //If camera permission is available open the camera preview else launch the camera permission request - if (isCameraPermissionAvailable) { - showMediaPicker = true - } else { - launcher.launch(Manifest.permission.CAMERA) - } - - return true - } - - override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean { - Log.e("onConsoleMessage", " ---> ${consoleMessage?.message()}") - return super.onConsoleMessage(consoleMessage) - } - } - - val webViewClient = object : WebViewClient() { - - override fun doUpdateVisitedHistory(view: WebView?, url: String, isReload: Boolean) { - Log.d("doUpdateVisitedHistory", "url -> $url") - - // Parse url query params - val uri = Uri.parse(url) - - uri.getQueryParameter("close").let { paramValue -> - - if (paramValue == "true") { - - // Handle result once web KYC flow is complete - - val isSync = uri.getBooleanQueryParameter("sync", false) - val status = uri.getQueryParameter("status") - val idvResult = uri.getQueryParameter("idvResult") - val code = uri.getQueryParameter("code") - - onVerificationComplete( - VerificationResult(isSync, status, idvResult, code) - ) - } - } - - // Sets camera to front facing while capturing selfie - isOpenFrontCamera = url.contains("selfie") == true - - super.doUpdateVisitedHistory(view, url, isReload) - } - } - - /** - * Set the Display parameters to display the view in your Android app screen - */ - AndroidView( - modifier = Modifier.fillMaxSize(), - factory = { context -> - WebView(context).apply { - layoutParams = ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT - ) - this.webViewClient = webViewClient - this.webChromeClient = webViewChromeClient - this.settings.apply { - javaScriptEnabled = true - domStorageEnabled = true - allowFileAccess = true - allowContentAccess = true - } - loadUrl(url) - } - }) -} - -// Function to generate a Toast -private fun permissionRequiredToast(context: Context) { - Toast.makeText( - context, - context.getString(R.string.camera_permission_mandatory), - Toast.LENGTH_LONG - ).show() -} \ No newline at end of file diff --git a/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/CameraView.kt b/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/CameraView.kt deleted file mode 100644 index 6a650b9..0000000 --- a/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/CameraView.kt +++ /dev/null @@ -1,138 +0,0 @@ -package io.ballerine.kmp.android_webview - -import android.content.Context -import android.graphics.drawable.Icon -import android.net.Uri -import android.util.Log -import androidx.camera.core.CameraSelector -import androidx.camera.core.ImageCapture -import androidx.camera.core.ImageCaptureException -import androidx.camera.core.Preview -import androidx.camera.lifecycle.ProcessCameraProvider -import androidx.camera.view.PreviewView -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalLifecycleOwner -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import androidx.compose.ui.viewinterop.AndroidView -import androidx.core.content.ContextCompat -import java.io.File -import java.text.SimpleDateFormat -import java.util.* -import java.util.concurrent.Executor -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine - -@Composable -fun CameraView( - isOpenFrontCamera: Boolean, - outputDirectory: File, - executor: Executor, - onImageCaptured: (Uri) -> Unit, - onError: (ImageCaptureException) -> Unit -) { - val lensFacing: Int = - if (isOpenFrontCamera) CameraSelector.LENS_FACING_FRONT else CameraSelector.LENS_FACING_BACK - val context = LocalContext.current - val lifecycleOwner = LocalLifecycleOwner.current - - val preview = Preview.Builder().build() - val previewView = remember { PreviewView(context) } - val imageCapture: ImageCapture = remember { ImageCapture.Builder().build() } - val cameraSelector = CameraSelector.Builder() - .requireLensFacing(lensFacing) - .build() - - LaunchedEffect(lensFacing) { - val cameraProvider = context.getCameraProvider() - cameraProvider.unbindAll() - cameraProvider.bindToLifecycle( - lifecycleOwner, - cameraSelector, - preview, - imageCapture - ) - - preview.setSurfaceProvider(previewView.surfaceProvider) - } - - //Screen - Box(contentAlignment = Alignment.BottomCenter, modifier = Modifier.fillMaxSize()) { - AndroidView({ previewView }, modifier = Modifier.fillMaxSize()) - - IconButton( - modifier = Modifier.padding(bottom = 20.dp), - onClick = { - Log.d("takePhoto", "ON CLICK") - takePhoto( - imageCapture = imageCapture, - outputDirectory = outputDirectory, - executor = executor, - onImageCaptured = onImageCaptured, - onError = onError - ) - }, - content = { - Icon( - painter = painterResource(id = R.drawable.ic_baseline_camera_24), - contentDescription = stringResource(R.string.take_picture), - tint = Color.White, - modifier = Modifier - .fillMaxSize(0.2f) - ) - } - ) - } -} - -private fun takePhoto( - imageCapture: ImageCapture, - outputDirectory: File, - executor: Executor, - onImageCaptured: (Uri) -> Unit, - onError: (ImageCaptureException) -> Unit -) { - - val photoFile = File( - outputDirectory, - SimpleDateFormat( - "yyyy-MM-dd-HH-mm-ss-SSS", - Locale.US - ).format(System.currentTimeMillis()) + ".jpg" - ) - - val outputOptions = ImageCapture.OutputFileOptions.Builder(photoFile).build() - - imageCapture.takePicture(outputOptions, executor, object : ImageCapture.OnImageSavedCallback { - override fun onError(exception: ImageCaptureException) { - Log.e("onError", "Take photo error:", exception) - onError(exception) - } - - override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) { - val savedUri = Uri.fromFile(photoFile) - onImageCaptured(savedUri) - } - }) -} - -private suspend fun Context.getCameraProvider(): ProcessCameraProvider = - suspendCoroutine { continuation -> - ProcessCameraProvider.getInstance(this).also { cameraProvider -> - cameraProvider.addListener({ - continuation.resume(cameraProvider.get()) - }, ContextCompat.getMainExecutor(this)) - } - } \ No newline at end of file diff --git a/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/VerificationResult.kt b/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/VerificationResult.kt deleted file mode 100644 index 3f98a2a..0000000 --- a/ballerine-android-sdk/src/main/java/io/ballerine/kmp/android_webview/VerificationResult.kt +++ /dev/null @@ -1,11 +0,0 @@ -package io.ballerine.kmp.android_webview - -import androidx.annotation.Keep - -@Keep -data class VerificationResult( - val isSync: Boolean, - val status: String?, - val idvResult: String?, - val code: String?, -) diff --git a/ballerine-android-sdk/src/main/res/drawable/ic_baseline_camera_24.xml b/ballerine-android-sdk/src/main/res/drawable/ic_baseline_camera_24.xml deleted file mode 100644 index b92a6e2..0000000 --- a/ballerine-android-sdk/src/main/res/drawable/ic_baseline_camera_24.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/ballerine-android-sdk/src/main/res/values/strings.xml b/ballerine-android-sdk/src/main/res/values/strings.xml deleted file mode 100644 index a50c194..0000000 --- a/ballerine-android-sdk/src/main/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - Take picture - Allow camera access to continue - Camera access permission is mandatory - \ No newline at end of file diff --git a/ballerine-android-sdk/src/test/java/io/ballerine/kmp/android_webview/ExampleUnitTest.kt b/ballerine-android-sdk/src/test/java/io/ballerine/kmp/android_webview/ExampleUnitTest.kt deleted file mode 100644 index b27f67e..0000000 --- a/ballerine-android-sdk/src/test/java/io/ballerine/kmp/android_webview/ExampleUnitTest.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.ballerine.kmp.android_webview - -import org.junit.Test - -import org.junit.Assert.* - -/** - * Example local unit test, which will execute on the development machine (host). - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -class ExampleUnitTest { - @Test - fun addition_isCorrect() { - assertEquals(4, 2 + 2) - } -} \ No newline at end of file diff --git a/iosApp/Podfile.lock b/iosApp/Podfile.lock index 876aade..89c2580 100644 --- a/iosApp/Podfile.lock +++ b/iosApp/Podfile.lock @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../shared" SPEC CHECKSUMS: - shared: 07cac7993e4f05eda6b76f3a213b070947c3b79f + shared: 7b4d6aa8aa7ada5f9dae3229e2524d316cb9f063 PODFILE CHECKSUM: f282da88f39e69507b0a255187c8a6b644477756 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/iosApp/Pods/Local Podspecs/shared.podspec.json b/iosApp/Pods/Local Podspecs/shared.podspec.json index 2253dab..2e951fb 100644 --- a/iosApp/Pods/Local Podspecs/shared.podspec.json +++ b/iosApp/Pods/Local Podspecs/shared.podspec.json @@ -3,13 +3,15 @@ "version": "1.0", "homepage": "Link to the Shared Module homepage", "source": { - "http": "" + "git": "Not Published", + "tag": "Cocoapods/shared/1.0" }, "authors": "", "license": "", "summary": "Some description for the Shared Module", "vendored_frameworks": "build/cocoapods/framework/shared.framework", "libraries": "c++", + "module_name": "shared_umbrella", "platforms": { "ios": "14.1" }, @@ -22,7 +24,7 @@ "name": "Build shared", "execution_position": "before_compile", "shell_path": "/bin/sh", - "script": " if [ \"YES\" = \"$COCOAPODS_SKIP_KOTLIN_BUILD\" ]; then\n echo \"Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=\"$CONFIGURATION\"\n" + "script": " if [ \"YES\" = \"$COCOAPODS_SKIP_KOTLIN_BUILD\" ]; then\n echo \"Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=$CONFIGURATION\n" } ] } diff --git a/iosApp/Pods/Manifest.lock b/iosApp/Pods/Manifest.lock index 876aade..89c2580 100644 --- a/iosApp/Pods/Manifest.lock +++ b/iosApp/Pods/Manifest.lock @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../shared" SPEC CHECKSUMS: - shared: 07cac7993e4f05eda6b76f3a213b070947c3b79f + shared: 7b4d6aa8aa7ada5f9dae3229e2524d316cb9f063 PODFILE CHECKSUM: f282da88f39e69507b0a255187c8a6b644477756 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/iosApp/Pods/Pods.xcodeproj/project.pbxproj b/iosApp/Pods/Pods.xcodeproj/project.pbxproj index a2f8029..124d1e8 100644 --- a/iosApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/iosApp/Pods/Pods.xcodeproj/project.pbxproj @@ -9,9 +9,9 @@ /* Begin PBXAggregateTarget section */ 8777C9F6889E59EFFD631D80AEE9048B /* shared */ = { isa = PBXAggregateTarget; - buildConfigurationList = 4A85E56EFB3170251B1CB14EB8485EF5 /* Build configuration list for PBXAggregateTarget "shared" */; + buildConfigurationList = 9FAF69EFFAE27522789F3CA719BA83DE /* Build configuration list for PBXAggregateTarget "shared" */; buildPhases = ( - 179B9B8F4A300C109F0453B82420AE1B /* [CP-User] Build shared */, + 4552119A071AC6BAB7327E6434237EC3 /* [CP-User] Build shared */, ); dependencies = ( ); @@ -241,7 +241,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 179B9B8F4A300C109F0453B82420AE1B /* [CP-User] Build shared */ = { + 4552119A071AC6BAB7327E6434237EC3 /* [CP-User] Build shared */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -249,7 +249,7 @@ name = "[CP-User] Build shared"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = " if [ \"YES\" = \"$COCOAPODS_SKIP_KOTLIN_BUILD\" ]; then\n echo \"Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=\"$CONFIGURATION\"\n"; + shellScript = " if [ \"YES\" = \"$COCOAPODS_SKIP_KOTLIN_BUILD\" ]; then\n echo \"Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=$CONFIGURATION\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -312,9 +312,9 @@ }; name = Release; }; - 3066F7A489148C939EF53B3A8E6B8340 /* Debug */ = { + 1B6EAB28480B60AB33A8B63338687E30 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 95B09EA82E7AF9ACCCCAF3E55C859116 /* shared.debug.xcconfig */; + baseConfigurationReference = 35548E3BD8DA30925E8FE97E67B84868 /* shared.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -326,8 +326,9 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; 593F10BFFA94DAC7D6E17FB8A7F32D72 /* Release */ = { isa = XCBuildConfiguration; @@ -494,9 +495,9 @@ }; name = Debug; }; - CB19B582990BFAF5DB94DC6DB89853A9 /* Release */ = { + F80DE7EBDDFC80B4D52BCACF2249C6B6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35548E3BD8DA30925E8FE97E67B84868 /* shared.release.xcconfig */; + baseConfigurationReference = 95B09EA82E7AF9ACCCCAF3E55C859116 /* shared.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -508,9 +509,8 @@ ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ @@ -524,20 +524,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4A85E56EFB3170251B1CB14EB8485EF5 /* Build configuration list for PBXAggregateTarget "shared" */ = { + 9F1E85ECB672A0CC96333A6C6DF60EE6 /* Build configuration list for PBXNativeTarget "Pods-iosApp" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3066F7A489148C939EF53B3A8E6B8340 /* Debug */, - CB19B582990BFAF5DB94DC6DB89853A9 /* Release */, + AF088B6CD92A52AC4DCB62DEEC871231 /* Debug */, + 02DDCCED053337F381DEBAFDEC6F354F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9F1E85ECB672A0CC96333A6C6DF60EE6 /* Build configuration list for PBXNativeTarget "Pods-iosApp" */ = { + 9FAF69EFFAE27522789F3CA719BA83DE /* Build configuration list for PBXAggregateTarget "shared" */ = { isa = XCConfigurationList; buildConfigurations = ( - AF088B6CD92A52AC4DCB62DEEC871231 /* Debug */, - 02DDCCED053337F381DEBAFDEC6F354F /* Release */, + F80DE7EBDDFC80B4D52BCACF2249C6B6 /* Debug */, + 1B6EAB28480B60AB33A8B63338687E30 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/Pods-iosApp.xcscheme b/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/Pods-iosApp.xcscheme new file mode 100644 index 0000000..5163bf6 --- /dev/null +++ b/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/Pods-iosApp.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/shared.xcscheme b/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/shared.xcscheme new file mode 100644 index 0000000..a901214 --- /dev/null +++ b/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/shared.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..7dce8f0 --- /dev/null +++ b/iosApp/Pods/Pods.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,21 @@ + + + + + SchemeUserState + + Pods-iosApp.xcscheme + + isShown + + + shared.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + + diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ca1c48c --- /dev/null +++ b/iosApp/iosApp.xcodeproj/xcuserdata/mcgaps.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + iosApp.xcscheme_^#shared#^_ + + orderHint + 2 + + + + diff --git a/iosApp/iosApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iosApp/iosApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/iosApp/iosApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/iosApp/iosApp.xcworkspace/xcuserdata/mcgaps.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/iosApp.xcworkspace/xcuserdata/mcgaps.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..495f0c0 Binary files /dev/null and b/iosApp/iosApp.xcworkspace/xcuserdata/mcgaps.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/shared/shared.podspec b/shared/shared.podspec index 8b89b9a..84e76f1 100644 --- a/shared/shared.podspec +++ b/shared/shared.podspec @@ -2,20 +2,24 @@ Pod::Spec.new do |spec| spec.name = 'shared' spec.version = '1.0' spec.homepage = 'Link to the Shared Module homepage' - spec.source = { :http=> ''} + spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" } spec.authors = '' spec.license = '' spec.summary = 'Some description for the Shared Module' - spec.vendored_frameworks = 'build/cocoapods/framework/shared.framework' - spec.libraries = 'c++' + + spec.vendored_frameworks = "build/cocoapods/framework/shared.framework" + spec.libraries = "c++" + spec.module_name = "#{spec.name}_umbrella" + spec.ios.deployment_target = '14.1' + - + spec.pod_target_xcconfig = { 'KOTLIN_PROJECT_PATH' => ':shared', 'PRODUCT_MODULE_NAME' => 'shared', } - + spec.script_phases = [ { :name => 'Build shared', @@ -31,9 +35,8 @@ Pod::Spec.new do |spec| "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration="$CONFIGURATION" + -Pkotlin.native.cocoapods.configuration=$CONFIGURATION SCRIPT } ] - end \ No newline at end of file