From 7e84b40eb2adb1a3e052b0925f09edbddeabcdcf Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 9 Jun 2026 16:37:30 +0200 Subject: [PATCH 1/2] chore: make SPM the only Apple sample and remove cocoapods tooling Phase 2 of the spm4Kmp migration. The SDK no longer uses the Kotlin CocoaPods plugin, so the CocoaPods sample and the internal CocoaPods build tooling are now dead and the SPM sample becomes the sole Apple sample. - Makefile buildAppleSamples now xcodebuilds the SPM sample (kmp-app-spm/iosApp.xcodeproj) and drops podInstall/pod update; CI inherits this via `make buildAppleSamples` - Remove the kmp-app-cocoapods sample (settings include, .run configs) and repoint kmp-app-spm:desktopApp to the SPM shared module - Delete the SDK sentry_kotlin_multiplatform.podspec and the now-unused native.cocoapods plugin entry (root build.gradle.kts + Config.cocoapods) - Rewrite scripts/update-cocoa.sh to bump Config.kt, the plugin gradle.properties, and the SPM sample SwiftPM pin (project.pbxproj), then refresh Package.resolved via xcodebuild -resolvePackageDependencies - Point scripts/bump-version.sh at Config.kt for the Cocoa compat version (podspec is gone) and narrow the sample prepare scripts to kmp-app-spm Consumer-facing Gradle plugin CocoaPods support (installSentryForCocoapods, CocoapodsAutoInstallExtension, CocoaFrameworkLinker) is untouched. Verified: SPM sample iOS xcodebuild BUILD SUCCEEDED, ./gradlew build -p sentry-samples, spotless/detekt/apiCheck green, update-cocoa.sh get-version. Co-Authored-By: Claude Opus 4.8 Co-authored-by: Cursor --- .run/androidApp-cocoapods.run.xml | 64 --- .run/iosApp-cocoapods.run.xml | 7 - Makefile | 8 +- build.gradle.kts | 1 - buildSrc/src/main/java/Config.kt | 1 - scripts/bump-version.sh | 14 +- scripts/update-cocoa.sh | 50 +- .../sentry_kotlin_multiplatform.podspec | 57 --- .../androidApp/build.gradle.kts | 73 --- .../androidApp/sentry.keystore | Bin 2672 -> 0 bytes .../androidApp/src/main/AndroidManifest.xml | 18 - .../sample/kmp/app/android/MainActivity.kt | 76 ---- .../src/main/res/layout/activity_main.xml | 41 -- .../androidApp/src/main/res/raw/sentry.png | Bin 3535 -> 0 bytes .../androidApp/src/main/res/values/colors.xml | 6 - .../androidApp/src/main/res/values/styles.xml | 9 - .../desktopApp/build.gradle.kts | 51 --- .../kotlin/sample.kmp.app.desktop/Main.kt | 68 --- .../kmp-app-cocoapods/iosApp/Podfile | 5 - .../kmp-app-cocoapods/iosApp/Podfile.lock | 25 - .../iosApp/iosApp.xcodeproj/project.pbxproj | 426 ------------------ .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../AccentColor.colorset/Contents.json | 11 - .../AppIcon.appiconset/Contents.json | 98 ---- .../iosApp/Assets.xcassets/Contents.json | 6 - .../iosApp/iosApp/ContentView.swift | 28 -- .../iosApp/iosApp/Info.plist | 48 -- .../Preview Assets.xcassets/Contents.json | 6 - .../iosApp/iosApp/iOSApp.swift | 35 -- .../iosApp/iosApp/sentry.png | Bin 4096 -> 0 bytes .../kmp-app-cocoapods/shared/build.gradle.kts | 79 ---- .../kmp-app-cocoapods/shared/shared.podspec | 54 --- .../src/androidMain/AndroidManifest.xml | 2 - .../kotlin/sample/kmp/app/Platform.kt | 5 - .../sample/kmp/app/SentrySetup.android.kt | 8 - .../kotlin/sample.kmp.app/LoginImpl.kt | 112 ----- .../kotlin/sample.kmp.app/Platform.kt | 5 - .../kotlin/sample.kmp.app/SentrySetup.kt | 70 --- .../src/commonTest/kotlin/CompilationTest.kt | 9 - .../kotlin/sample.kmp.app/HttpClient.kt | 22 - .../iosMain/kotlin/sample.kmp.app/Platform.kt | 7 - .../kotlin/sample.kmp.app/SentrySetup.ios.kt | 8 - .../jvmMain/kotlin/sample/kmp/app/Platform.kt | 5 - .../kotlin/sample/kmp/app/SentrySetup.jvm.kt | 8 - .../kmp-app-spm/desktopApp/build.gradle.kts | 2 +- .../xcshareddata/xcschemes/iosApp.xcscheme | 7 +- .../scripts/prepare-android-build.sh | 2 +- sentry-samples/scripts/prepare-apple-build.sh | 2 +- settings.gradle.kts | 10 - 50 files changed, 34 insertions(+), 1633 deletions(-) delete mode 100644 .run/androidApp-cocoapods.run.xml delete mode 100644 .run/iosApp-cocoapods.run.xml delete mode 100644 sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/sentry.keystore delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/src/main/AndroidManifest.xml delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/src/main/java/sample/kmp/app/android/MainActivity.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/layout/activity_main.xml delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/raw/sentry.png delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/values/colors.xml delete mode 100644 sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/values/styles.xml delete mode 100644 sentry-samples/kmp-app-cocoapods/desktopApp/build.gradle.kts delete mode 100644 sentry-samples/kmp-app-cocoapods/desktopApp/src/jvmMain/kotlin/sample.kmp.app.desktop/Main.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/Podfile delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/Podfile.lock delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp.xcodeproj/project.pbxproj delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp.xcworkspace/contents.xcworkspacedata delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/Assets.xcassets/Contents.json delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/ContentView.swift delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/Info.plist delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/iOSApp.swift delete mode 100644 sentry-samples/kmp-app-cocoapods/iosApp/iosApp/sentry.png delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/build.gradle.kts delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/shared.podspec delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/androidMain/AndroidManifest.xml delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/androidMain/kotlin/sample/kmp/app/Platform.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/androidMain/kotlin/sample/kmp/app/SentrySetup.android.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/commonMain/kotlin/sample.kmp.app/LoginImpl.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/commonMain/kotlin/sample.kmp.app/Platform.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/commonMain/kotlin/sample.kmp.app/SentrySetup.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/commonTest/kotlin/CompilationTest.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/iosMain/kotlin/sample.kmp.app/HttpClient.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/iosMain/kotlin/sample.kmp.app/Platform.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/iosMain/kotlin/sample.kmp.app/SentrySetup.ios.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/jvmMain/kotlin/sample/kmp/app/Platform.kt delete mode 100644 sentry-samples/kmp-app-cocoapods/shared/src/jvmMain/kotlin/sample/kmp/app/SentrySetup.jvm.kt diff --git a/.run/androidApp-cocoapods.run.xml b/.run/androidApp-cocoapods.run.xml deleted file mode 100644 index 5ca5075e2..000000000 --- a/.run/androidApp-cocoapods.run.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.run/iosApp-cocoapods.run.xml b/.run/iosApp-cocoapods.run.xml deleted file mode 100644 index a8eab2077..000000000 --- a/.run/iosApp-cocoapods.run.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Makefile b/Makefile index 71b5662a7..29efd62fa 100644 --- a/Makefile +++ b/Makefile @@ -38,13 +38,9 @@ buildProject: # Build Apple Samples buildAppleSamples: ./gradlew build -p sentry-samples - cd ./sentry-samples/kmp-app-cocoapods/iosApp/iosApp && touch iosApp.xcconfig - # cd ./sentry-samples/kmp-app-mvvm-di/iosApp && touch iosApp.xcconfig + cd ./sentry-samples/kmp-app-spm/iosApp && touch iosApp.xcconfig sudo xcode-select --switch /Applications/Xcode.app && /usr/bin/xcodebuild -version - ./gradlew ":sentry-samples:kmp-app-cocoapods:shared:podInstall" - cd ./sentry-samples/kmp-app-cocoapods/iosApp; pod update; - xcodebuild -workspace ./sentry-samples/kmp-app-cocoapods/iosApp/iosApp.xcworkspace -scheme iosApp -configuration Debug -sdk iphonesimulator -arch arm64 - # xcodebuild -project ./sentry-samples/kmp-app-mvvm-di/iosApp.xcodeproj -scheme iosApp -configuration Debug -sdk iphonesimulator -arch arm64 + xcodebuild -project ./sentry-samples/kmp-app-spm/iosApp.xcodeproj -scheme iosApp -configuration Debug -sdk iphonesimulator -arch arm64 # Build all targets, run tests and checks api diff --git a/build.gradle.kts b/build.gradle.kts index d97daa4c1..7dd52dbd9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,7 +10,6 @@ plugins { id(Config.QualityPlugins.detekt).version(Config.QualityPlugins.detektVersion) id(Config.dokka).version(Config.dokkaVersion) kotlin(Config.multiplatform).version(Config.kotlinVersion).apply(false) - kotlin(Config.cocoapods).version(Config.kotlinVersion).apply(false) id(Config.spmForKmp).version(Config.spmForKmpVersion).apply(false) id(Config.jetpackCompose).version(Config.composePluginVersion).apply(false) id(Config.kotlinCompose).version(Config.kotlinVersion).apply(false) diff --git a/buildSrc/src/main/java/Config.kt b/buildSrc/src/main/java/Config.kt index 8abb7f575..048882536 100644 --- a/buildSrc/src/main/java/Config.kt +++ b/buildSrc/src/main/java/Config.kt @@ -5,7 +5,6 @@ object Config { val gradleMavenPublishPluginVersion = "0.30.0" val multiplatform = "multiplatform" - val cocoapods = "native.cocoapods" val spmForKmp = "io.github.frankois944.spmForKmp" val spmForKmpVersion = "1.9.3" val jetpackCompose = "org.jetbrains.compose" diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh index d7d839707..59e6812f5 100755 --- a/scripts/bump-version.sh +++ b/scripts/bump-version.sh @@ -19,19 +19,17 @@ VERSION_NAME_PATTERN="versionName" perl -pi -e "s/$VERSION_NAME_PATTERN=.*$/$VERSION_NAME_PATTERN=$NEW_VERSION/g" $GRADLE_FILEPATH perl -pi -e "s/$VERSION_NAME_PATTERN=.*$/$VERSION_NAME_PATTERN=$NEW_VERSION/g" $PLUGIN_GRADLE_FILEPATH -PODSPEC_FILEPATH='sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec' -PODSPEC_CONTENT=$(cat $PODSPEC_FILEPATH) +CONFIG_FILEPATH='buildSrc/src/main/java/Config.kt' +CONFIG_CONTENT=$(cat $CONFIG_FILEPATH) -PODSPEC_REGEX="('Sentry', *)'([0-9\.]+)'" +COCOA_VERSION_REGEX='sentryCocoaVersion *= *"([0-9\.]+)"' -if ! [[ $PODSPEC_CONTENT =~ $PODSPEC_REGEX ]]; then - echo "Failed to find the Cocoa version in $PODSPEC_FILEPATH" +if ! [[ $CONFIG_CONTENT =~ $COCOA_VERSION_REGEX ]]; then + echo "Failed to find the Cocoa version in $CONFIG_FILEPATH" exit 1 fi -PODSPEC_WHOLE_MATCH=${BASH_REMATCH[0]} -PODSPEC_VAR_NAME=${BASH_REMATCH[1]} -PODSPEC_VERSION=${BASH_REMATCH[2]} +PODSPEC_VERSION=${BASH_REMATCH[1]} # create a new table entry in readme with NEW_VERSION and PODSPEC_VERSION in the compatibility table # Find the line number of the last entry in the compatibility table and insert the new entry after it diff --git a/scripts/update-cocoa.sh b/scripts/update-cocoa.sh index da0db50d3..73e330ccc 100755 --- a/scripts/update-cocoa.sh +++ b/scripts/update-cocoa.sh @@ -3,19 +3,19 @@ cd $(dirname "$0")/../ config_file='buildSrc/src/main/java/Config.kt' -podspec_file='sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec' plugin_properties_file='sentry-kotlin-multiplatform-gradle-plugin/gradle.properties' -sample_podspec_file='sentry-samples/kmp-app-cocoapods/shared/shared.podspec' -sample_ios_app_dir='sentry-samples/kmp-app-cocoapods/iosApp' +spm_sample_pbxproj_file='sentry-samples/kmp-app-spm/iosApp.xcodeproj/project.pbxproj' +spm_sample_project='sentry-samples/kmp-app-spm/iosApp.xcodeproj' +spm_sample_scheme='iosApp' config_content=$(cat $config_file) -podspec_content=$(cat $podspec_file) plugin_properties_content=$(cat $plugin_properties_file) -sample_podspec_content=$(cat $sample_podspec_file) +pbxproj_content=$(cat $spm_sample_pbxproj_file) config_regex='(sentryCocoaVersion *= *)"([0-9\.]+)"' -podspec_regex="('Sentry', *)'([0-9\.]+)'" plugin_properties_regex='(sentryCocoaVersion *= *)([0-9\.]+)' +# Matches the sentry-cocoa SwiftPM pin in the SPM sample, e.g. `version = 8.58.2;` +pbxproj_regex='(version = )([0-9\.]+)(;)' if ! [[ $config_content =~ $config_regex ]]; then echo "Failed to find the Cocoa version in $config_file" @@ -26,14 +26,6 @@ config_whole_match=${BASH_REMATCH[0]} config_var_name=${BASH_REMATCH[1]} config_version=${BASH_REMATCH[2]} -if ! [[ $podspec_content =~ $podspec_regex ]]; then - echo "Failed to find the Cocoa version in $podspec_file" - exit 1 -fi - -podspec_whole_match=${BASH_REMATCH[0]} -podspec_var_name=${BASH_REMATCH[1]} - if ! [[ $plugin_properties_content =~ $plugin_properties_regex ]]; then echo "Failed to find the Cocoa version in $plugin_properties_file" exit 1 @@ -42,13 +34,12 @@ fi plugin_properties_whole_match=${BASH_REMATCH[0]} plugin_properties_var_name=${BASH_REMATCH[1]} -if ! [[ $sample_podspec_content =~ $podspec_regex ]]; then - echo "Failed to find the Cocoa version in $sample_podspec_file" +if ! [[ $pbxproj_content =~ $pbxproj_regex ]]; then + echo "Failed to find the sentry-cocoa SwiftPM version in $spm_sample_pbxproj_file" exit 1 fi -sample_podspec_whole_match=${BASH_REMATCH[0]} -sample_podspec_var_name=${BASH_REMATCH[1]} +pbxproj_whole_match=${BASH_REMATCH[0]} case $1 in get-version) @@ -63,28 +54,21 @@ set-version) newValue="${config_var_name}\"$2"\" echo "${config_content/${config_whole_match}/$newValue}" >$config_file - # Update the version in the podspec file - newValue="${podspec_var_name}'$2'" - echo "${podspec_content/${podspec_whole_match}/$newValue}" >$podspec_file - # Update the version in the plugin properties file newValue="${plugin_properties_var_name}$2" echo "${plugin_properties_content/${plugin_properties_whole_match}/$newValue}" >$plugin_properties_file - # Update the version in the sample podspec file - newValue="${sample_podspec_var_name}'$2'" - echo "${sample_podspec_content/${sample_podspec_whole_match}/$newValue}" >$sample_podspec_file - - # Generate dummy framework first (required for pod update to work) - echo "Generating dummy framework for shared module..." - ./gradlew :sentry-samples:kmp-app-cocoapods:shared:generateDummyFramework + # Update the sentry-cocoa SwiftPM pin in the SPM sample Xcode project + newValue="version = $2;" + echo "${pbxproj_content/${pbxproj_whole_match}/$newValue}" >$spm_sample_pbxproj_file - # Run pod update in the sample iOS app directory to update Podfile.lock - echo "Running pod update in $sample_ios_app_dir..." - (cd $sample_ios_app_dir && pod update) + # Refresh the SPM sample lockfiles (Package.resolved) so the pinned revision + # matches the new version. + echo "Resolving SwiftPM dependencies for the SPM sample..." + xcodebuild -resolvePackageDependencies -project $spm_sample_project -scheme $spm_sample_scheme ;; *) echo "Unknown argument $1" exit 1 ;; -esac \ No newline at end of file +esac diff --git a/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec b/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec deleted file mode 100644 index 251872b27..000000000 --- a/sentry-kotlin-multiplatform/sentry_kotlin_multiplatform.podspec +++ /dev/null @@ -1,57 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'sentry_kotlin_multiplatform' - spec.version = '0.0.1' - spec.homepage = 'https://github.com/getsentry/sentry-kotlin-multiplatform' - spec.source = { :http=> ''} - spec.authors = '' - spec.license = '' - spec.summary = 'Official Sentry SDK Kotlin Multiplatform' - spec.vendored_frameworks = 'build/cocoapods/framework/sentry_kotlin_multiplatform.framework' - spec.libraries = 'c++' - spec.ios.deployment_target = '11.0' - spec.osx.deployment_target = '10.13' - spec.tvos.deployment_target = '11.0' - spec.watchos.deployment_target = '4.0' - spec.dependency 'Sentry', '8.58.2' - - if !Dir.exist?('build/cocoapods/framework/sentry_kotlin_multiplatform.framework') || Dir.empty?('build/cocoapods/framework/sentry_kotlin_multiplatform.framework') - raise " - - Kotlin framework 'sentry_kotlin_multiplatform' doesn't exist yet, so a proper Xcode project can't be generated. - 'pod install' should be executed after running ':generateDummyFramework' Gradle task: - - ./gradlew :sentry-kotlin-multiplatform:generateDummyFramework - - Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)" - end - - spec.xcconfig = { - 'ENABLE_USER_SCRIPT_SANDBOXING' => 'NO', - } - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':sentry-kotlin-multiplatform', - 'PRODUCT_MODULE_NAME' => 'sentry_kotlin_multiplatform', - } - - spec.script_phases = [ - { - :name => 'Build sentry_kotlin_multiplatform', - :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 diff --git a/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts b/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts deleted file mode 100644 index 3b28133e5..000000000 --- a/sentry-samples/kmp-app-cocoapods/androidApp/build.gradle.kts +++ /dev/null @@ -1,73 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -plugins { - id("com.android.application") - kotlin("android") - id("io.sentry.android.gradle") version "4.0.0" -} - -android { - namespace = "sample.kmp.app.android" - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - compileSdk = Config.Android.compileSdkVersion - defaultConfig { - applicationId = "sample.kmp.app.android" - minSdk = Config.Android.minSdkVersion - targetSdk = Config.Android.targetSdkVersion - versionCode = 1 - versionName = "1.0" - } - 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") - } - } -} - -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - - toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) - } -} - -kotlin { - compilerOptions { - jvmTarget = JvmTarget.JVM_11 - } -} - -dependencies { - implementation(rootProject.project(":sentry-samples:kmp-app-cocoapods:shared")) - implementation("com.google.android.material:material:1.6.1") - implementation("androidx.appcompat:appcompat:1.4.2") - implementation("androidx.constraintlayout:constraintlayout:2.1.4") -} - -// 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-cocoapods/androidApp/sentry.keystore b/sentry-samples/kmp-app-cocoapods/androidApp/sentry.keystore deleted file mode 100644 index 3d6ddc7c11ddf03046c5ac894f993a023dd15325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2672 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 diff --git a/sentry-samples/kmp-app-cocoapods/androidApp/src/main/AndroidManifest.xml b/sentry-samples/kmp-app-cocoapods/androidApp/src/main/AndroidManifest.xml deleted file mode 100644 index 9e4b74b77..000000000 --- a/sentry-samples/kmp-app-cocoapods/androidApp/src/main/AndroidManifest.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - diff --git a/sentry-samples/kmp-app-cocoapods/androidApp/src/main/java/sample/kmp/app/android/MainActivity.kt b/sentry-samples/kmp-app-cocoapods/androidApp/src/main/java/sample/kmp/app/android/MainActivity.kt deleted file mode 100644 index 388efb17a..000000000 --- a/sentry-samples/kmp-app-cocoapods/androidApp/src/main/java/sample/kmp/app/android/MainActivity.kt +++ /dev/null @@ -1,76 +0,0 @@ -package sample.kmp.app.android - -import android.app.Application -import android.os.Bundle -import android.widget.Button -import androidx.appcompat.app.AppCompatActivity -import io.sentry.kotlin.multiplatform.Attachment -import io.sentry.kotlin.multiplatform.Sentry -import io.sentry.kotlin.multiplatform.protocol.Breadcrumb -import sample.kmp.app.LoginImpl -import sample.kmp.app.Platform -import sample.kmp.app.configureSentryScope -import sample.kmp.app.initializeSentry -import java.io.FileOutputStream -import java.io.IOException - -class MainActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - val captureMessageBtn: Button = findViewById(R.id.captureMessageBtn) - val captureExceptionBtn: Button = findViewById(R.id.captureExceptionBtn) - val captureHardCrashBtn: Button = findViewById(R.id.captureHardCrash) - - captureMessageBtn.setOnClickListener { - Sentry.captureMessage("From KMP Sample App: " + Platform().platform) - } - - captureExceptionBtn.setOnClickListener { - LoginImpl.login("MyUsername") - } - - captureHardCrashBtn.setOnClickListener { - LoginImpl.login() - } - } -} - -class SentryApplication : Application() { - override fun onCreate() { - super.onCreate() - - // Initialize Sentry using shared code - initializeSentry() - - // Shared scope across all platforms - configureSentryScope() - - val imageFile = applicationContext.getFileStreamPath("sentry.png") - try { - applicationContext.resources.openRawResource(R.raw.sentry).use { inputStream -> - FileOutputStream(imageFile).use { outputStream -> - val bytes = ByteArray(1024) - while (inputStream.read(bytes) !== -1) { - // To keep the sample code simple this happens on the main thread. Don't do this in a - // real app. - outputStream.write(bytes) - } - outputStream.flush() - } - } - } catch (e: IOException) { - Sentry.captureException(e) - } - - val imageAttachment = Attachment(imageFile.getAbsolutePath(), "sentry.png", "image/png") - - // Add platform specific scope in addition to the shared scope - Sentry.configureScope { - it.setContext("Android Context", mapOf("context1" to 12, "context2" to false)) - it.addBreadcrumb(Breadcrumb.debug("initialized Sentry on Android")) - it.addAttachment(imageAttachment) - } - } -} diff --git a/sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/layout/activity_main.xml b/sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/layout/activity_main.xml deleted file mode 100644 index 024e73437..000000000 --- a/sentry-samples/kmp-app-cocoapods/androidApp/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - -