diff --git a/composeApp/src/androidMain/kotlin/AndroidLogger.kt b/composeApp/src/androidMain/kotlin/AndroidLogger.kt new file mode 100644 index 0000000..59fefe6 --- /dev/null +++ b/composeApp/src/androidMain/kotlin/AndroidLogger.kt @@ -0,0 +1,17 @@ +import android.util.Log +import org.noiseplanet.noisecapture.log.LogLevel +import org.noiseplanet.noisecapture.log.Logger + +class AndroidLogger( + tag: String? = null, +) : Logger(tag) { + + override fun display(level: LogLevel, message: String) { + when (level) { + LogLevel.DEBUG -> Log.d(tag, message) + LogLevel.INFO -> Log.i(tag, message) + LogLevel.WARNING -> Log.w(tag, message) + LogLevel.ERROR -> Log.e(tag, message) + } + } +} diff --git a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/MainActivity.kt b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/MainActivity.kt index c820973..696d83b 100644 --- a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/MainActivity.kt +++ b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/MainActivity.kt @@ -6,8 +6,6 @@ import android.content.Context import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import org.koin.android.logger.AndroidLogger -import org.koin.core.logger.Logger import org.koin.dsl.module /** @@ -15,8 +13,6 @@ import org.koin.dsl.module */ class MainActivity : ComponentActivity() { - private val androidLogger = AndroidLogger() - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -26,9 +22,6 @@ class MainActivity : ComponentActivity() { single { applicationContext } single { this@MainActivity } }, - module { - single { androidLogger } - }, platformModule ) ) diff --git a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt index f9c147f..94365ba 100644 --- a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt +++ b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt @@ -1,13 +1,22 @@ package org.noiseplanet.noisecapture +import AndroidLogger + import org.koin.core.module.Module import org.koin.dsl.module import org.noiseplanet.noisecapture.audio.AndroidAudioSource import org.noiseplanet.noisecapture.audio.AudioSource +import org.noiseplanet.noisecapture.log.Logger /** * Registers koin components specific to this platform */ val platformModule: Module = module { + + factory { params -> + val tag: String? = params.values.firstOrNull() as? String + AndroidLogger(tag) + } + factory { AndroidAudioSource(logger = get()) } } diff --git a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AndroidAudioSource.kt b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AndroidAudioSource.kt index bb837a2..ae06611 100644 --- a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AndroidAudioSource.kt +++ b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AndroidAudioSource.kt @@ -4,14 +4,16 @@ import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.consumeAsFlow -import org.koin.core.logger.Logger +import org.noiseplanet.noisecapture.log.Logger /** * Android audio source implementation * * @param logger Logger instance */ -internal class AndroidAudioSource(private val logger: Logger) : AudioSource { +internal class AndroidAudioSource( + private val logger: Logger, +) : AudioSource { private var audioThread: Thread? = null private var audioRecorder: AudioRecorder? = null diff --git a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AudioRecorder.kt b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AudioRecorder.kt index cdeb909..b933eae 100644 --- a/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AudioRecorder.kt +++ b/composeApp/src/androidMain/kotlin/org/noiseplanet/noisecapture/audio/AudioRecorder.kt @@ -8,7 +8,7 @@ import android.media.AudioRecord.ERROR_BAD_VALUE import android.media.MediaRecorder import android.os.Process import kotlinx.coroutines.channels.Channel -import org.koin.core.logger.Logger +import org.noiseplanet.noisecapture.log.Logger import java.util.concurrent.atomic.AtomicBoolean /** diff --git a/composeApp/src/commonMain/kotlin/org/noiseplanet/noisecapture/log/LogLevel.kt b/composeApp/src/commonMain/kotlin/org/noiseplanet/noisecapture/log/LogLevel.kt new file mode 100644 index 0000000..c36fe47 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/org/noiseplanet/noisecapture/log/LogLevel.kt @@ -0,0 +1,8 @@ +package org.noiseplanet.noisecapture.log + +enum class LogLevel(val shortName: String) { + DEBUG("D"), + INFO("I"), + WARNING("W"), + ERROR("E") +} diff --git a/composeApp/src/commonMain/kotlin/org/noiseplanet/noisecapture/log/Logger.kt b/composeApp/src/commonMain/kotlin/org/noiseplanet/noisecapture/log/Logger.kt new file mode 100644 index 0000000..d5a3251 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/org/noiseplanet/noisecapture/log/Logger.kt @@ -0,0 +1,94 @@ +package org.noiseplanet.noisecapture.log + +/** + * Logger interface that should be implemented for each platform using native logging capabilities + * + * @param tag Tag that will be prefixed before each message logged by this instance. + * Should give context information about the caller (e.g. class name). + */ +abstract class Logger( + // TODO: Is there a way to infer class name at build time? + protected val tag: String? = null, +) { + + /** + * Calls native logger implementation to display the given message from the given log level. + * + * Note: Log level is already written in the message, this property should just be used to + * determine which internal logger method should be called + * + * @param level: Log level + * @param message: Message to be displayed + */ + protected abstract fun display(level: LogLevel, message: String) + + /** + * Logs a debug message. + * + * @param message Message to be displayed. + */ + fun debug(message: String) { + val level = LogLevel.DEBUG + display( + level, + message(level.shortName, message) + ) + } + + /** + * Logs an information message. + * + * @param message Message to be displayed. + */ + fun info(message: String) { + val level = LogLevel.INFO + display( + level, + message(level.shortName, message) + ) + } + + /** + * Logs a warning message. + * + * @param message Message to be displayed. + * @param throwable Optional throwable, if given the stack trace will be appended to the message. + */ + fun warning(message: String, throwable: Throwable? = null) { + val level = LogLevel.WARNING + display( + level, + message(level.shortName, message, throwable) + ) + } + + /** + * Logs an error message. + * + * @param message Message to be displayed. + * @param throwable Optional throwable, if given the stack trace will be appended to the message. + */ + fun error(message: String, throwable: Throwable? = null) { + val level = LogLevel.ERROR + display( + level, + message(level.shortName, message, throwable) + ) + } + + /** + * Formats the given message before logging. + */ + private fun message( + level: String, + msg: String, + t: Throwable? = null, + ): String { + val str = if (tag != null) { + "[$tag] $level: $msg" + } else { + "$level: $msg" + } + return if (t == null) str else "$str $t" + } +} diff --git a/composeApp/src/iosMain/kotlin/MainViewController.kt b/composeApp/src/iosMain/kotlin/MainViewController.kt index 9095a70..685fc5c 100644 --- a/composeApp/src/iosMain/kotlin/MainViewController.kt +++ b/composeApp/src/iosMain/kotlin/MainViewController.kt @@ -1,17 +1,17 @@ -import androidx.compose.runtime.Composable import androidx.compose.ui.window.ComposeUIViewController -import org.koin.core.logger.PrintLogger import org.noiseplanet.noisecapture.initKoin +import org.noiseplanet.noisecapture.platformModule /** * iOS application entry point */ -@Composable +@Suppress("FunctionNaming") fun MainViewController() = ComposeUIViewController { - // TODO: Platform specific implementation - val logger = PrintLogger() - - initKoin().logger(logger) + initKoin( + additionalModules = listOf( + platformModule + ) + ) App() } diff --git a/composeApp/src/iosMain/kotlin/org/noiseplanet/noisecapture/IOSLogger.kt b/composeApp/src/iosMain/kotlin/org/noiseplanet/noisecapture/IOSLogger.kt new file mode 100644 index 0000000..805cd42 --- /dev/null +++ b/composeApp/src/iosMain/kotlin/org/noiseplanet/noisecapture/IOSLogger.kt @@ -0,0 +1,68 @@ +package org.noiseplanet.noisecapture + +import kotlinx.cinterop.ExperimentalForeignApi +import kotlinx.cinterop.ptr +import org.noiseplanet.noisecapture.log.LogLevel +import org.noiseplanet.noisecapture.log.Logger +import platform.darwin.OS_LOG_DEFAULT +import platform.darwin.OS_LOG_TYPE_DEFAULT +import platform.darwin.OS_LOG_TYPE_ERROR +import platform.darwin.OS_LOG_TYPE_FAULT +import platform.darwin.OS_LOG_TYPE_INFO +import platform.darwin.__dso_handle +import platform.darwin._os_log_internal + +/** + * iOS Koin logger implementation that relies on native OSLog + */ +@OptIn(ExperimentalForeignApi::class) +class IOSLogger( + tag: String? = null, +) : Logger(tag) { + + override fun display(level: LogLevel, message: String) { + when (level) { + LogLevel.DEBUG -> iosDebug(message) + LogLevel.INFO -> iosInfo(message) + LogLevel.WARNING -> iosWarn(message) + LogLevel.ERROR -> iosError(message) + else -> iosError(message) + } + } + + private fun iosDebug(msg: String) { + _os_log_internal( + __dso_handle.ptr, + OS_LOG_DEFAULT, + OS_LOG_TYPE_INFO, + msg + ) + } + + private fun iosInfo(msg: String) { + _os_log_internal( + __dso_handle.ptr, + OS_LOG_DEFAULT, + OS_LOG_TYPE_DEFAULT, + msg + ) + } + + private fun iosWarn(msg: String) { + _os_log_internal( + __dso_handle.ptr, + OS_LOG_DEFAULT, + OS_LOG_TYPE_ERROR, + msg + ) + } + + private fun iosError(msg: String) { + _os_log_internal( + __dso_handle.ptr, + OS_LOG_DEFAULT, + OS_LOG_TYPE_FAULT, + msg + ) + } +} diff --git a/composeApp/src/iosMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt b/composeApp/src/iosMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt new file mode 100644 index 0000000..b6b6718 --- /dev/null +++ b/composeApp/src/iosMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt @@ -0,0 +1,16 @@ +package org.noiseplanet.noisecapture + +import org.koin.core.module.Module +import org.koin.dsl.module +import org.noiseplanet.noisecapture.log.Logger + +/** + * Registers koin components specific to this platform + */ +val platformModule: Module = module { + + factory { params -> + val tag: String? = params.values.firstOrNull() as? String + IOSLogger(tag) + } +} diff --git a/composeApp/src/wasmJsMain/kotlin/main.kt b/composeApp/src/wasmJsMain/kotlin/main.kt index 839ecdb..2693f08 100644 --- a/composeApp/src/wasmJsMain/kotlin/main.kt +++ b/composeApp/src/wasmJsMain/kotlin/main.kt @@ -1,21 +1,18 @@ import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.window.ComposeViewport import kotlinx.browser.document -import org.koin.core.logger.PrintLogger import org.noiseplanet.noisecapture.initKoin import org.noiseplanet.noisecapture.platformModule @OptIn(ExperimentalComposeUiApi::class) fun main() { - // TODO: Add a logger implementation that uses JS console - val logger = PrintLogger() - ComposeViewport(document.body!!) { initKoin( - additionalModules = listOf(platformModule) - ).logger(logger) - + additionalModules = listOf( + platformModule + ) + ) App() } } diff --git a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/JSLogger.kt b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/JSLogger.kt new file mode 100644 index 0000000..2177ad4 --- /dev/null +++ b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/JSLogger.kt @@ -0,0 +1,20 @@ +package org.noiseplanet.noisecapture + +import org.noiseplanet.noisecapture.interop.console +import org.noiseplanet.noisecapture.log.LogLevel +import org.noiseplanet.noisecapture.log.Logger + + +class JSLogger( + tag: String? = null, +) : Logger(tag) { + + override fun display(level: LogLevel, message: String) { + when (level) { + LogLevel.DEBUG -> console.debug(message.toJsString()) + LogLevel.INFO -> console.info(message.toJsString()) + LogLevel.WARNING -> console.warn(message.toJsString()) + LogLevel.ERROR -> console.error(message.toJsString()) + } + } +} diff --git a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt index 108c567..64a232a 100644 --- a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt +++ b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/PlatformModule.kt @@ -4,7 +4,14 @@ import org.koin.core.module.Module import org.koin.dsl.module import org.noiseplanet.noisecapture.audio.AudioSource import org.noiseplanet.noisecapture.audio.JsAudioSource +import org.noiseplanet.noisecapture.log.Logger val platformModule: Module = module { + + factory { params -> + val tag: String? = params.values.firstOrNull() as? String + JSLogger(tag) + } + factory { JsAudioSource() } } diff --git a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/interop/Console.kt b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/interop/Console.kt new file mode 100644 index 0000000..f193c7d --- /dev/null +++ b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/interop/Console.kt @@ -0,0 +1,37 @@ +package org.noiseplanet.noisecapture.interop + +/** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console) + */ +external class Console { + + /** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console/debug_static) + */ + fun debug(msg: JsString) + + /** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console/info_static) + */ + fun info(msg: JsString) + + /** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console/log_static) + */ + fun log(msg: JsString) + + /** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console/warn_static) + */ + fun warn(msg: JsString) + + /** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console/error_static) + */ + fun error(msg: JsString) +} + +/** + * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/console) + */ +external val console: Console diff --git a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/PermissionModule.wasmjs.kt b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/PermissionModule.wasmjs.kt index 2ee615b..e8e0d6c 100644 --- a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/PermissionModule.wasmjs.kt +++ b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/PermissionModule.wasmjs.kt @@ -9,9 +9,13 @@ import org.noiseplanet.noisecapture.permission.delegate.PermissionDelegate internal actual fun platformPermissionModule(): Module = module { single(named(Permission.RECORD_AUDIO.name)) { - AudioRecordPermissionDelegate() + AudioRecordPermissionDelegate( + logger = get() + ) } single(named(Permission.LOCATION_BACKGROUND.name)) { - LocationBackgroundPermissionDelegate() + LocationBackgroundPermissionDelegate( + logger = get() + ) } } diff --git a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/AudioRecordPermissionDelegate.kt b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/AudioRecordPermissionDelegate.kt index 40dfe82..4451853 100644 --- a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/AudioRecordPermissionDelegate.kt +++ b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/AudioRecordPermissionDelegate.kt @@ -1,18 +1,18 @@ package org.noiseplanet.noisecapture.permission.delegate import kotlinx.browser.window -import org.koin.core.logger.Level -import org.koin.mp.KoinPlatformTools import org.noiseplanet.noisecapture.interop.AudioContext +import org.noiseplanet.noisecapture.log.Logger import org.noiseplanet.noisecapture.permission.Permission import org.noiseplanet.noisecapture.permission.PermissionState import org.noiseplanet.noisecapture.permission.util.checkPermission import org.w3c.dom.mediacapture.MediaStreamConstraints -class AudioRecordPermissionDelegate : PermissionDelegate { +class AudioRecordPermissionDelegate( + private val logger: Logger, +) : PermissionDelegate { - private val logger = KoinPlatformTools.defaultLogger(Level.DEBUG) private var permissionState = PermissionState.NOT_DETERMINED override suspend fun getPermissionState(): PermissionState { diff --git a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/LocationBackgroundPermissionDelegate.kt b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/LocationBackgroundPermissionDelegate.kt index 2b444d8..00443c3 100644 --- a/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/LocationBackgroundPermissionDelegate.kt +++ b/composeApp/src/wasmJsMain/kotlin/org/noiseplanet/noisecapture/permission/delegate/LocationBackgroundPermissionDelegate.kt @@ -1,15 +1,14 @@ package org.noiseplanet.noisecapture.permission.delegate -import org.koin.core.logger.Logger -import org.koin.mp.KoinPlatformTools import org.noiseplanet.noisecapture.interop.createGeolocationOptions import org.noiseplanet.noisecapture.interop.navigator +import org.noiseplanet.noisecapture.log.Logger import org.noiseplanet.noisecapture.permission.Permission import org.noiseplanet.noisecapture.permission.PermissionState import org.noiseplanet.noisecapture.permission.util.checkPermission internal class LocationBackgroundPermissionDelegate( - private val logger: Logger = KoinPlatformTools.defaultLogger(), + private val logger: Logger, ) : PermissionDelegate { private var permissionSate = PermissionState.NOT_DETERMINED @@ -28,7 +27,7 @@ internal class LocationBackgroundPermissionDelegate( permissionSate = PermissionState.GRANTED }, error = { err -> - logger.warn("Geolocation ping failed: ${err.message}") + logger.warning("Geolocation ping failed: ${err.message}") permissionSate = PermissionState.DENIED }, options = createGeolocationOptions(enableHighAccuracy = true) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 686a8bf..dd696de 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Aug 02 16:50:15 BST 2022 +#Mon Jul 29 14:41:58 CEST 2024 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj index 7474930..c7db824 100755 --- a/iosApp/iosApp.xcodeproj/project.pbxproj +++ b/iosApp/iosApp.xcodeproj/project.pbxproj @@ -17,7 +17,7 @@ 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 = ""; }; 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; }; - 7555FF7B242A565900829871 /* KotlinProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KotlinProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7555FF7B242A565900829871 /* NoiseCapture.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NoiseCapture.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7555FF82242A565900829871 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; AB3632DC29227652001CCB65 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; @@ -62,7 +62,7 @@ 7555FF7C242A565900829871 /* Products */ = { isa = PBXGroup; children = ( - 7555FF7B242A565900829871 /* KotlinProject.app */, + 7555FF7B242A565900829871 /* NoiseCapture.app */, ); name = Products; sourceTree = ""; @@ -107,7 +107,7 @@ packageProductDependencies = ( ); productName = iosApp; - productReference = 7555FF7B242A565900829871 /* KotlinProject.app */; + productReference = 7555FF7B242A565900829871 /* NoiseCapture.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -321,10 +321,7 @@ DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; DEVELOPMENT_TEAM = "${TEAM_ID}"; ENABLE_PREVIEWS = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = iosApp/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.3; LD_RUNPATH_SEARCH_PATHS = ( @@ -348,10 +345,7 @@ DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\""; DEVELOPMENT_TEAM = "${TEAM_ID}"; ENABLE_PREVIEWS = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)\n$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = iosApp/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.3; LD_RUNPATH_SEARCH_PATHS = ( @@ -390,4 +384,4 @@ /* End XCConfigurationList section */ }; rootObject = 7555FF73242A565900829871 /* Project object */; -} \ No newline at end of file +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 927dd2b..1b65757 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,36 +1,3 @@ -/*pluginManagement { - repositories { - google() - gradlePluginPortal() - mavenCentral() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - } - plugins { - kotlin("multiplatform") - id("org.jetbrains.compose") - } -} - -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) - repositories { - mavenLocal() - google() - mavenCentral() - maven { - url = uri("https://plugins.gradle.org/m2/") - } - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - maven("https://jitpack.io") - maven("https://repo.kotlin.link") - } -} -include(":androidApp") -include(":webApp") -include(":ios") -include(":shared") -include(":permissions")*/ - rootProject.name = "NoiseCapture" enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") @@ -61,4 +28,4 @@ dependencyResolutionManagement { } } -include(":composeApp") \ No newline at end of file +include(":composeApp")