diff --git a/sentry-samples/README.md b/sentry-samples/README.md index 591292a8..4b25e4d8 100644 --- a/sentry-samples/README.md +++ b/sentry-samples/README.md @@ -4,7 +4,6 @@ This contains three samples of Kotlin Multiplatform projects showcasing the Sentry Kotlin Multiplatform SDK usage. - Sample 1: Android, iOS with Cocoapods, Desktop with Jetpack Compose - Sample 2: Android, iOS with Swift Package Manager, Desktop with Jetpack Compose -- Sample 3: Android with Jetpack Compose, iOS with SwiftUI and MVVM and Dependency Injection with [Koin](https://insert-koin.io/) ## Getting Started > All samples are configured as sub-projects. Open the root project in Android Studio and sync the gradle files. diff --git a/sentry-samples/kmp-app-mvvm-di/README.md b/sentry-samples/kmp-app-mvvm-di/README.md deleted file mode 100644 index 36969957..00000000 --- a/sentry-samples/kmp-app-mvvm-di/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Sentry KMP Demo App - -This is a demo app for the Sentry Kotlin Multiplatform SDK that includes a native iOS app and a native Android app with shared code. - -## Shared Features - - Dependency Injection with Koin - - ViewModels - - Sentry Setup - -## Getting Started - -### IDE - -Install the [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio. - -You can use Android Studio to run both the Android and iOS sample apps. - -The android target is available as `sentry-samples.kmp-app-mvvm-di.androidApp` automatically. -The iOS target needs to be configured: add a new run configuration and select an iOS application as a new target. -You can then select the `iosApp.xcworkspace` file for the required `Xcode project file`. - -### Android -- Export your `ANDROID_HOME` environment variable if you haven't done already. -- You can run `./gradlew :sentry-samples:kmp-app:androidApp:assembleDebug` to compile the Android app. - -### iOS - -#### Cocoapods -You need Cocoapods installed on your machine. - -Run `export LANG=en_US.UTF-8` to avoid encoding issues. - -`pod install` will automatically run through gradle if you run the iOS app through Android Studio. -However, you can still run `pod install` on the iOS folder manually if you want to make sure the pods are up to date. - -#### DSYMS -First you need to have `sentry-cli` installed. - -Then add the following script to your `Build Phases` in Xcode and change the `org`, `project`, `auth_token` slug placeholders accordingly: -Make sure to change the placeholders correctly, otherwise the iOS app will not run. - -```shell -if which sentry-cli >/dev/null; then -export SENTRY_ORG= -export SENTRY_PROJECT= -export SENTRY_AUTH_TOKEN= -ERROR=$(sentry-cli upload-dif "$DWARF_DSYM_FOLDER_PATH" 2>&1 >/dev/null) -if [ ! $? -eq 0 ]; then -echo "warning: sentry-cli - $ERROR" -fi -else -echo "warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases" -fi -``` - -### Sentry Setup -If you need to change the `DSN` or any options you can do so in the `SentrySetup.kt` file in the `shared` module. diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts b/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts deleted file mode 100644 index ca12999d..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/build.gradle.kts +++ /dev/null @@ -1,81 +0,0 @@ -plugins { - id("com.android.application") - kotlin("android") - id("io.sentry.android.gradle") version "3.5.0" -} - -android { - namespace = "sentry.kmp.demo.android" - compileSdk = 34 - defaultConfig { - applicationId = "sentry.kmp.demo" - minSdk = 21 - targetSdk = 34 - versionCode = 1 - versionName = "1.0" - } - buildFeatures { - compose = true - } - signingConfigs { - create("release") { - storeFile = file("sentry.keystore") - storePassword = "sentry" - keyAlias = "Sentry Android Key" - keyPassword = "sentry" - } - } - buildTypes { - getByName("release") { - isDefault = true - isMinifyEnabled = true - proguardFiles.add(getDefaultProguardFile("proguard-android-optimize.txt")) - signingConfig = signingConfigs.getByName("release") - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = JavaVersion.VERSION_1_8.toString() - freeCompilerArgs += listOf( - "-P", - "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true" - ) - } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.5" - } -} - -dependencies { - implementation(rootProject.project(":sentry-samples:kmp-app-mvvm-di:shared")) - implementation(Config.Libs.Samples.koinAndroid) - implementation("androidx.core:core-ktx:1.12.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") - implementation("androidx.appcompat:appcompat:1.6.1") - implementation("com.google.android.material:material:1.10.0") - implementation("androidx.activity:activity-compose:1.8.1") - implementation("androidx.lifecycle:lifecycle-runtime:2.6.2") - implementation("androidx.lifecycle:lifecycle-viewmodel:2.6.2") - implementation("androidx.navigation:navigation-compose:2.7.5") - implementation("androidx.navigation:navigation-runtime:2.7.5") - implementation("androidx.compose.compiler:compiler:1.5.5") - implementation("androidx.compose.ui:ui:1.6.0-beta02") - implementation("androidx.compose.ui:ui-tooling:1.6.0-beta02") - implementation("androidx.compose.foundation:foundation:1.6.0-beta02") - implementation("androidx.compose.material:material:1.6.0-beta02") -} - -// Prevent Sentry from being included in the Android app through the AGP. -configurations { - compileOnly { - exclude(group = "io.sentry", module = "sentry") - exclude(group = "io.sentry", module = "sentry-android") - } -} - -sentry { - autoUploadProguardMapping.set(false) -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/sentry.keystore b/sentry-samples/kmp-app-mvvm-di/androidApp/sentry.keystore deleted file mode 100644 index 3d6ddc7c..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/sentry.keystore and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/AndroidManifest.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/AndroidManifest.xml deleted file mode 100644 index d2569f46..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt deleted file mode 100644 index 68ad571f..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainActivity.kt +++ /dev/null @@ -1,25 +0,0 @@ -package sentry.kmp.demo.android - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import org.koin.androidx.viewmodel.ext.android.viewModel -import org.koin.core.component.KoinComponent -import sentry.kmp.demo.android.theme.Theme -import sentry.kmp.demo.android.ui.MyApp -import sentry.kmp.demo.models.AuthenticationViewModel -import sentry.kmp.demo.models.HomeViewModel - -class MainActivity : ComponentActivity(), KoinComponent { - private val authenticationViewModel: AuthenticationViewModel by viewModel() - private val homeViewModel: HomeViewModel by viewModel() - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContent { - Theme { - MyApp(authenticationViewModel, homeViewModel) - } - } - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainApp.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainApp.kt deleted file mode 100644 index 05ad4a62..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/MainApp.kt +++ /dev/null @@ -1,22 +0,0 @@ -package sentry.kmp.demo.android - -import android.app.Application -import android.content.Context -import org.koin.dsl.module -import sentry.kmp.demo.initKoin -import sentry.kmp.demo.sentry.initializeSentry - -class MainApp : Application() { - - override fun onCreate() { - super.onCreate() - - initializeSentry() - - initKoin( - module { - single { this@MainApp } - } - ) - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Color.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Color.kt deleted file mode 100644 index 81b515ff..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Color.kt +++ /dev/null @@ -1,8 +0,0 @@ -package sentry.kmp.demo.android.theme - -import androidx.compose.ui.graphics.Color - -val Purple200 = Color(0xFFBB86FC) -val Purple500 = Color(0xFF6200EE) -val Purple700 = Color(0xFF3700B3) -val Teal200 = Color(0xFF03DAC5) diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Shapes.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Shapes.kt deleted file mode 100644 index ee7ee816..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Shapes.kt +++ /dev/null @@ -1,11 +0,0 @@ -package sentry.kmp.demo.android.theme - -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Shapes -import androidx.compose.ui.unit.dp - -val Shapes = Shapes( - small = RoundedCornerShape(4.dp), - medium = RoundedCornerShape(4.dp), - large = RoundedCornerShape(0.dp) -) diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Theme.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Theme.kt deleted file mode 100644 index a1c77b63..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Theme.kt +++ /dev/null @@ -1,38 +0,0 @@ -package sentry.kmp.demo.android.theme - -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material.MaterialTheme -import androidx.compose.material.darkColors -import androidx.compose.material.lightColors -import androidx.compose.runtime.Composable - -private val DarkColorPalette = darkColors( - primary = Purple200, - primaryVariant = Purple700, - secondary = Teal200 -) - -private val LightColorPalette = lightColors( - primary = Purple500, - primaryVariant = Purple700, - secondary = Teal200 -) - -@Composable -fun Theme( - darkTheme: Boolean = isSystemInDarkTheme(), - content: @Composable () -> Unit -) { - val colors = if (darkTheme) { - DarkColorPalette - } else { - LightColorPalette - } - - MaterialTheme( - colors = colors, - typography = Typography, - shapes = Shapes, - content = content - ) -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Typography.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Typography.kt deleted file mode 100644 index 327d3dde..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/theme/Typography.kt +++ /dev/null @@ -1,15 +0,0 @@ -package sentry.kmp.demo.android.theme - -import androidx.compose.material.Typography -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.sp - -val Typography = Typography( - body1 = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp - ) -) diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/Composables.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/Composables.kt deleted file mode 100644 index 810ac516..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/Composables.kt +++ /dev/null @@ -1,25 +0,0 @@ -package sentry.kmp.demo.android.ui - -import androidx.compose.runtime.Composable -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController -import sentry.kmp.demo.models.AuthenticationViewModel -import sentry.kmp.demo.models.HomeViewModel - -@Composable -fun MyApp(authenticationViewModel: AuthenticationViewModel, homeViewModel: HomeViewModel) { - val navController = rememberNavController() - - NavHost( - navController = navController, - startDestination = "login" - ) { - composable("login") { - LoginScreen(navController, authenticationViewModel) - } - composable("home") { - HomeScreen(navController, homeViewModel) - } - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/HomeScreen.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/HomeScreen.kt deleted file mode 100644 index dd20aafb..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/HomeScreen.kt +++ /dev/null @@ -1,83 +0,0 @@ -package sentry.kmp.demo.android.ui - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material.AlertDialog -import androidx.compose.material.Button -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import sentry.kmp.demo.models.HomeViewModel - -@Composable -fun HomeScreen(navController: NavController, homeViewModel: HomeViewModel) { - var showDialog by remember { mutableStateOf(false) } - var dialogMessage by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .padding(16.dp), - horizontalAlignment = Alignment.Start, - verticalArrangement = Arrangement.Center - ) { - Text( - text = "Welcome!", - style = MaterialTheme.typography.h4, - fontWeight = FontWeight.Bold, - modifier = Modifier.padding(bottom = 16.dp) - ) - Text( - text = homeViewModel.homeText, - style = MaterialTheme.typography.body1, - fontWeight = FontWeight.Normal, - modifier = Modifier.padding(bottom = 16.dp) - ) - Button( - onClick = { - homeViewModel.updateProfileWithErr() - dialogMessage = "An error occurred during profile update" - showDialog = true - }, - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp) - ) { - Text("Update Profile (error)") - } - Button( - onClick = { navController.popBackStack() }, - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp) - ) { - Text("Log Out") - } - if (showDialog) { - AlertDialog( - onDismissRequest = { showDialog = false }, - title = { Text("Error") }, - text = { Text(dialogMessage) }, - confirmButton = { - Button( - onClick = { showDialog = false } - ) { - Text("OK") - } - } - ) - } - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/LoginScreen.kt b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/LoginScreen.kt deleted file mode 100644 index c7c668c8..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/kotlin/sentry/kmp/demo/android/ui/LoginScreen.kt +++ /dev/null @@ -1,125 +0,0 @@ -package sentry.kmp.demo.android.ui - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.AlertDialog -import androidx.compose.material.Button -import androidx.compose.material.Checkbox -import androidx.compose.material.MaterialTheme -import androidx.compose.material.OutlinedTextField -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.unit.dp -import androidx.navigation.NavController -import sentry.kmp.demo.models.AuthenticationViewModel - -@Composable -fun LoginScreen(navController: NavController, authenticationViewModel: AuthenticationViewModel) { - val email = remember { mutableStateOf("user@sentrydemo.com") } - val password = remember { mutableStateOf("randompassword") } - val enableLoginError = remember { mutableStateOf(true) } - var showDialog by remember { mutableStateOf(false) } - var dialogMessage by remember { mutableStateOf("") } - - Column( - modifier = Modifier - .fillMaxSize() - .padding(16.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center - ) { - Text( - text = "Sentry Demo", - style = MaterialTheme.typography.h4, - fontWeight = FontWeight.Bold, - modifier = Modifier.padding(bottom = 16.dp) - ) - OutlinedTextField( - value = email.value, - onValueChange = { email.value = it }, - label = { Text("Email") }, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Email - ), - modifier = Modifier.fillMaxWidth() - ) - OutlinedTextField( - value = password.value, - onValueChange = { password.value = it }, - label = { Text("Password") }, - visualTransformation = PasswordVisualTransformation(), - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Password - ), - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp) - ) - Button( - onClick = { - val succeeded = authenticationViewModel.login(enableLoginError.value) - if (succeeded) { - navController.navigate("home") - } else { - dialogMessage = "An error occurred during login" - showDialog = true - } - }, - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp) - ) { - Text("Log In ${if (enableLoginError.value) "(error)" else ""}") - } - Button( - onClick = { - authenticationViewModel.signUp() - }, - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp) - ) { - Text("Sign up (crash)") - } - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Start - ) { - Text("Enable login error") - Checkbox( - checked = enableLoginError.value, - onCheckedChange = { enableLoginError.value = it }, - modifier = Modifier.padding(end = 8.dp) - ) - } - if (showDialog) { - AlertDialog( - onDismissRequest = { showDialog = false }, - title = { Text("Error") }, - text = { Text(dialogMessage) }, - confirmButton = { - Button( - onClick = { showDialog = false } - ) { - Text("OK") - } - } - ) - } - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 1f6bb290..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_favorite_24px.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_favorite_24px.xml deleted file mode 100644 index ce351f43..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_favorite_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_favorite_border_24px.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_favorite_border_24px.xml deleted file mode 100644 index e6646709..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_favorite_border_24px.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_launcher_background.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 0d025f9b..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 6f3b755b..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 6f3b755b..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 898f3ed5..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index dffca360..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 64ba76f7..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index dae5e082..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index e5ed4659..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 14ed0af3..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index b0907cac..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index d8ae0315..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 2c18de9e..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index beed3cdd..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/colors.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/colors.xml deleted file mode 100644 index 69b22338..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/colors.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - #008577 - #00574B - #D81B60 - diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/strings.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/strings.xml deleted file mode 100644 index f83b2779..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Sentry KMP Demo - diff --git a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/styles.xml b/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/styles.xml deleted file mode 100644 index 5885930d..00000000 --- a/sentry-samples/kmp-app-mvvm-di/androidApp/src/main/res/values/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.pbxproj b/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.pbxproj deleted file mode 100644 index c8852946..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,447 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; }; - 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; }; - 1DBB948028897D4700E79663 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 1DBB947F28897D4700E79663 /* Sentry */; }; - 243652ED29F34FBF00FD902A /* sentry.png in Resources */ = {isa = PBXBuildFile; fileRef = 243652EC29F34FBF00FD902A /* sentry.png */; }; - 243652F629F3516400FD902A /* Koin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 243652F229F3516400FD902A /* Koin.swift */; }; - 243652F729F3516400FD902A /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 243652F329F3516400FD902A /* LoginScreen.swift */; }; - 243652F829F3516400FD902A /* HomeScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 243652F429F3516400FD902A /* HomeScreen.swift */; }; - 243652F929F3516400FD902A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 243652F529F3516400FD902A /* AppDelegate.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 7555FFB4242A642300829871 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 243652EC29F34FBF00FD902A /* sentry.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sentry.png; sourceTree = ""; }; - 243652F229F3516400FD902A /* Koin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Koin.swift; sourceTree = ""; }; - 243652F329F3516400FD902A /* LoginScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginScreen.swift; sourceTree = ""; }; - 243652F429F3516400FD902A /* HomeScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeScreen.swift; sourceTree = ""; }; - 243652F529F3516400FD902A /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 24B0FC5A29F826B300434F1C /* iosApp.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = iosApp.xcconfig; sourceTree = ""; }; - 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 7555FF78242A565900829871 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1DBB948028897D4700E79663 /* Sentry in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 058557D7273AAEEB004C7B11 /* Preview Content */ = { - isa = PBXGroup; - children = ( - 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - 7555FF72242A565900829871 = { - isa = PBXGroup; - children = ( - 7555FF7D242A565900829871 /* iosApp */, - 7555FF7C242A565900829871 /* Products */, - 7555FFB0242A642200829871 /* Frameworks */, - ); - sourceTree = ""; - }; - 7555FF7C242A565900829871 /* Products */ = { - isa = PBXGroup; - children = ( - 7555FF7B242A565900829871 /* iosApp.app */, - ); - name = Products; - sourceTree = ""; - }; - 7555FF7D242A565900829871 /* iosApp */ = { - isa = PBXGroup; - children = ( - 243652EC29F34FBF00FD902A /* sentry.png */, - 058557BA273AAA24004C7B11 /* Assets.xcassets */, - 243652F529F3516400FD902A /* AppDelegate.swift */, - 243652F429F3516400FD902A /* HomeScreen.swift */, - 243652F229F3516400FD902A /* Koin.swift */, - 243652F329F3516400FD902A /* LoginScreen.swift */, - 7555FF8C242A565B00829871 /* Info.plist */, - 058557D7273AAEEB004C7B11 /* Preview Content */, - 24B0FC5A29F826B300434F1C /* iosApp.xcconfig */, - ); - path = iosApp; - sourceTree = ""; - }; - 7555FFB0242A642200829871 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7555FF7A242A565900829871 /* iosApp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */; - buildPhases = ( - 7555FFB5242A651A00829871 /* Run Script */, - 7555FF77242A565900829871 /* Sources */, - 7555FF78242A565900829871 /* Frameworks */, - 7555FF79242A565900829871 /* Resources */, - 7555FFB4242A642300829871 /* Embed Frameworks */, - 24B0FC5B29F826D700434F1C /* Upload Debug Symbols to Sentry */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = iosApp; - packageProductDependencies = ( - 1DBB947F28897D4700E79663 /* Sentry */, - ); - productName = NSExceptionKtSample; - productReference = 7555FF7B242A565900829871 /* iosApp.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 7555FF73242A565900829871 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1130; - LastUpgradeCheck = 1130; - ORGANIZATIONNAME = orgName; - TargetAttributes = { - 7555FF7A242A565900829871 = { - CreatedOnToolsVersion = 11.3.1; - }; - }; - }; - buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 7555FF72242A565900829871; - packageReferences = ( - 1DBB947E28897D4700E79663 /* XCRemoteSwiftPackageReference "sentry-cocoa" */, - ); - productRefGroup = 7555FF7C242A565900829871 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 7555FF7A242A565900829871 /* iosApp */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 7555FF79242A565900829871 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */, - 243652ED29F34FBF00FD902A /* sentry.png in Resources */, - 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 24B0FC5B29F826D700434F1C /* Upload Debug Symbols to Sentry */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", - ); - name = "Upload Debug Symbols to Sentry"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if which sentry-cli >/dev/null; then\nERROR=$(sentry-cli upload-dif \"$DWARF_DSYM_FOLDER_PATH\" 2>&1 >/dev/null)\nif [ ! $? -eq 0 ]; then\necho \"warning: sentry-cli - $ERROR\"\nfi\nelse\necho \"warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases\"\nfi\n"; - }; - 7555FFB5242A651A00829871 /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "../../gradlew :sentry-samples:kmp-app-mvvm-di:shared:embedAndSignAppleFrameworkForXcode\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7555FF77242A565900829871 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 243652F929F3516400FD902A /* AppDelegate.swift in Sources */, - 243652F629F3516400FD902A /* Koin.swift in Sources */, - 243652F829F3516400FD902A /* HomeScreen.swift in Sources */, - 243652F729F3516400FD902A /* LoginScreen.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 7555FFA3242A565B00829871 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 24B0FC5A29F826B300434F1C /* iosApp.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 7555FFA4242A565B00829871 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 24B0FC5A29F826B300434F1C /* iosApp.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7555FFA6242A565B00829871 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; - ENABLE_PREVIEWS = YES; - FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"; - INFOPLIST_FILE = iosApp/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-framework", - shared, - ); - PRODUCT_BUNDLE_IDENTIFIER = io.sentry.kotlin.multiplatform.samples; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 7555FFA7242A565B00829871 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; - ENABLE_PREVIEWS = YES; - FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"; - INFOPLIST_FILE = iosApp/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - "-framework", - shared, - ); - PRODUCT_BUNDLE_IDENTIFIER = io.sentry.kotlin.multiplatform.samples; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7555FFA3242A565B00829871 /* Debug */, - 7555FFA4242A565B00829871 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7555FFA6242A565B00829871 /* Debug */, - 7555FFA7242A565B00829871 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - 1DBB947E28897D4700E79663 /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/getsentry/sentry-cocoa.git"; - requirement = { - kind = exactVersion; - version = 8.20.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 1DBB947F28897D4700E79663 /* Sentry */ = { - isa = XCSwiftPackageProductDependency; - package = 1DBB947E28897D4700E79663 /* XCRemoteSwiftPackageReference "sentry-cocoa" */; - productName = Sentry; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 7555FF73242A565900829871 /* Project object */; -} diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme b/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme deleted file mode 100644 index cfbcecae..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/xcshareddata/xcschemes/iosApp.xcscheme +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/AppDelegate.swift b/sentry-samples/kmp-app-mvvm-di/iosApp/AppDelegate.swift deleted file mode 100644 index cc0ba4c7..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/AppDelegate.swift +++ /dev/null @@ -1,24 +0,0 @@ -import SwiftUI -import shared - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions - launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - - startKoin() - - SentrySetupKt.initializeSentry() - - let viewController = UIHostingController(rootView: HomeScreen()) - - self.window = UIWindow(frame: UIScreen.main.bounds) - self.window?.rootViewController = viewController - self.window?.makeKeyAndVisible() - - return true - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index ee7e3ca0..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index fb88a396..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "20x20" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "29x29" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "40x40" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "ipad", - "scale" : "1x", - "size" : "76x76" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "76x76" - }, - { - "idiom" : "ipad", - "scale" : "2x", - "size" : "83.5x83.5" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/Contents.json b/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/Contents.json deleted file mode 100644 index 4aa7c535..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/HomeScreen.swift b/sentry-samples/kmp-app-mvvm-di/iosApp/HomeScreen.swift deleted file mode 100644 index aa71784f..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/HomeScreen.swift +++ /dev/null @@ -1,50 +0,0 @@ -import SwiftUI -import shared - -struct HomeScreen: View { - @State private var presentLoginScreen = true - @State private var showDialog = false - @State private var dialogMessage = "" - - @Environment(\.presentationMode) var presentationMode - private var viewModel = KotlinDependencies.shared.getHomeViewModel() - - var body: some View { - VStack(alignment: .center, spacing: 16) { - Text("Welcome!") - .font(.title) - .fontWeight(.bold) - .padding(.bottom, 16) - Text(viewModel.homeText) - .font(.body) - .fontWeight(.regular) - .padding(.bottom, 16) - Button(action: { - viewModel.updateProfileWithErr() - showDialog = true - dialogMessage = "An error occurred during profile update" - }) { - Text("Update Profile (error)") - } - Button(action: { presentLoginScreen = true }) { - Text("Log Out") - } - .sheet(isPresented: $presentLoginScreen) { - LoginScreen() - } - .frame(maxWidth: .infinity) - .padding(.top, 16) - } - .padding(16) - .frame(maxWidth: .infinity, maxHeight: .infinity) - .alert(isPresented: $showDialog) { - Alert( - title: Text("Error"), - message: Text(dialogMessage), - dismissButton: .default(Text("OK")) { - showDialog = false - } - ) - } - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/Info.plist b/sentry-samples/kmp-app-mvvm-di/iosApp/Info.plist deleted file mode 100644 index b9760e8d..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/Info.plist +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - SENTRY_DSN - $(SENTRY_DSN) - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - - UILaunchScreen - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - bugsnag - - apiKey - $(BUGSNAG_API_KEY) - - - diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/Koin.swift b/sentry-samples/kmp-app-mvvm-di/iosApp/Koin.swift deleted file mode 100644 index 5c01cc17..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/Koin.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Foundation -import shared - -func startKoin() { - let koinApplication = KoinIOSKt.doInitKoinIos() - _koin = koinApplication.koin -} - -private var _koin: Koin_coreKoin? -var koin: Koin_coreKoin { - return _koin! -} \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/LoginScreen.swift b/sentry-samples/kmp-app-mvvm-di/iosApp/LoginScreen.swift deleted file mode 100644 index f2699fe7..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/LoginScreen.swift +++ /dev/null @@ -1,70 +0,0 @@ -import SwiftUI -import shared - -struct LoginScreen: View { - @State private var email = "user@sentrydemo.com" - @State private var password = "randompassword" - @State private var enableLoginError = true - @State private var showDialog = false - @State private var dialogMessage = "" - @State private var isLoggedIn = false - @Environment(\.presentationMode) var presentationMode - - private var viewModel = KotlinDependencies.shared.getAuthenticationViewModel() - - var body: some View { - VStack(alignment: .center, spacing: 16) { - Text("Sentry Demo") - .font(.title) - .fontWeight(.bold) - .padding(.bottom, 16) - TextField("Email", text: $email) - .keyboardType(.emailAddress) - .textFieldStyle(RoundedBorderTextFieldStyle()) - SecureField("Password", text: $password) - .textFieldStyle(RoundedBorderTextFieldStyle()) - .padding(.top, 16) - Button(action: { - let succeded = viewModel.login(withError: enableLoginError) - if succeded { - // present home screen - presentationMode.wrappedValue.dismiss() - } else { - dialogMessage = "An error occurred during login" - showDialog = true - } - }) { - if (enableLoginError) { - Text("Log In (error)") - } else { - Text("Log In") - } - } - .frame(maxWidth: .infinity) - .padding(.top, 16) - Button(action: { - viewModel.signUp() - }) { - Text("Sign up (crash)") - } - .frame(maxWidth: .infinity) - .padding(.top, 16) - HStack { - Text("Enable login error") - Toggle("", isOn: $enableLoginError) - .padding(.trailing, 8) - } - } - .padding(16) - .frame(maxWidth: .infinity, maxHeight: .infinity) - .alert(isPresented: $showDialog) { - Alert( - title: Text("Error"), - message: Text(dialogMessage), - dismissButton: .default(Text("OK")) { - showDialog = false - } - ) - } - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/sentry-samples/kmp-app-mvvm-di/iosApp/Preview Content/Preview Assets.xcassets/Contents.json deleted file mode 100644 index 4aa7c535..00000000 --- a/sentry-samples/kmp-app-mvvm-di/iosApp/Preview Content/Preview Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp/sentry.png b/sentry-samples/kmp-app-mvvm-di/iosApp/sentry.png deleted file mode 100644 index 8595392b..00000000 Binary files a/sentry-samples/kmp-app-mvvm-di/iosApp/sentry.png and /dev/null differ diff --git a/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts b/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts deleted file mode 100644 index 9d5f59fb..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/build.gradle.kts +++ /dev/null @@ -1,45 +0,0 @@ -plugins { - kotlin("multiplatform") - id("com.android.library") -} - -kotlin { - applyDefaultHierarchyTemplate() - - androidTarget() - listOf( - iosX64(), - iosArm64(), - iosSimulatorArm64() - ).forEach { - it.binaries.framework { - baseName = "shared" - isStatic = true - export(project(":sentry-kotlin-multiplatform")) - } - } - - sourceSets { - commonMain.dependencies { - api(project(":sentry-kotlin-multiplatform")) - implementation(Config.Libs.Samples.koinCore) - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") - } - - commonTest.dependencies { - implementation(kotlin("test")) - } - - androidMain.dependencies { - implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") - } - } -} - -android { - compileSdk = Config.Android.compileSdkVersion - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - defaultConfig { - minSdk = Config.Android.minSdkVersion - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/shared.podspec b/sentry-samples/kmp-app-mvvm-di/shared/shared.podspec deleted file mode 100644 index 97306a57..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/shared.podspec +++ /dev/null @@ -1,39 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'shared' - spec.version = '0.1.0' - spec.homepage = '' - spec.source = { :http=> ''} - spec.authors = '' - spec.license = '' - spec.summary = '' - spec.vendored_frameworks = 'build/cocoapods/framework/shared.framework' - spec.libraries = 'c++' - - - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':sentry-samples:kmp-app-mvvm-di:shared', - 'PRODUCT_MODULE_NAME' => 'shared', - } - - spec.script_phases = [ - { - :name => 'Build shared', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then - echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$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" - SCRIPT - } - ] - -end \ No newline at end of file diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/AndroidManifest.xml b/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/AndroidManifest.xml deleted file mode 100644 index a723fcb0..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/kotlin/sentry/kmp/demo/KoinAndroid.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/kotlin/sentry/kmp/demo/KoinAndroid.kt deleted file mode 100644 index d91c9842..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/kotlin/sentry/kmp/demo/KoinAndroid.kt +++ /dev/null @@ -1,10 +0,0 @@ -package sentry.kmp.demo - -import org.koin.dsl.module -import sentry.kmp.demo.models.AuthenticationViewModel -import sentry.kmp.demo.models.HomeViewModel - -actual val platformModule = module { - single { AuthenticationViewModel() } - single { HomeViewModel() } -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/kotlin/sentry/kmp/demo/models/ViewModel.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/kotlin/sentry/kmp/demo/models/ViewModel.kt deleted file mode 100644 index bbb35589..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/androidMain/kotlin/sentry/kmp/demo/models/ViewModel.kt +++ /dev/null @@ -1,13 +0,0 @@ -package sentry.kmp.demo.models - -import kotlinx.coroutines.CoroutineScope -import androidx.lifecycle.ViewModel as AndroidXViewModel -import androidx.lifecycle.viewModelScope as androidXViewModelScope - -actual abstract class ViewModel actual constructor() : AndroidXViewModel() { - actual val viewModelScope: CoroutineScope = androidXViewModelScope - - actual override fun onCleared() { - super.onCleared() - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/Koin.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/Koin.kt deleted file mode 100644 index 4b30583d..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/Koin.kt +++ /dev/null @@ -1,17 +0,0 @@ -package sentry.kmp.demo - -import org.koin.core.KoinApplication -import org.koin.core.context.startKoin -import org.koin.core.module.Module - -fun initKoin(appModule: Module): KoinApplication { - val koinApplication = startKoin { - modules( - appModule, - platformModule - ) - } - return koinApplication -} - -expect val platformModule: Module diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/AuthenticationViewModel.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/AuthenticationViewModel.kt deleted file mode 100644 index b0d3f153..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/AuthenticationViewModel.kt +++ /dev/null @@ -1,35 +0,0 @@ -package sentry.kmp.demo.models - -import io.sentry.kotlin.multiplatform.Sentry -import io.sentry.kotlin.multiplatform.SentryLevel -import io.sentry.kotlin.multiplatform.protocol.Breadcrumb - -class LoginException(message: String) : Exception(message) - -class AuthenticationViewModel : ViewModel() { - - fun login(withError: Boolean): Boolean { - return if (withError) { - try { - throw LoginException("Error logging in") - } catch (exception: Exception) { - Sentry.captureException(exception) { - val breadcrumb = Breadcrumb.error("Error during login").apply { - setData("touch event", "on login") - } - it.addBreadcrumb(breadcrumb) - it.setContext("Login", "Failed due to ...") - it.setTag("login", "failed") - it.level = SentryLevel.ERROR - } - false - } - } else { - true - } - } - - fun signUp() { - Sentry.crash() - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/HomeViewModel.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/HomeViewModel.kt deleted file mode 100644 index 712a4a9d..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/HomeViewModel.kt +++ /dev/null @@ -1,20 +0,0 @@ -package sentry.kmp.demo.models - -import io.sentry.kotlin.multiplatform.ScopeCallback -import io.sentry.kotlin.multiplatform.Sentry - -class ProfileUpdateException(message: String) : Exception(message) - -class HomeViewModel : ViewModel() { - - val homeText = - "This screen will show you how we can change the scope of each Sentry event via captureException!" - - private val scopeConfig: ScopeCallback = { - it.setContext("home", "logged in") - } - - fun updateProfileWithErr() { - Sentry.captureException(ProfileUpdateException("Error updating profile"), scopeConfig) - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/ViewModel.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/ViewModel.kt deleted file mode 100644 index 82b5aa83..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/models/ViewModel.kt +++ /dev/null @@ -1,8 +0,0 @@ -package sentry.kmp.demo.models - -import kotlinx.coroutines.CoroutineScope - -expect abstract class ViewModel() { - val viewModelScope: CoroutineScope - protected open fun onCleared() -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/sentry/SentrySetup.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/sentry/SentrySetup.kt deleted file mode 100644 index 60f1f6e1..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/commonMain/kotlin/sentry.kmp.demo/sentry/SentrySetup.kt +++ /dev/null @@ -1,48 +0,0 @@ -package sentry.kmp.demo.sentry - -import io.sentry.kotlin.multiplatform.Attachment -import io.sentry.kotlin.multiplatform.OptionsConfiguration -import io.sentry.kotlin.multiplatform.Sentry - -/** Shared options configuration */ -private val optionsConfiguration: OptionsConfiguration = { - it.dsn = "https://83f281ded2844eda83a8a413b080dbb9@o447951.ingest.sentry.io/5903800" - it.attachStackTrace = true - it.attachThreads = true - it.attachScreenshot = true - it.release = "kmp-release@0.0.1" - it.beforeSend = { event -> - if (event.environment == "test") { - null - } else { - event - } - } - it.beforeBreadcrumb = { breadcrumb -> - breadcrumb.message = "Add message before every breadcrumb" - breadcrumb - } -} - -/** - * Initializes Sentry with given options. - * Make sure to hook this into your native platforms as early as possible - */ -fun initializeSentry() { - Sentry.init(optionsConfiguration) - configureSentryScope() -} - -/** Configure scope applicable to all platforms */ -private fun configureSentryScope() { - Sentry.configureScope { - it.setContext("Custom Context", "Shared Context") - it.setTag("custom-tag", "from shared code") - it.addAttachment( - Attachment( - "This is a shared text attachment".encodeToByteArray(), - "shared.log" - ) - ) - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/iosMain/kotlin/sentry.kmp.demo/KoinIOS.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/iosMain/kotlin/sentry.kmp.demo/KoinIOS.kt deleted file mode 100644 index 7cd50c18..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/iosMain/kotlin/sentry.kmp.demo/KoinIOS.kt +++ /dev/null @@ -1,22 +0,0 @@ -package sentry.kmp.demo - -import org.koin.core.KoinApplication -import org.koin.core.component.KoinComponent -import org.koin.dsl.module -import sentry.kmp.demo.models.AuthenticationViewModel -import sentry.kmp.demo.models.HomeViewModel - -fun initKoinIos(): KoinApplication = initKoin( - module { } -) - -actual val platformModule = module { - single { AuthenticationViewModel() } - single { HomeViewModel() } -} - -@Suppress("unused") // Called from Swift -object KotlinDependencies : KoinComponent { - fun getAuthenticationViewModel() = getKoin().get() - fun getHomeViewModel() = getKoin().get() -} diff --git a/sentry-samples/kmp-app-mvvm-di/shared/src/iosMain/kotlin/sentry.kmp.demo/models/ViewModel.kt b/sentry-samples/kmp-app-mvvm-di/shared/src/iosMain/kotlin/sentry.kmp.demo/models/ViewModel.kt deleted file mode 100644 index e157e877..00000000 --- a/sentry-samples/kmp-app-mvvm-di/shared/src/iosMain/kotlin/sentry.kmp.demo/models/ViewModel.kt +++ /dev/null @@ -1,30 +0,0 @@ -package sentry.kmp.demo.models - -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * Base class that provides a Kotlin/Native equivalent to the AndroidX `ViewModel`. In particular, this provides - * a [CoroutineScope][kotlinx.coroutines.CoroutineScope] which uses [Dispatchers.Main][kotlinx.coroutines.Dispatchers.Main] - * and can be tied into an arbitrary lifecycle by calling [clear] at the appropriate time. - */ -actual abstract class ViewModel { - - actual val viewModelScope = MainScope() - - /** - * Override this to do any cleanup immediately before the internal [CoroutineScope][kotlinx.coroutines.CoroutineScope] - * is cancelled in [clear] - */ - protected actual open fun onCleared() { - } - - /** - * Cancels the internal [CoroutineScope][kotlinx.coroutines.CoroutineScope]. After this is called, the ViewModel should - * no longer be used. - */ - fun clear() { - onCleared() - viewModelScope.cancel() - } -} diff --git a/sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/sentry-samples/kmp-app-spm/iosApp.xcodeproj/.swiftpm/xcode/package.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to sentry-samples/kmp-app-spm/iosApp.xcodeproj/.swiftpm/xcode/package.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/sentry-samples/scripts/prepare-android-build.sh b/sentry-samples/scripts/prepare-android-build.sh index ad6e8db6..b922ced2 100755 --- a/sentry-samples/scripts/prepare-android-build.sh +++ b/sentry-samples/scripts/prepare-android-build.sh @@ -16,7 +16,7 @@ defaults.org=$org_slug auth.token=$auth_token" proj_root="$PWD" -dirs=$(find "$proj_root" -type f -name "sentry.keystore" -exec dirname {} \; | grep -E 'kmp-app-(cocoapods|spm|mvvm-di)/androidApp' | sort | uniq) +dirs=$(find "$proj_root" -type f -name "sentry.keystore" -exec dirname {} \; | grep -E 'kmp-app-(cocoapods|spm)/androidApp' | sort | uniq) for dir in $dirs; do if [ -d "$dir" ]; then diff --git a/sentry-samples/scripts/prepare-apple-build.sh b/sentry-samples/scripts/prepare-apple-build.sh index 143dd316..1e3aee7f 100755 --- a/sentry-samples/scripts/prepare-apple-build.sh +++ b/sentry-samples/scripts/prepare-apple-build.sh @@ -16,7 +16,7 @@ SENTRY_PROJECT = $project_slug SENTRY_AUTH_TOKEN = $auth_token" proj_root="$PWD" -dirs=$(find "$proj_root" -type f -name "Info.plist" -exec dirname {} \; | grep -E 'kmp-app-(cocoapods|spm|mvvm-di)/iosApp' | sort | uniq) +dirs=$(find "$proj_root" -type f -name "Info.plist" -exec dirname {} \; | grep -E 'kmp-app-(cocoapods|spm)/iosApp' | sort | uniq) for dir in $dirs; do if [ -d "$dir" ]; then diff --git a/settings.gradle.kts b/settings.gradle.kts index ae3265f4..2b049f5d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -41,12 +41,3 @@ Simple KMP App with targets: include("sentry-samples:kmp-app-cocoapods:shared") include("sentry-samples:kmp-app-cocoapods:androidApp") include("sentry-samples:kmp-app-cocoapods:desktopApp") - -/* -KMP App with MVVM and Dependency Injection with Koin: - - Android with Jetpack Compose - - iOS with SwiftUI and SPM -*/ -// This is currently disabled because Koin does not support Kotlin 1.9.21 yet -// include("sentry-samples:kmp-app-mvvm-di:shared") -// include("sentry-samples:kmp-app-mvvm-di:androidApp")