From e0d569e4e5c1c10ebd1bbd82e5b09751d220f477 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 10 Sep 2020 00:27:18 +0900 Subject: [PATCH 01/34] Define a separate LogLevel from nested in the Napier class. --- .../napier/sample/CrashlyticsAntilog.kt | 6 +-- .../napier/mppsample/CrashlyticsAntilog.kt | 6 +-- .../com/github/aakira/napier/DebugAntilog.kt | 18 ++++---- .../com/github/aakira/napier/Antilog.kt | 8 ++-- .../com/github/aakira/napier/LogLevel.kt | 11 +++++ .../kotlin/com/github/aakira/napier/Napier.kt | 41 ++++++++----------- .../com/github/aakira/napier/NapierTest.kt | 40 +++++++++--------- .../com/github/aakira/napier/DebugAntilog.kt | 22 +++++----- .../com/github/aakira/napier/DebugAntilog.kt | 14 +++---- .../com/github/aakira/napier/DebugAntilog.kt | 30 +++++++------- .../com/github/aakira/napier/NapierJvmTest.kt | 2 +- 11 files changed, 100 insertions(+), 98 deletions(-) create mode 100644 napier/src/commonMain/kotlin/com/github/aakira/napier/LogLevel.kt diff --git a/android/src/main/java/com/github/aakira/napier/sample/CrashlyticsAntilog.kt b/android/src/main/java/com/github/aakira/napier/sample/CrashlyticsAntilog.kt index 1b9d3cb..00fedff 100644 --- a/android/src/main/java/com/github/aakira/napier/sample/CrashlyticsAntilog.kt +++ b/android/src/main/java/com/github/aakira/napier/sample/CrashlyticsAntilog.kt @@ -3,13 +3,13 @@ package com.github.aakira.napier.sample import android.content.Context import com.crashlytics.android.Crashlytics import com.github.aakira.napier.Antilog -import com.github.aakira.napier.Napier +import com.github.aakira.napier.LogLevel class CrashlyticsAntilog(private val context: Context) : Antilog() { - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { // send only error log - if (priority < Napier.Level.ERROR) return + if (priority < LogLevel.ERROR) return Crashlytics.getInstance().core.log(priority.ordinal, tag, message) throwable?.let { diff --git a/mpp-sample/src/iosMain/kotlin/com/github/aakira/napier/mppsample/CrashlyticsAntilog.kt b/mpp-sample/src/iosMain/kotlin/com/github/aakira/napier/mppsample/CrashlyticsAntilog.kt index 1ca7982..aa72c6b 100644 --- a/mpp-sample/src/iosMain/kotlin/com/github/aakira/napier/mppsample/CrashlyticsAntilog.kt +++ b/mpp-sample/src/iosMain/kotlin/com/github/aakira/napier/mppsample/CrashlyticsAntilog.kt @@ -1,16 +1,16 @@ package com.github.aakira.napier.mppsample import com.github.aakira.napier.Antilog -import com.github.aakira.napier.Napier +import com.github.aakira.napier.LogLevel class CrashlyticsAntilog( private val crashlyticsAddLog: (priority: Int, tag: String?, message: String?) -> Unit, private val crashlyticsSendLog: (throwable: Throwable) -> Unit ) : Antilog() { - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { // send only error log - if (priority < Napier.Level.ERROR) return + if (priority < LogLevel.ERROR) return crashlyticsAddLog.invoke(priority.ordinal, tag, message) diff --git a/napier/src/androidMain/kotlin/com/github/aakira/napier/DebugAntilog.kt b/napier/src/androidMain/kotlin/com/github/aakira/napier/DebugAntilog.kt index 54c1126..d5ff772 100644 --- a/napier/src/androidMain/kotlin/com/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/androidMain/kotlin/com/github/aakira/napier/DebugAntilog.kt @@ -16,7 +16,7 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { private val anonymousClass = Pattern.compile("(\\$\\d+)+$") - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { val debugTag = tag ?: performTag(defaultTag) @@ -31,7 +31,7 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { val length = fullMessage.length if (length <= MAX_LOG_LENGTH) { // Fast path for small messages which can fit in a single call. - if (priority == Napier.Level.ASSERT) { + if (priority == LogLevel.ASSERT) { Log.wtf(debugTag, fullMessage) } else { Log.println(priority.toValue(), debugTag, fullMessage) @@ -95,12 +95,12 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { return sw.toString() } - private fun Napier.Level.toValue() = when (this) { - Napier.Level.VERBOSE -> Log.VERBOSE - Napier.Level.DEBUG -> Log.DEBUG - Napier.Level.INFO -> Log.INFO - Napier.Level.WARNING -> Log.WARN - Napier.Level.ERROR -> Log.ERROR - Napier.Level.ASSERT -> Log.ASSERT + private fun LogLevel.toValue() = when (this) { + LogLevel.VERBOSE -> Log.VERBOSE + LogLevel.DEBUG -> Log.DEBUG + LogLevel.INFO -> Log.INFO + LogLevel.WARNING -> Log.WARN + LogLevel.ERROR -> Log.ERROR + LogLevel.ASSERT -> Log.ASSERT } } diff --git a/napier/src/commonMain/kotlin/com/github/aakira/napier/Antilog.kt b/napier/src/commonMain/kotlin/com/github/aakira/napier/Antilog.kt index 2453607..a68df64 100644 --- a/napier/src/commonMain/kotlin/com/github/aakira/napier/Antilog.kt +++ b/napier/src/commonMain/kotlin/com/github/aakira/napier/Antilog.kt @@ -2,17 +2,17 @@ package com.github.aakira.napier abstract class Antilog { - open fun isEnable(priority: Napier.Level, tag: String?) = true + open fun isEnable(priority: LogLevel, tag: String?) = true - fun log(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + fun log(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { if (isEnable(priority, tag)) { performLog(priority, tag, throwable, message) } } - internal fun rawLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + internal fun rawLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { performLog(priority, tag, throwable, message) } - protected abstract fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) + protected abstract fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) } diff --git a/napier/src/commonMain/kotlin/com/github/aakira/napier/LogLevel.kt b/napier/src/commonMain/kotlin/com/github/aakira/napier/LogLevel.kt new file mode 100644 index 0000000..f56299d --- /dev/null +++ b/napier/src/commonMain/kotlin/com/github/aakira/napier/LogLevel.kt @@ -0,0 +1,11 @@ +package com.github.aakira.napier + +enum class LogLevel { + VERBOSE, + DEBUG, + INFO, + WARNING, + ERROR, + ASSERT, +} + diff --git a/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt b/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt index 38d3276..83f6776 100644 --- a/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt +++ b/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt @@ -5,83 +5,74 @@ import kotlin.native.concurrent.ThreadLocal @ThreadLocal object Napier { - enum class Level { - VERBOSE, - DEBUG, - INFO, - WARNING, - ERROR, - ASSERT, - } - private val baseArray = mutableListOf() fun base(antilog: Antilog) { baseArray.add(antilog) } - fun isEnable(priority: Level, tag: String?) = baseArray.any { it.isEnable(priority, tag) } + fun isEnable(priority: LogLevel, tag: String?) = baseArray.any { it.isEnable(priority, tag) } @PublishedApi - internal fun rawLog(priority: Level, tag: String?, throwable: Throwable?, message: String?) { + internal fun rawLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { baseArray.forEach { it.rawLog(priority, tag, throwable, message) } } fun v(message: String, throwable: Throwable? = null, tag: String? = null) { - log(Level.VERBOSE, tag, throwable, message) + log(LogLevel.VERBOSE, tag, throwable, message) } fun v(message: () -> String, throwable: Throwable? = null, tag: String? = null) { - log(Level.VERBOSE, tag, throwable, message) + log(LogLevel.VERBOSE, tag, throwable, message) } fun i(message: String, throwable: Throwable? = null, tag: String? = null) { - log(Level.INFO, tag, throwable, message) + log(LogLevel.INFO, tag, throwable, message) } fun i(message: () -> String, throwable: Throwable? = null, tag: String? = null) { - log(Level.INFO, tag, throwable, message) + log(LogLevel.INFO, tag, throwable, message) } fun d(message: String, throwable: Throwable? = null, tag: String? = null) { - log(Level.DEBUG, tag, throwable, message) + log(LogLevel.DEBUG, tag, throwable, message) } fun d(message: () -> String, throwable: Throwable? = null, tag: String? = null) { - log(Level.DEBUG, tag, throwable, message) + log(LogLevel.DEBUG, tag, throwable, message) } fun w(message: String, throwable: Throwable? = null, tag: String? = null) { - log(Level.WARNING, tag, throwable, message) + log(LogLevel.WARNING, tag, throwable, message) } fun w(message: () -> String, throwable: Throwable? = null, tag: String? = null) { - log(Level.WARNING, tag, throwable, message) + log(LogLevel.WARNING, tag, throwable, message) } fun e(message: String, throwable: Throwable? = null, tag: String? = null) { - log(Level.ERROR, tag, throwable, message) + log(LogLevel.ERROR, tag, throwable, message) } fun e(message: () -> String, throwable: Throwable? = null, tag: String? = null) { - log(Level.ERROR, tag, throwable, message) + log(LogLevel.ERROR, tag, throwable, message) } fun wtf(message: String, throwable: Throwable? = null, tag: String? = null) { - log(Level.ASSERT, tag, throwable, message) + log(LogLevel.ASSERT, tag, throwable, message) } fun wtf(message: () -> String, throwable: Throwable? = null, tag: String? = null) { - log(Level.ASSERT, tag, throwable, message) + log(LogLevel.ASSERT, tag, throwable, message) } - fun log(priority: Level, tag: String? = null, throwable: Throwable? = null, message: String) { + fun log(priority: LogLevel, tag: String? = null, throwable: Throwable? = null, message: String) { if (isEnable(priority, tag)) { rawLog(priority, tag, throwable, message) } } - fun log(priority: Level, tag: String? = null, throwable: Throwable? = null, message: () -> String) { + fun log(priority: LogLevel, tag: String? = null, throwable: Throwable? = null, message: () -> String) { if (isEnable(priority, tag)) { rawLog(priority, tag, throwable, message()) } diff --git a/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt b/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt index adb8c15..cc46fdf 100644 --- a/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt +++ b/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt @@ -12,7 +12,7 @@ class NapierTest { ) private data class Expected( - val priority: Napier.Level, + val priority: LogLevel, val tag: String?, val throwable: Throwable?, val message: String? @@ -24,7 +24,7 @@ class NapierTest { fun `Check output log`() { val output = ArrayList() Napier.base(object : Antilog() { - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { output.add(Expected(priority, tag, throwable, message)) } }) @@ -34,7 +34,7 @@ class NapierTest { "verbose", { Napier.v("hello") }, Expected( - Napier.Level.VERBOSE, + LogLevel.VERBOSE, null, null, "hello" @@ -44,7 +44,7 @@ class NapierTest { "debug", { Napier.d("hello") }, Expected( - Napier.Level.DEBUG, + LogLevel.DEBUG, null, null, "hello" @@ -54,7 +54,7 @@ class NapierTest { "info", { Napier.i("hello") }, Expected( - Napier.Level.INFO, + LogLevel.INFO, null, null, "hello" @@ -64,7 +64,7 @@ class NapierTest { "warning", { Napier.w("hello") }, Expected( - Napier.Level.WARNING, + LogLevel.WARNING, null, null, "hello" @@ -74,7 +74,7 @@ class NapierTest { "error", { Napier.e("hello") }, Expected( - Napier.Level.ERROR, + LogLevel.ERROR, null, null, "hello" @@ -84,7 +84,7 @@ class NapierTest { "assert", { Napier.wtf("hello") }, Expected( - Napier.Level.ASSERT, + LogLevel.ASSERT, null, null, "hello" @@ -95,7 +95,7 @@ class NapierTest { "tag verbose", { Napier.v("hello", null, "tag") }, Expected( - Napier.Level.VERBOSE, + LogLevel.VERBOSE, "tag", null, "hello" @@ -105,7 +105,7 @@ class NapierTest { "tag debug", { Napier.d("hello", null, "tag") }, Expected( - Napier.Level.DEBUG, + LogLevel.DEBUG, "tag", null, "hello" @@ -115,7 +115,7 @@ class NapierTest { "tag info", { Napier.i("hello", null, "tag") }, Expected( - Napier.Level.INFO, + LogLevel.INFO, "tag", null, "hello" @@ -125,7 +125,7 @@ class NapierTest { "tag warning", { Napier.w("hello", null, "tag") }, Expected( - Napier.Level.WARNING, + LogLevel.WARNING, "tag", null, "hello" @@ -135,7 +135,7 @@ class NapierTest { "tag error", { Napier.e("hello", null, "tag") }, Expected( - Napier.Level.ERROR, + LogLevel.ERROR, "tag", null, "hello" @@ -145,7 +145,7 @@ class NapierTest { "tag assert", { Napier.wtf("hello", null, "tag") }, Expected( - Napier.Level.ASSERT, + LogLevel.ASSERT, "tag", null, "hello" @@ -156,7 +156,7 @@ class NapierTest { "throwable verbose", { Napier.v("hello", CustomThrowable("error"), "tag") }, Expected( - Napier.Level.VERBOSE, + LogLevel.VERBOSE, "tag", CustomThrowable("error"), "hello" @@ -166,7 +166,7 @@ class NapierTest { "throwable debug", { Napier.d("hello", CustomThrowable("error"), "tag") }, Expected( - Napier.Level.DEBUG, + LogLevel.DEBUG, "tag", CustomThrowable("error"), "hello" @@ -176,7 +176,7 @@ class NapierTest { "throwable info", { Napier.i("hello", CustomThrowable("error"), "tag") }, Expected( - Napier.Level.INFO, + LogLevel.INFO, "tag", CustomThrowable("error"), "hello" @@ -186,7 +186,7 @@ class NapierTest { "throwable warning", { Napier.w("hello", CustomThrowable("error"), "tag") }, Expected( - Napier.Level.WARNING, + LogLevel.WARNING, "tag", CustomThrowable("error"), "hello" @@ -196,7 +196,7 @@ class NapierTest { "throwable error", { Napier.e("hello", CustomThrowable("error"), "tag") }, Expected( - Napier.Level.ERROR, + LogLevel.ERROR, "tag", CustomThrowable("error"), "hello" @@ -206,7 +206,7 @@ class NapierTest { "throwable assert", { Napier.wtf("hello", CustomThrowable("error"), "tag") }, Expected( - Napier.Level.ASSERT, + LogLevel.ASSERT, "tag", CustomThrowable("error"), "hello" diff --git a/napier/src/iosMain/kotlin/com/github/aakira/napier/DebugAntilog.kt b/napier/src/iosMain/kotlin/com/github/aakira/napier/DebugAntilog.kt index dffacb2..dc3de6d 100644 --- a/napier/src/iosMain/kotlin/com/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/iosMain/kotlin/com/github/aakira/napier/DebugAntilog.kt @@ -14,24 +14,24 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { dateFormat = "MM-dd HH:mm:ss.SSS" } - private val tagMap: HashMap = hashMapOf( - Napier.Level.VERBOSE to "💜 VERBOSE", - Napier.Level.DEBUG to "💚 DEBUG", - Napier.Level.INFO to "💙 INFO", - Napier.Level.WARNING to "💛 WARN", - Napier.Level.ERROR to "❤️ ERROR", - Napier.Level.ASSERT to "💞 ASSERT" + private val tagMap: HashMap = hashMapOf( + LogLevel.VERBOSE to "💜 VERBOSE", + LogLevel.DEBUG to "💚 DEBUG", + LogLevel.INFO to "💙 INFO", + LogLevel.WARNING to "💛 WARN", + LogLevel.ERROR to "❤️ ERROR", + LogLevel.ASSERT to "💞 ASSERT" ) - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { - if (priority == Napier.Level.ASSERT) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { + if (priority == LogLevel.ASSERT) { assert(crashAssert) { buildLog(priority, tag, message) } } else { println(buildLog(priority, tag, message)) } } - fun setTag(level: Napier.Level, tag: String) { + fun setTag(level: LogLevel, tag: String) { tagMap[level] = tag } @@ -41,7 +41,7 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { private fun getCurrentTime() = dateFormatter.stringFromDate(NSDate()) - private fun buildLog(priority: Napier.Level, tag: String?, message: String?): String { + private fun buildLog(priority: LogLevel, tag: String?, message: String?): String { return "${getCurrentTime()} ${tagMap[priority]} ${tag ?: performTag(defaultTag)} - $message" } diff --git a/napier/src/jsMain/kotlin/com/github/aakira/napier/DebugAntilog.kt b/napier/src/jsMain/kotlin/com/github/aakira/napier/DebugAntilog.kt index 6246e4c..b6d1728 100644 --- a/napier/src/jsMain/kotlin/com/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jsMain/kotlin/com/github/aakira/napier/DebugAntilog.kt @@ -2,7 +2,7 @@ package com.github.aakira.napier class DebugAntilog(private val defaultTag: String = "app") : Antilog() { - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { val logTag = tag ?: defaultTag val fullMessage = if (message != null) { @@ -14,12 +14,12 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { } else throwable?.message ?: return when (priority) { - Napier.Level.VERBOSE -> console.log("VERBOSE $logTag : $fullMessage") - Napier.Level.DEBUG -> console.log("DEBUG $logTag : $fullMessage") - Napier.Level.INFO -> console.info("INFO $logTag : $fullMessage") - Napier.Level.WARNING -> console.warn("WARNING $logTag : $fullMessage") - Napier.Level.ERROR -> console.error("ERROR $logTag : $fullMessage") - Napier.Level.ASSERT -> console.error("ASSERT $logTag : $fullMessage") + LogLevel.VERBOSE -> console.log("VERBOSE $logTag : $fullMessage") + LogLevel.DEBUG -> console.log("DEBUG $logTag : $fullMessage") + LogLevel.INFO -> console.info("INFO $logTag : $fullMessage") + LogLevel.WARNING -> console.warn("WARNING $logTag : $fullMessage") + LogLevel.ERROR -> console.error("ERROR $logTag : $fullMessage") + LogLevel.ASSERT -> console.error("ASSERT $logTag : $fullMessage") } } } diff --git a/napier/src/jvmMain/kotlin/com/github/aakira/napier/DebugAntilog.kt b/napier/src/jvmMain/kotlin/com/github/aakira/napier/DebugAntilog.kt index f10da10..d4f474d 100644 --- a/napier/src/jvmMain/kotlin/com/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jvmMain/kotlin/com/github/aakira/napier/DebugAntilog.kt @@ -37,16 +37,16 @@ class DebugAntilog( private val anonymousClass = Pattern.compile("(\\$\\d+)+$") - private val tagMap: HashMap = hashMapOf( - Napier.Level.VERBOSE to "[VERBOSE]", - Napier.Level.DEBUG to "[DEBUG]", - Napier.Level.INFO to "[INFO]", - Napier.Level.WARNING to "[WARN]", - Napier.Level.ERROR to "[ERROR]", - Napier.Level.ASSERT to "[ASSERT]" + private val tagMap: HashMap = hashMapOf( + LogLevel.VERBOSE to "[VERBOSE]", + LogLevel.DEBUG to "[DEBUG]", + LogLevel.INFO to "[INFO]", + LogLevel.WARNING to "[WARN]", + LogLevel.ERROR to "[ERROR]", + LogLevel.ASSERT to "[ASSERT]" ) - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { val debugTag = tag ?: performTag(defaultTag) @@ -59,16 +59,16 @@ class DebugAntilog( } else throwable?.stackTraceString ?: return when (priority) { - Napier.Level.VERBOSE -> logger.finest(buildLog(priority, debugTag, fullMessage)) - Napier.Level.DEBUG -> logger.fine(buildLog(priority, debugTag, fullMessage)) - Napier.Level.INFO -> logger.info(buildLog(priority, debugTag, fullMessage)) - Napier.Level.WARNING -> logger.warning(buildLog(priority, debugTag, fullMessage)) - Napier.Level.ERROR -> logger.severe(buildLog(priority, debugTag, fullMessage)) - Napier.Level.ASSERT -> logger.severe(buildLog(priority, debugTag, fullMessage)) + LogLevel.VERBOSE -> logger.finest(buildLog(priority, debugTag, fullMessage)) + LogLevel.DEBUG -> logger.fine(buildLog(priority, debugTag, fullMessage)) + LogLevel.INFO -> logger.info(buildLog(priority, debugTag, fullMessage)) + LogLevel.WARNING -> logger.warning(buildLog(priority, debugTag, fullMessage)) + LogLevel.ERROR -> logger.severe(buildLog(priority, debugTag, fullMessage)) + LogLevel.ASSERT -> logger.severe(buildLog(priority, debugTag, fullMessage)) } } - internal fun buildLog(priority: Napier.Level, tag: String?, message: String?): String { + internal fun buildLog(priority: LogLevel, tag: String?, message: String?): String { return "${tagMap[priority]} ${tag ?: performTag(defaultTag)} - $message" } diff --git a/napier/src/jvmTest/kotlin/com/github/aakira/napier/NapierJvmTest.kt b/napier/src/jvmTest/kotlin/com/github/aakira/napier/NapierJvmTest.kt index 8e2176e..b7d142d 100644 --- a/napier/src/jvmTest/kotlin/com/github/aakira/napier/NapierJvmTest.kt +++ b/napier/src/jvmTest/kotlin/com/github/aakira/napier/NapierJvmTest.kt @@ -19,7 +19,7 @@ class NapierJvmTest { fun `Check buildLog`() { assertEquals( "[VERBOSE] defaultTag - message", - debugAntilog.buildLog(Napier.Level.VERBOSE, "defaultTag", "message") + debugAntilog.buildLog(LogLevel.VERBOSE, "defaultTag", "message") ) } } From 5a7e89f7aeb0c429bbad7686b5d4c29950b01251 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 10 Sep 2020 00:37:19 +0900 Subject: [PATCH 02/34] Bump up the version code and name. --- buildSrc/src/main/java/dependencies/Versions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/java/dependencies/Versions.kt b/buildSrc/src/main/java/dependencies/Versions.kt index a1b79eb..feb27be 100644 --- a/buildSrc/src/main/java/dependencies/Versions.kt +++ b/buildSrc/src/main/java/dependencies/Versions.kt @@ -1,8 +1,8 @@ package dependencies object Versions { - const val versionCode = 14 - const val versionName = "1.4.1" + const val versionCode = 15 + const val versionName = "1.5.0-alpha1" // android const val androidVersionCode = 1 From 42a1ef947860d0c6afc057280c291d605b9db6ff Mon Sep 17 00:00:00 2001 From: Philip Dukhov Date: Mon, 29 Mar 2021 14:33:30 +0700 Subject: [PATCH 03/34] baseArray replaced with atomic - fix logging from another thread on iOS; #56 --- .../github/aakira/napier/atomic/AtomicRef.kt | 3 ++ .../kotlin/com/github/aakira/napier/Napier.kt | 3 +- .../aakira/napier/atomic/AtomicMutableList.kt | 53 +++++++++++++++++++ .../github/aakira/napier/atomic/AtomicRef.kt | 5 ++ .../com/github/aakira/napier/NapierTest.kt | 3 +- .../github/aakira/napier/atomic/AtomicRef.kt | 13 +++++ .../github/aakira/napier/atomic/AtomicRef.kt | 3 ++ .../github/aakira/napier/atomic/AtomicRef.kt | 3 ++ 8 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 napier/src/androidMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt create mode 100644 napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicMutableList.kt create mode 100644 napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt create mode 100644 napier/src/iosMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt create mode 100644 napier/src/jsMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt create mode 100644 napier/src/jvmMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt diff --git a/napier/src/androidMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/androidMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt new file mode 100644 index 0000000..69a6562 --- /dev/null +++ b/napier/src/androidMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt @@ -0,0 +1,3 @@ +package com.github.aakira.napier.atomic + +internal actual class AtomicRef actual constructor(actual var value: T) \ No newline at end of file diff --git a/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt b/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt index 38d3276..07e8fe0 100644 --- a/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt +++ b/napier/src/commonMain/kotlin/com/github/aakira/napier/Napier.kt @@ -1,5 +1,6 @@ package com.github.aakira.napier +import com.github.aakira.napier.atomic.AtomicMutableList import kotlin.native.concurrent.ThreadLocal @ThreadLocal @@ -14,7 +15,7 @@ object Napier { ASSERT, } - private val baseArray = mutableListOf() + private val baseArray = AtomicMutableList() fun base(antilog: Antilog) { baseArray.add(antilog) diff --git a/napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicMutableList.kt b/napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicMutableList.kt new file mode 100644 index 0000000..1c773b5 --- /dev/null +++ b/napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicMutableList.kt @@ -0,0 +1,53 @@ +package com.github.aakira.napier.atomic + +internal class AtomicMutableList(value: List): AbstractList() { + constructor() : this(listOf()) + private val atomicReference = AtomicRef(value) + + fun add(element: T, index: Int = count()) = + modify(+1) { + add(index, element) + } + + fun remove(t: T) = + modify(-1) { + remove(t) + } + + fun clear() = + modify(-size) { + clear() + } + + fun removeAt(index: Int): T = + modify(-1) { + removeAt(index) + } + + fun set(index: Int, element: T): T = + modify(0) { + set(index, element) + } + + fun dropAll(): List { + val result = atomicReference.value + atomicReference.value = listOf() + return result + } + + override val size: Int get() = atomicReference.value.size + override fun isEmpty(): Boolean = atomicReference.value.isEmpty() + override fun contains(element: T): Boolean = atomicReference.value.contains(element) + override fun get(index: Int): T = atomicReference.value[index] + override fun indexOf(element: T): Int = atomicReference.value.indexOf(element) + override fun lastIndexOf(element: T): Int = atomicReference.value.lastIndexOf(element) + override fun iterator(): Iterator = atomicReference.value.iterator() + + private fun modify(capacityDiff: Int, block: ArrayList.() -> R): R { + val newValue = ArrayList(size + capacityDiff) + newValue.addAll(this) + val result = block(newValue) + atomicReference.value = newValue + return result + } +} \ No newline at end of file diff --git a/napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt new file mode 100644 index 0000000..9925440 --- /dev/null +++ b/napier/src/commonMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt @@ -0,0 +1,5 @@ +package com.github.aakira.napier.atomic + +internal expect class AtomicRef(value: T) { + var value: T +} \ No newline at end of file diff --git a/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt b/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt index adb8c15..f4f732b 100644 --- a/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt +++ b/napier/src/commonTest/kotlin/com/github/aakira/napier/NapierTest.kt @@ -1,5 +1,6 @@ package com.github.aakira.napier +import com.github.aakira.napier.atomic.AtomicMutableList import kotlin.test.Test import kotlin.test.assertEquals @@ -22,7 +23,7 @@ class NapierTest { @Test fun `Check output log`() { - val output = ArrayList() + val output = AtomicMutableList() Napier.base(object : Antilog() { override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { output.add(Expected(priority, tag, throwable, message)) diff --git a/napier/src/iosMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/iosMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt new file mode 100644 index 0000000..284dcad --- /dev/null +++ b/napier/src/iosMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt @@ -0,0 +1,13 @@ +package com.github.aakira.napier.atomic + +import kotlin.native.concurrent.AtomicReference +import kotlin.native.concurrent.freeze + +internal actual class AtomicRef actual constructor(value: T) { + private val atomicRef = AtomicReference(value.freeze()) + actual var value: T + get() = atomicRef.value + set(value) { + atomicRef.value = value.freeze() + } +} \ No newline at end of file diff --git a/napier/src/jsMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/jsMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt new file mode 100644 index 0000000..69a6562 --- /dev/null +++ b/napier/src/jsMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt @@ -0,0 +1,3 @@ +package com.github.aakira.napier.atomic + +internal actual class AtomicRef actual constructor(actual var value: T) \ No newline at end of file diff --git a/napier/src/jvmMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/jvmMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt new file mode 100644 index 0000000..69a6562 --- /dev/null +++ b/napier/src/jvmMain/kotlin/com/github/aakira/napier/atomic/AtomicRef.kt @@ -0,0 +1,3 @@ +package com.github.aakira.napier.atomic + +internal actual class AtomicRef actual constructor(actual var value: T) \ No newline at end of file From 17a3d4b27eb7216dfb61991ff9fb6d9977432f06 Mon Sep 17 00:00:00 2001 From: Philip Dukhov Date: Wed, 11 Aug 2021 14:31:33 +0700 Subject: [PATCH 04/34] @ThreadLocal removed to fix iOS work from coroutines --- napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt index 2d51430..97588a5 100644 --- a/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt @@ -1,9 +1,7 @@ package io.github.aakira.napier import com.github.aakira.napier.atomic.AtomicMutableList -import kotlin.native.concurrent.ThreadLocal -@ThreadLocal object Napier { enum class Level { From 32873b5e39393d79311aaa16889c8f54e7d5b49f Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 12 Aug 2021 00:27:00 +0900 Subject: [PATCH 05/34] Fix package name. --- .../kotlin/io/github/aakira/napier/atomic/AtomicRef.kt | 4 ++-- .../commonMain/kotlin/io/github/aakira/napier/Napier.kt | 9 +++++++-- .../io/github/aakira/napier/atomic/AtomicMutableList.kt | 7 ++++--- .../kotlin/io/github/aakira/napier/atomic/AtomicRef.kt | 4 ++-- .../kotlin/io/github/aakira/napier/atomic/AtomicRef.kt | 4 ++-- .../kotlin/io/github/aakira/napier/atomic/AtomicRef.kt | 4 ++-- .../kotlin/io/github/aakira/napier/atomic/AtomicRef.kt | 4 ++-- 7 files changed, 21 insertions(+), 15 deletions(-) diff --git a/napier/src/androidMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/androidMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt index 69a6562..30f7636 100644 --- a/napier/src/androidMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt +++ b/napier/src/androidMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt @@ -1,3 +1,3 @@ -package com.github.aakira.napier.atomic +package io.github.aakira.napier.atomic -internal actual class AtomicRef actual constructor(actual var value: T) \ No newline at end of file +internal actual class AtomicRef actual constructor(actual var value: T) diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt index 97588a5..29272b0 100644 --- a/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/Napier.kt @@ -1,6 +1,6 @@ package io.github.aakira.napier -import com.github.aakira.napier.atomic.AtomicMutableList +import io.github.aakira.napier.atomic.AtomicMutableList object Napier { @@ -80,7 +80,12 @@ object Napier { } } - fun log(priority: Level, tag: String? = null, throwable: Throwable? = null, message: () -> String) { + fun log( + priority: Level, + tag: String? = null, + throwable: Throwable? = null, + message: () -> String + ) { if (isEnable(priority, tag)) { rawLog(priority, tag, throwable, message()) } diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicMutableList.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicMutableList.kt index 1c773b5..d644af7 100644 --- a/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicMutableList.kt +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicMutableList.kt @@ -1,7 +1,8 @@ -package com.github.aakira.napier.atomic +package io.github.aakira.napier.atomic -internal class AtomicMutableList(value: List): AbstractList() { +internal class AtomicMutableList(value: List) : AbstractList() { constructor() : this(listOf()) + private val atomicReference = AtomicRef(value) fun add(element: T, index: Int = count()) = @@ -50,4 +51,4 @@ internal class AtomicMutableList(value: List): AbstractList() { atomicReference.value = newValue return result } -} \ No newline at end of file +} diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt index 9925440..d14e107 100644 --- a/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt @@ -1,5 +1,5 @@ -package com.github.aakira.napier.atomic +package io.github.aakira.napier.atomic internal expect class AtomicRef(value: T) { var value: T -} \ No newline at end of file +} diff --git a/napier/src/iosMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/iosMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt index 284dcad..54ff37d 100644 --- a/napier/src/iosMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt +++ b/napier/src/iosMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt @@ -1,4 +1,4 @@ -package com.github.aakira.napier.atomic +package io.github.aakira.napier.atomic import kotlin.native.concurrent.AtomicReference import kotlin.native.concurrent.freeze @@ -10,4 +10,4 @@ internal actual class AtomicRef actual constructor(value: T) { set(value) { atomicRef.value = value.freeze() } -} \ No newline at end of file +} diff --git a/napier/src/jsMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/jsMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt index 69a6562..30f7636 100644 --- a/napier/src/jsMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt +++ b/napier/src/jsMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt @@ -1,3 +1,3 @@ -package com.github.aakira.napier.atomic +package io.github.aakira.napier.atomic -internal actual class AtomicRef actual constructor(actual var value: T) \ No newline at end of file +internal actual class AtomicRef actual constructor(actual var value: T) diff --git a/napier/src/jvmMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/jvmMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt index 69a6562..30f7636 100644 --- a/napier/src/jvmMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt +++ b/napier/src/jvmMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt @@ -1,3 +1,3 @@ -package com.github.aakira.napier.atomic +package io.github.aakira.napier.atomic -internal actual class AtomicRef actual constructor(actual var value: T) \ No newline at end of file +internal actual class AtomicRef actual constructor(actual var value: T) From 8dfa73e5cf0f318881e789bfee058d789824c20f Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 12 Aug 2021 00:35:49 +0900 Subject: [PATCH 06/34] Update kotlin 1.5.21 and coroutines 1.5.1-native-mt. --- buildSrc/src/main/kotlin/dependencies/Dep.kt | 4 ++-- js/build.gradle.kts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/buildSrc/src/main/kotlin/dependencies/Dep.kt b/buildSrc/src/main/kotlin/dependencies/Dep.kt index ea00e19..413c6b7 100644 --- a/buildSrc/src/main/kotlin/dependencies/Dep.kt +++ b/buildSrc/src/main/kotlin/dependencies/Dep.kt @@ -2,7 +2,7 @@ package dependencies object Dep { - private const val kotlin = "1.5.0" + private const val kotlin = "1.5.21" object GradlePlugin { const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Dep.kotlin}" @@ -20,7 +20,7 @@ object Dep { } object Coroutines { - private const val version = "1.5.0-RC" + private const val version = "1.5.1-native-mt" const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version" } diff --git a/js/build.gradle.kts b/js/build.gradle.kts index 321b471..84559b4 100644 --- a/js/build.gradle.kts +++ b/js/build.gradle.kts @@ -14,15 +14,15 @@ dependencies { } kotlin { - target { + js { browser { // execute :js:browserRun to launch dev server runTask { devServer = KotlinWebpackConfig.DevServer( - true, false, true, true, false, - 8080, - null, - listOf("${projectDir}/src/main/resources".toString()) + open = true, + port = 8080, + proxy = null, + contentBase = mutableListOf("${projectDir}/src/main/resources") ) outputFileName = "main.js" } From 023b97437bbd137622f8f0d96742a466c0082bd6 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 12 Aug 2021 00:53:11 +0900 Subject: [PATCH 07/34] Fix test. --- .../kotlin/io/github/aakira/napier/NapierTest.kt | 9 +++++++-- .../kotlin/io/github/aakira/napier/NapierIosTest.kt | 1 - .../kotlin/io/github/aakira/napier/NapierJvmTest.kt | 12 ++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/napier/src/commonTest/kotlin/io/github/aakira/napier/NapierTest.kt b/napier/src/commonTest/kotlin/io/github/aakira/napier/NapierTest.kt index 33f8b80..118a7e3 100644 --- a/napier/src/commonTest/kotlin/io/github/aakira/napier/NapierTest.kt +++ b/napier/src/commonTest/kotlin/io/github/aakira/napier/NapierTest.kt @@ -1,6 +1,6 @@ package io.github.aakira.napier -import com.github.aakira.napier.atomic.AtomicMutableList +import io.github.aakira.napier.atomic.AtomicMutableList import kotlin.test.Test import kotlin.test.assertEquals @@ -25,7 +25,12 @@ class NapierTest { fun `Check output log`() { val output = AtomicMutableList() Napier.base(object : Antilog() { - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog( + priority: Napier.Level, + tag: String?, + throwable: Throwable?, + message: String? + ) { output.add(Expected(priority, tag, throwable, message)) } }) diff --git a/napier/src/iosTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/iosTest/kotlin/io/github/aakira/napier/NapierIosTest.kt index c96f53a..7550c8f 100644 --- a/napier/src/iosTest/kotlin/io/github/aakira/napier/NapierIosTest.kt +++ b/napier/src/iosTest/kotlin/io/github/aakira/napier/NapierIosTest.kt @@ -1,6 +1,5 @@ package io.github.aakira.napier -import io.github.aakira.napier.DebugAntilog import kotlin.test.Test import kotlin.test.assertEquals diff --git a/napier/src/jvmTest/kotlin/io/github/aakira/napier/NapierJvmTest.kt b/napier/src/jvmTest/kotlin/io/github/aakira/napier/NapierJvmTest.kt index ef96cbc..729bda8 100644 --- a/napier/src/jvmTest/kotlin/io/github/aakira/napier/NapierJvmTest.kt +++ b/napier/src/jvmTest/kotlin/io/github/aakira/napier/NapierJvmTest.kt @@ -1,7 +1,5 @@ package io.github.aakira.napier -import io.github.aakira.napier.DebugAntilog -import io.github.aakira.napier.Napier import org.junit.Test import kotlin.test.assertEquals import kotlin.test.assertNotEquals @@ -13,8 +11,14 @@ class NapierJvmTest { @Test fun `Check createStackElementTag`() { assertEquals("Hoge", debugAntilog.createStackElementTag("io.github.aakira.napier.Hoge")) - assertEquals("Hoge2", debugAntilog.createStackElementTag("AA\$io.github.aakira.napier.Hoge2")) - assertNotEquals("default", debugAntilog.createStackElementTag("io.github.aakira.napier.Hoge3\$default")) + assertEquals( + "Hoge2", + debugAntilog.createStackElementTag("AA\$io.github.aakira.napier.Hoge2") + ) + assertNotEquals( + "default", + debugAntilog.createStackElementTag("io.github.aakira.napier.Hoge3\$default") + ) } @Test From 30f3e48c22452d04c3f0cc980a628d185cb555c4 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 12 Aug 2021 00:57:59 +0900 Subject: [PATCH 08/34] Modify coroutines proxy using background thread. --- .../aakira/napier/mppsample/Coroutine.kt | 25 +++++++++---------- .../aakira/napier/mppsample/CoroutineProxy.kt | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt b/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt index 60dab59..ef16626 100644 --- a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt +++ b/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt @@ -1,22 +1,21 @@ package io.github.aakira.napier.mppsample -import kotlinx.coroutines.* -import platform.darwin.dispatch_async -import platform.darwin.dispatch_get_main_queue +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job import kotlin.coroutines.CoroutineContext -internal class NativeScope : CoroutineScope { - private val context = MainDispatcher() +internal val mainScope = SharedScope(Dispatchers.Main) + +internal val backgroundScope = SharedScope(Dispatchers.Default) + +internal class SharedScope(private val context: CoroutineContext) : CoroutineScope { private val job = Job() - private val exceptionHandler = CoroutineExceptionHandler { _, _ -> } + private val exceptionHandler = CoroutineExceptionHandler { _, throwable -> + println("[Coroutine Exception] $throwable") + } override val coroutineContext: CoroutineContext get() = context + job + exceptionHandler } - -private class MainDispatcher : CoroutineDispatcher() { - - override fun dispatch(context: CoroutineContext, block: Runnable) { - dispatch_async(dispatch_get_main_queue()) { block.run() } - } -} diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt b/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt index 4575d69..b4dc377 100644 --- a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt +++ b/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt @@ -3,7 +3,7 @@ package io.github.aakira.napier.mppsample import kotlinx.coroutines.launch fun Sample.suspendHelloKt() { - NativeScope().launch { + backgroundScope.launch { suspendHello() } } From a932b6e5b16dd6e8af001d39dbd49f3f6d28096c Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 12 Aug 2021 01:07:22 +0900 Subject: [PATCH 09/34] Update README. --- README.md | 32 ++++++++++++++++++- .../io/github/aakira/napier/Coroutine.kt | 22 ------------- 2 files changed, 31 insertions(+), 23 deletions(-) delete mode 100644 napier/src/iosTest/kotlin/io/github/aakira/napier/Coroutine.kt diff --git a/README.md b/README.md index 736aba5..ef2efe2 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ You can download this library from MavenCentral or jCenter repository. * Maven central -You can download this from `1.4.1`. +You can download this from `2.0.0`. Package name is `io.github.aakira` ```groovy @@ -198,6 +198,36 @@ Napier.takeLogarithm() | ERROR | Napier.e() | | ASSERT | Napier.wtf()| +## Run background thread + +You can use this library on the background thread on iOS using [Kotlin.coroutines](https://github.com/Kotlin/kotlinx.coroutines) as native-mt. + +* Define scope + +```kotlin +internal val mainScope = SharedScope(Dispatchers.Main) + +internal val backgroundScope = SharedScope(Dispatchers.Default) + +internal class SharedScope(private val context: CoroutineContext) : CoroutineScope { + private val job = Job() + private val exceptionHandler = CoroutineExceptionHandler { _, throwable -> + println("[Coroutine Exception] $throwable") + } + + override val coroutineContext: CoroutineContext + get() = context + job + exceptionHandler +} +``` + +* Usage + +```kotlin +backgroundScope.launch { + suspendFunction() +} +``` + ## Advancement You can inject custom `Antilog`. diff --git a/napier/src/iosTest/kotlin/io/github/aakira/napier/Coroutine.kt b/napier/src/iosTest/kotlin/io/github/aakira/napier/Coroutine.kt deleted file mode 100644 index 75df6d3..0000000 --- a/napier/src/iosTest/kotlin/io/github/aakira/napier/Coroutine.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.aakira.napier - -import kotlinx.coroutines.* -import platform.darwin.dispatch_async -import platform.darwin.dispatch_get_main_queue -import kotlin.coroutines.CoroutineContext - -internal class NativeScope : CoroutineScope { - private val context = MainDispatcher() - private val job = Job() - private val exceptionHandler = CoroutineExceptionHandler { _, _ -> } - - override val coroutineContext: CoroutineContext - get() = context + job + exceptionHandler -} - -private class MainDispatcher : CoroutineDispatcher() { - - override fun dispatch(context: CoroutineContext, block: Runnable) { - dispatch_async(dispatch_get_main_queue()) { block.run() } - } -} From c8dd489b355f6318282683cce61ee540a8da9aa1 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 12 Aug 2021 01:13:51 +0900 Subject: [PATCH 10/34] Bump up the version code and name. --- buildSrc/src/main/kotlin/dependencies/Versions.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/dependencies/Versions.kt b/buildSrc/src/main/kotlin/dependencies/Versions.kt index 8706853..aebe650 100644 --- a/buildSrc/src/main/kotlin/dependencies/Versions.kt +++ b/buildSrc/src/main/kotlin/dependencies/Versions.kt @@ -1,8 +1,8 @@ package dependencies object Versions { - const val versionCode = 15 - const val versionName = "1.5.0" + const val versionCode = 16 + const val versionName = "2.0.0-alpha1" // android const val androidVersionCode = 1 @@ -10,6 +10,5 @@ object Versions { const val compileSdkVersion = 30 const val buildToolsVersion = "29.0.3" const val minSdkVersion = 16 - const val instantAppMinSdkVersion = 23 const val targetSdkVersion = 28 } From 04237c109aff2adc66481166115db2af38644f59 Mon Sep 17 00:00:00 2001 From: AAkira Date: Sun, 15 Aug 2021 14:43:04 +0900 Subject: [PATCH 11/34] Add macOS project. --- macOS/Podfile | 10 + macOS/Podfile.lock | 16 + .../Local Podspecs/mpp_sample.podspec.json | 39 + macOS/Pods/Manifest.lock | 16 + macOS/Pods/Pods.xcodeproj/project.pbxproj | 548 +++++++++++++ .../xcschemes/Pods-macOS (macOS).xcscheme | 58 ++ .../xcschemes/mpp_sample.xcscheme | 60 ++ .../xcschemes/xcschememanagement.plist | 25 + .../Pods-macOS (macOS)-Info.plist | 26 + ...ds-macOS (macOS)-acknowledgements.markdown | 3 + .../Pods-macOS (macOS)-acknowledgements.plist | 29 + .../Pods-macOS (macOS)-dummy.m | 5 + .../Pods-macOS (macOS)-umbrella.h | 16 + .../Pods-macOS (macOS).debug.xcconfig | 10 + .../Pods-macOS (macOS).modulemap | 6 + .../Pods-macOS (macOS).release.xcconfig | 10 + .../mpp_sample/mpp_sample.debug.xcconfig | 19 + .../mpp_sample/mpp_sample.release.xcconfig | 19 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 148 ++++ macOS/Shared/Assets.xcassets/Contents.json | 6 + macOS/Shared/ContentView.swift | 14 + macOS/Shared/macOSApp.swift | 47 ++ macOS/Tests iOS/Info.plist | 22 + macOS/Tests iOS/Tests_iOS.swift | 35 + macOS/Tests macOS/Info.plist | 22 + macOS/Tests macOS/Tests_macOS.swift | 35 + macOS/iOS/Info.plist | 50 ++ macOS/macOS.xcodeproj/project.pbxproj | 745 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 19511 bytes .../UserInterfaceState.xcuserstate | Bin 0 -> 29559 bytes .../xcschemes/xcschememanagement.plist | 19 + .../xcschemes/xcschememanagement.plist | 19 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 43671 bytes macOS/macOS/Info.plist | 26 + macOS/macOS/macOS.entitlements | 10 + napier/build.gradle.kts | 302 ++++++- .../io/github/aakira/napier/DebugAntilog.kt | 68 ++ .../github/aakira/napier/atomic/AtomicRef.kt | 13 + .../io/github/aakira/napier/NapierIosTest.kt | 27 + .../github/aakira/napier/TestRunBlocking.kt | 7 + 45 files changed, 2552 insertions(+), 22 deletions(-) create mode 100644 macOS/Podfile create mode 100644 macOS/Podfile.lock create mode 100644 macOS/Pods/Local Podspecs/mpp_sample.podspec.json create mode 100644 macOS/Pods/Manifest.lock create mode 100644 macOS/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-macOS (macOS).xcscheme create mode 100644 macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme create mode 100644 macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-Info.plist create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.markdown create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.plist create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-dummy.m create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-umbrella.h create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).debug.xcconfig create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).modulemap create mode 100644 macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).release.xcconfig create mode 100644 macOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig create mode 100644 macOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig create mode 100644 macOS/Shared/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 macOS/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macOS/Shared/Assets.xcassets/Contents.json create mode 100644 macOS/Shared/ContentView.swift create mode 100644 macOS/Shared/macOSApp.swift create mode 100644 macOS/Tests iOS/Info.plist create mode 100644 macOS/Tests iOS/Tests_iOS.swift create mode 100644 macOS/Tests macOS/Info.plist create mode 100644 macOS/Tests macOS/Tests_macOS.swift create mode 100644 macOS/iOS/Info.plist create mode 100644 macOS/macOS.xcodeproj/project.pbxproj create mode 100644 macOS/macOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 macOS/macOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macOS/macOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 macOS/macOS.xcodeproj/project.xcworkspace/xcuserdata/akira.aratani.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 macOS/macOS.xcworkspace/contents.xcworkspacedata create mode 100644 macOS/macOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 macOS/macOS/Info.plist create mode 100644 macOS/macOS/macOS.entitlements create mode 100644 napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt create mode 100644 napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt create mode 100644 napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt create mode 100644 napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt diff --git a/macOS/Podfile b/macOS/Podfile new file mode 100644 index 0000000..b982458 --- /dev/null +++ b/macOS/Podfile @@ -0,0 +1,10 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'macOS (macOS)' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for macOS (macOS) + pod 'mpp_sample', :path => '../mpp-sample' +end diff --git a/macOS/Podfile.lock b/macOS/Podfile.lock new file mode 100644 index 0000000..5862c4c --- /dev/null +++ b/macOS/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - mpp_sample (1.0.0) + +DEPENDENCIES: + - mpp_sample (from `../mpp-sample`) + +EXTERNAL SOURCES: + mpp_sample: + :path: "../mpp-sample" + +SPEC CHECKSUMS: + mpp_sample: 07fdbc60934b60a9bbfb833df6298899fe345026 + +PODFILE CHECKSUM: bc4ce6f8ddff432aa3bca804121efe1d46ba7a07 + +COCOAPODS: 1.10.1 diff --git a/macOS/Pods/Local Podspecs/mpp_sample.podspec.json b/macOS/Pods/Local Podspecs/mpp_sample.podspec.json new file mode 100644 index 0000000..eb7b285 --- /dev/null +++ b/macOS/Pods/Local Podspecs/mpp_sample.podspec.json @@ -0,0 +1,39 @@ +{ + "name": "mpp_sample", + "version": "1.0.0", + "homepage": "https://github.com/AAkira/Napier", + "source": { + "git": "Not Published", + "tag": "Cocoapods/mpp_sample/1.0.0" + }, + "authors": "", + "license": "", + "summary": "CocoaPods library", + "static_framework": true, + "vendored_frameworks": "build/cocoapods/framework/mpp_sample.framework", + "libraries": "c++", + "module_name": "mpp_sample_umbrella", + "pod_target_xcconfig": { + "KOTLIN_TARGET[sdk=iphonesimulator*]": "ios_x64", + "KOTLIN_TARGET[sdk=iphoneos*]": "ios_arm", + "KOTLIN_TARGET[sdk=watchsimulator*]": "watchos_x64", + "KOTLIN_TARGET[sdk=watchos*]": "watchos_arm", + "KOTLIN_TARGET[sdk=appletvsimulator*]": "tvos_x64", + "KOTLIN_TARGET[sdk=appletvos*]": "tvos_arm64", + "KOTLIN_TARGET[sdk=macosx*]": "macos_x64" + }, + "script_phases": [ + { + "name": "Build mpp_sample", + "execution_position": "before_compile", + "shell_path": "/bin/sh", + "script": " set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" :mpp-sample:syncFramework -Pkotlin.native.cocoapods.target=$KOTLIN_TARGET -Pkotlin.native.cocoapods.configuration=$CONFIGURATION -Pkotlin.native.cocoapods.cflags=\"$OTHER_CFLAGS\" -Pkotlin.native.cocoapods.paths.headers=\"$HEADER_SEARCH_PATHS\" -Pkotlin.native.cocoapods.paths.frameworks=\"$FRAMEWORK_SEARCH_PATHS\"\n" + } + ], + "platforms": { + "osx": null, + "ios": null, + "tvos": null, + "watchos": null + } +} diff --git a/macOS/Pods/Manifest.lock b/macOS/Pods/Manifest.lock new file mode 100644 index 0000000..5862c4c --- /dev/null +++ b/macOS/Pods/Manifest.lock @@ -0,0 +1,16 @@ +PODS: + - mpp_sample (1.0.0) + +DEPENDENCIES: + - mpp_sample (from `../mpp-sample`) + +EXTERNAL SOURCES: + mpp_sample: + :path: "../mpp-sample" + +SPEC CHECKSUMS: + mpp_sample: 07fdbc60934b60a9bbfb833df6298899fe345026 + +PODFILE CHECKSUM: bc4ce6f8ddff432aa3bca804121efe1d46ba7a07 + +COCOAPODS: 1.10.1 diff --git a/macOS/Pods/Pods.xcodeproj/project.pbxproj b/macOS/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..67475ad --- /dev/null +++ b/macOS/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,548 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXAggregateTarget section */ + 2BDBC3602D396D415E60A5F264B74513 /* mpp_sample */ = { + isa = PBXAggregateTarget; + buildConfigurationList = C8461E57243705CFA5C9C5247BD5AB9D /* Build configuration list for PBXAggregateTarget "mpp_sample" */; + buildPhases = ( + 3FC3EA628192C67993A01162848AFF70 /* [CP-User] Build mpp_sample */, + ); + dependencies = ( + ); + name = mpp_sample; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 3627E883B85E79C1051F3585D56386EB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1430F003D39D9906881A6AC724B7931 /* Cocoa.framework */; }; + F222339A0A70BC6197C3F64CF83B1104 /* Pods-macOS (macOS)-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D2546A927EC2426BBAADC138EE9F2786 /* Pods-macOS (macOS)-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F921AC5E4352F41F47031C9E88C1CAD2 /* Pods-macOS (macOS)-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 898FF93EA83A5D2E1E9BB3B228044FAB /* Pods-macOS (macOS)-dummy.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + FFF457A0E4441AA6B566251DBEB23C5F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2BDBC3602D396D415E60A5F264B74513; + remoteInfo = mpp_sample; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 06A8BDAEE8559382B8E8B267E5CA8509 /* Pods-macOS (macOS)-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-macOS (macOS)-acknowledgements.markdown"; sourceTree = ""; }; + 0A7FEDB5ED839ED9AFEEA1848DDD6107 /* Pods-macOS (macOS)-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-macOS (macOS)-acknowledgements.plist"; sourceTree = ""; }; + 4FC28BB28AD8B5DAD6EB4312C16283EE /* mpp_sample.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = mpp_sample.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 65A6A0D337C93365911A50A659878EF3 /* Pods-macOS (macOS).release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-macOS (macOS).release.xcconfig"; sourceTree = ""; }; + 69019109C812397440EEF62AE096FBB1 /* mpp_sample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = mpp_sample.debug.xcconfig; sourceTree = ""; }; + 6997DCEB911AF65BF7ED87E0B241F592 /* Pods_macOS__macOS_.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_macOS__macOS_.framework; path = "Pods-macOS (macOS).framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7B155E60863ED57DBA5B6D29A5E56DAE /* mpp_sample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = mpp_sample.release.xcconfig; sourceTree = ""; }; + 898FF93EA83A5D2E1E9BB3B228044FAB /* Pods-macOS (macOS)-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-macOS (macOS)-dummy.m"; sourceTree = ""; }; + 9BB2034F40CC2A4DEE79B6350408C083 /* Pods-macOS (macOS)-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-macOS (macOS)-Info.plist"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + C1430F003D39D9906881A6AC724B7931 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; + D2546A927EC2426BBAADC138EE9F2786 /* Pods-macOS (macOS)-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-macOS (macOS)-umbrella.h"; sourceTree = ""; }; + E5F57260DD0E5D0C781B3EB300D63186 /* mpp_sample.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpp_sample.framework; path = build/cocoapods/framework/mpp_sample.framework; sourceTree = ""; }; + E604699A5F30EC86AB9A2EFFEB5E8474 /* Pods-macOS (macOS).debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-macOS (macOS).debug.xcconfig"; sourceTree = ""; }; + FF4740D62809262CA6FE62B4F31F9143 /* Pods-macOS (macOS).modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-macOS (macOS).modulemap"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + AF2F9C056CA0481F6CF2DC32737773A2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3627E883B85E79C1051F3585D56386EB /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 027117B9890F34BDECAEEA1D11ED4FCE /* Pod */ = { + isa = PBXGroup; + children = ( + 4FC28BB28AD8B5DAD6EB4312C16283EE /* mpp_sample.podspec */, + ); + name = Pod; + sourceTree = ""; + }; + 61BCC45D2B1395AFE99A298C9CB3809D /* Products */ = { + isa = PBXGroup; + children = ( + 6997DCEB911AF65BF7ED87E0B241F592 /* Pods_macOS__macOS_.framework */, + ); + name = Products; + sourceTree = ""; + }; + 8EC019D30B23311CA85531BB8E8907EB /* Frameworks */ = { + isa = PBXGroup; + children = ( + E5F57260DD0E5D0C781B3EB300D63186 /* mpp_sample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + AF199AEE59247EBAA5D92E2E2B31877A /* Development Pods */ = { + isa = PBXGroup; + children = ( + BBAD2EA0ADD04D47C2ACC625CD4A27CD /* mpp_sample */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + BBAD2EA0ADD04D47C2ACC625CD4A27CD /* mpp_sample */ = { + isa = PBXGroup; + children = ( + 8EC019D30B23311CA85531BB8E8907EB /* Frameworks */, + 027117B9890F34BDECAEEA1D11ED4FCE /* Pod */, + E2A7085C6E4AB8BAB26921F8A526EE2E /* Support Files */, + ); + name = mpp_sample; + path = "../../mpp-sample"; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + AF199AEE59247EBAA5D92E2E2B31877A /* Development Pods */, + E0A1E60606E0BF6E2E10F1F01350DFE8 /* Frameworks */, + 61BCC45D2B1395AFE99A298C9CB3809D /* Products */, + F50475D0FC2C42EDA26D88AC4E530E9D /* Targets Support Files */, + ); + sourceTree = ""; + }; + D1197DD0B194EA0887C93DC310FFE038 /* Pods-macOS (macOS) */ = { + isa = PBXGroup; + children = ( + FF4740D62809262CA6FE62B4F31F9143 /* Pods-macOS (macOS).modulemap */, + 06A8BDAEE8559382B8E8B267E5CA8509 /* Pods-macOS (macOS)-acknowledgements.markdown */, + 0A7FEDB5ED839ED9AFEEA1848DDD6107 /* Pods-macOS (macOS)-acknowledgements.plist */, + 898FF93EA83A5D2E1E9BB3B228044FAB /* Pods-macOS (macOS)-dummy.m */, + 9BB2034F40CC2A4DEE79B6350408C083 /* Pods-macOS (macOS)-Info.plist */, + D2546A927EC2426BBAADC138EE9F2786 /* Pods-macOS (macOS)-umbrella.h */, + E604699A5F30EC86AB9A2EFFEB5E8474 /* Pods-macOS (macOS).debug.xcconfig */, + 65A6A0D337C93365911A50A659878EF3 /* Pods-macOS (macOS).release.xcconfig */, + ); + name = "Pods-macOS (macOS)"; + path = "Target Support Files/Pods-macOS (macOS)"; + sourceTree = ""; + }; + E0A1E60606E0BF6E2E10F1F01350DFE8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + E2A8756CA1FF5258A0344D53C5C60EC1 /* OS X */, + ); + name = Frameworks; + sourceTree = ""; + }; + E2A7085C6E4AB8BAB26921F8A526EE2E /* Support Files */ = { + isa = PBXGroup; + children = ( + 69019109C812397440EEF62AE096FBB1 /* mpp_sample.debug.xcconfig */, + 7B155E60863ED57DBA5B6D29A5E56DAE /* mpp_sample.release.xcconfig */, + ); + name = "Support Files"; + path = "../macOS/Pods/Target Support Files/mpp_sample"; + sourceTree = ""; + }; + E2A8756CA1FF5258A0344D53C5C60EC1 /* OS X */ = { + isa = PBXGroup; + children = ( + C1430F003D39D9906881A6AC724B7931 /* Cocoa.framework */, + ); + name = "OS X"; + sourceTree = ""; + }; + F50475D0FC2C42EDA26D88AC4E530E9D /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + D1197DD0B194EA0887C93DC310FFE038 /* Pods-macOS (macOS) */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 7E37AC9282AABC064198AABBE3C2ABE3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F222339A0A70BC6197C3F64CF83B1104 /* Pods-macOS (macOS)-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 7DFC271DD133C0C8A6E205D0E2537B50 /* Pods-macOS (macOS) */ = { + isa = PBXNativeTarget; + buildConfigurationList = F60FA366E06DCEB34C9F41A4DE0D0624 /* Build configuration list for PBXNativeTarget "Pods-macOS (macOS)" */; + buildPhases = ( + 7E37AC9282AABC064198AABBE3C2ABE3 /* Headers */, + 5B3C2CEBF271B59835D1A688721E288A /* Sources */, + AF2F9C056CA0481F6CF2DC32737773A2 /* Frameworks */, + 10D163C434823AC5F8E0BA7B351052AF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3FB186592083F42CBB6B3CD5A3CED1C3 /* PBXTargetDependency */, + ); + name = "Pods-macOS (macOS)"; + productName = "Pods-macOS (macOS)"; + productReference = 6997DCEB911AF65BF7ED87E0B241F592 /* Pods_macOS__macOS_.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 61BCC45D2B1395AFE99A298C9CB3809D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2BDBC3602D396D415E60A5F264B74513 /* mpp_sample */, + 7DFC271DD133C0C8A6E205D0E2537B50 /* Pods-macOS (macOS) */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 10D163C434823AC5F8E0BA7B351052AF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3FC3EA628192C67993A01162848AFF70 /* [CP-User] Build mpp_sample */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] Build mpp_sample"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = " set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" :mpp-sample:syncFramework -Pkotlin.native.cocoapods.target=$KOTLIN_TARGET -Pkotlin.native.cocoapods.configuration=$CONFIGURATION -Pkotlin.native.cocoapods.cflags=\"$OTHER_CFLAGS\" -Pkotlin.native.cocoapods.paths.headers=\"$HEADER_SEARCH_PATHS\" -Pkotlin.native.cocoapods.paths.frameworks=\"$FRAMEWORK_SEARCH_PATHS\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5B3C2CEBF271B59835D1A688721E288A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F921AC5E4352F41F47031C9E88C1CAD2 /* Pods-macOS (macOS)-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3FB186592083F42CBB6B3CD5A3CED1C3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = mpp_sample; + target = 2BDBC3602D396D415E60A5F264B74513 /* mpp_sample */; + targetProxy = FFF457A0E4441AA6B566251DBEB23C5F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2200FEA27DC17D6F1BF546AF0FEB665B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 65A6A0D337C93365911A50A659878EF3 /* Pods-macOS (macOS).release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MODULEMAP_FILE = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 4C88A0984C4E8023CFFAC5817D5B0020 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7B155E60863ED57DBA5B6D29A5E56DAE /* mpp_sample.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_OBJC_WEAK = NO; + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.6; + SDKROOT = macosx; + }; + name = Release; + }; + 82E73717A2562031D5E1F4D85DD1A982 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=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; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + D39E634FC2CFF97419EB3682DD2807FA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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; + 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 = ( + "POD_CONFIGURATION_DEBUG=1", + "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; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + E9F53836D077948FE63C571CB8A61F86 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 69019109C812397440EEF62AE096FBB1 /* mpp_sample.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_OBJC_WEAK = NO; + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.6; + SDKROOT = macosx; + }; + name = Debug; + }; + FCBFE92B3830D47122A8E6565476D045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E604699A5F30EC86AB9A2EFFEB5E8474 /* Pods-macOS (macOS).debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MODULEMAP_FILE = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D39E634FC2CFF97419EB3682DD2807FA /* Debug */, + 82E73717A2562031D5E1F4D85DD1A982 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C8461E57243705CFA5C9C5247BD5AB9D /* Build configuration list for PBXAggregateTarget "mpp_sample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E9F53836D077948FE63C571CB8A61F86 /* Debug */, + 4C88A0984C4E8023CFFAC5817D5B0020 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F60FA366E06DCEB34C9F41A4DE0D0624 /* Build configuration list for PBXNativeTarget "Pods-macOS (macOS)" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FCBFE92B3830D47122A8E6565476D045 /* Debug */, + 2200FEA27DC17D6F1BF546AF0FEB665B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-macOS (macOS).xcscheme b/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-macOS (macOS).xcscheme new file mode 100644 index 0000000..78122d8 --- /dev/null +++ b/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-macOS (macOS).xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme b/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme new file mode 100644 index 0000000..24f4e6e --- /dev/null +++ b/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..f6a1375 --- /dev/null +++ b/macOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,25 @@ + + + + + SchemeUserState + + Pods-macOS (macOS).xcscheme + + isShown + + orderHint + 1 + + mpp_sample.xcscheme + + isShown + + orderHint + 0 + + + SuppressBuildableAutocreation + + + diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-Info.plist b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.markdown b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.plist b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-dummy.m b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-dummy.m new file mode 100644 index 0000000..9a2347c --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_macOS__macOS_ : NSObject +@end +@implementation PodsDummy_Pods_macOS__macOS_ +@end diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-umbrella.h b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-umbrella.h new file mode 100644 index 0000000..e748dea --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS)-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_macOS__macOS_VersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_macOS__macOS_VersionString[]; + diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).debug.xcconfig b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).debug.xcconfig new file mode 100644 index 0000000..38775fb --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).debug.xcconfig @@ -0,0 +1,10 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -framework "mpp_sample" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).modulemap b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).modulemap new file mode 100644 index 0000000..91e492c --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).modulemap @@ -0,0 +1,6 @@ +framework module Pods_macOS__macOS_ { + umbrella header "Pods-macOS (macOS)-umbrella.h" + + export * + module * { export * } +} diff --git a/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).release.xcconfig b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).release.xcconfig new file mode 100644 index 0000000..38775fb --- /dev/null +++ b/macOS/Pods/Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).release.xcconfig @@ -0,0 +1,10 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -framework "mpp_sample" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/macOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig b/macOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig new file mode 100644 index 0000000..e70f820 --- /dev/null +++ b/macOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig @@ -0,0 +1,19 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/mpp_sample +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +KOTLIN_TARGET[sdk=appletvos*] = tvos_arm64 +KOTLIN_TARGET[sdk=appletvsimulator*] = tvos_x64 +KOTLIN_TARGET[sdk=iphoneos*] = ios_arm +KOTLIN_TARGET[sdk=iphonesimulator*] = ios_x64 +KOTLIN_TARGET[sdk=macosx*] = macos_x64 +KOTLIN_TARGET[sdk=watchos*] = watchos_arm +KOTLIN_TARGET[sdk=watchsimulator*] = watchos_x64 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../mpp-sample +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/macOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig b/macOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig new file mode 100644 index 0000000..e70f820 --- /dev/null +++ b/macOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig @@ -0,0 +1,19 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/mpp_sample +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +KOTLIN_TARGET[sdk=appletvos*] = tvos_arm64 +KOTLIN_TARGET[sdk=appletvsimulator*] = tvos_x64 +KOTLIN_TARGET[sdk=iphoneos*] = ios_arm +KOTLIN_TARGET[sdk=iphonesimulator*] = ios_x64 +KOTLIN_TARGET[sdk=macosx*] = macos_x64 +KOTLIN_TARGET[sdk=watchos*] = watchos_arm +KOTLIN_TARGET[sdk=watchsimulator*] = watchos_x64 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../mpp-sample +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/macOS/Shared/Assets.xcassets/AccentColor.colorset/Contents.json b/macOS/Shared/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/macOS/Shared/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macOS/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json b/macOS/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..c136eaf --- /dev/null +++ b/macOS/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,148 @@ +{ + "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" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macOS/Shared/Assets.xcassets/Contents.json b/macOS/Shared/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/macOS/Shared/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macOS/Shared/ContentView.swift b/macOS/Shared/ContentView.swift new file mode 100644 index 0000000..0ec9f8a --- /dev/null +++ b/macOS/Shared/ContentView.swift @@ -0,0 +1,14 @@ +import SwiftUI + +struct ContentView: View { + var body: some View { + Text("Hello, world!") + .padding() + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/macOS/Shared/macOSApp.swift b/macOS/Shared/macOSApp.swift new file mode 100644 index 0000000..b9cc95e --- /dev/null +++ b/macOS/Shared/macOSApp.swift @@ -0,0 +1,47 @@ +import SwiftUI +import Cocoa +import mpp_sample + +@main +struct macOSApp: App { + @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate + + var body: some Scene { + WindowGroup { + ContentView() + } + } +} + +class AppDelegate: NSObject, NSApplicationDelegate { + func applicationDidFinishLaunching(_ notification: Notification) { + #if DEBUG + // Debug build + + // init napier + NapierProxyKt.debugBuild() + + #else + // Others(Release build) + + // init firebase crashlytics + FirebaseApp.configure() + + // init napier + NapierProxyKt.releaseBuild(antilog: CrashlyticsAntilog( + crashlyticsAddLog: { priority, tag, message in + Crashlytics.crashlytics().log("\(String(describing: tag)): \(String(describing: message))") + }, + crashlyticsSendLog: { throwable in + Crashlytics.crashlytics().record(error: throwable) + })) + #endif + + let sample = Sample() + sample.hello() + + sample.suspendHelloKt() + + sample.handleError() + } +} diff --git a/macOS/Tests iOS/Info.plist b/macOS/Tests iOS/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/macOS/Tests iOS/Info.plist @@ -0,0 +1,22 @@ + + + + + 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 + + diff --git a/macOS/Tests iOS/Tests_iOS.swift b/macOS/Tests iOS/Tests_iOS.swift new file mode 100644 index 0000000..f9b403c --- /dev/null +++ b/macOS/Tests iOS/Tests_iOS.swift @@ -0,0 +1,35 @@ +import XCTest + +class Tests_iOS: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/macOS/Tests macOS/Info.plist b/macOS/Tests macOS/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/macOS/Tests macOS/Info.plist @@ -0,0 +1,22 @@ + + + + + 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 + + diff --git a/macOS/Tests macOS/Tests_macOS.swift b/macOS/Tests macOS/Tests_macOS.swift new file mode 100644 index 0000000..97c5ff2 --- /dev/null +++ b/macOS/Tests macOS/Tests_macOS.swift @@ -0,0 +1,35 @@ +import XCTest + +class Tests_macOS: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/macOS/iOS/Info.plist b/macOS/iOS/Info.plist new file mode 100644 index 0000000..efc211a --- /dev/null +++ b/macOS/iOS/Info.plist @@ -0,0 +1,50 @@ + + + + + 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 + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/macOS/macOS.xcodeproj/project.pbxproj b/macOS/macOS.xcodeproj/project.pbxproj new file mode 100644 index 0000000..134be2c --- /dev/null +++ b/macOS/macOS.xcodeproj/project.pbxproj @@ -0,0 +1,745 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 3B773B1126C8DF80008123DC /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773B1026C8DF80008123DC /* Tests_iOS.swift */; }; + 3B773B1C26C8DF80008123DC /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773B1B26C8DF80008123DC /* Tests_macOS.swift */; }; + 3B773B1E26C8DF80008123DC /* macOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF526C8DF7E008123DC /* macOSApp.swift */; }; + 3B773B1F26C8DF80008123DC /* macOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF526C8DF7E008123DC /* macOSApp.swift */; }; + 3B773B2026C8DF80008123DC /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF626C8DF7E008123DC /* ContentView.swift */; }; + 3B773B2126C8DF80008123DC /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF626C8DF7E008123DC /* ContentView.swift */; }; + 3B773B2226C8DF80008123DC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B773AF726C8DF7F008123DC /* Assets.xcassets */; }; + 3B773B2326C8DF80008123DC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B773AF726C8DF7F008123DC /* Assets.xcassets */; }; + A8D77B5FB4CC2796C205CCE5 /* Pods_macOS__macOS_.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F33B47CA8A29ADCBD3710DDB /* Pods_macOS__macOS_.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3B773B0D26C8DF80008123DC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3B773AF026C8DF7E008123DC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3B773AFB26C8DF7F008123DC; + remoteInfo = "macOS (iOS)"; + }; + 3B773B1826C8DF80008123DC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3B773AF026C8DF7E008123DC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3B773B0326C8DF7F008123DC; + remoteInfo = "macOS (macOS)"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 05AAF53D4B4534B405B50C00 /* Pods-macOS (macOS).debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS (macOS).debug.xcconfig"; path = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).debug.xcconfig"; sourceTree = ""; }; + 3B773AF526C8DF7E008123DC /* macOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = macOSApp.swift; sourceTree = ""; }; + 3B773AF626C8DF7E008123DC /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 3B773AF726C8DF7F008123DC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3B773AFC26C8DF7F008123DC /* macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = macOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B773AFF26C8DF7F008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3B773B0426C8DF7F008123DC /* macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = macOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B773B0626C8DF7F008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3B773B0726C8DF80008123DC /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = ""; }; + 3B773B0C26C8DF80008123DC /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B773B1026C8DF80008123DC /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = ""; }; + 3B773B1226C8DF80008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3B773B1726C8DF80008123DC /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B773B1B26C8DF80008123DC /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = ""; }; + 3B773B1D26C8DF80008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D10652CC9753C8B4B72C2429 /* Pods-macOS (macOS).release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS (macOS).release.xcconfig"; path = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).release.xcconfig"; sourceTree = ""; }; + F33B47CA8A29ADCBD3710DDB /* Pods_macOS__macOS_.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macOS__macOS_.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3B773AF926C8DF7F008123DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B0126C8DF7F008123DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A8D77B5FB4CC2796C205CCE5 /* Pods_macOS__macOS_.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B0926C8DF80008123DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B1426C8DF80008123DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 36D1861B74BDC2E58FF7D139 /* Pods */ = { + isa = PBXGroup; + children = ( + 05AAF53D4B4534B405B50C00 /* Pods-macOS (macOS).debug.xcconfig */, + D10652CC9753C8B4B72C2429 /* Pods-macOS (macOS).release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 3B773AEF26C8DF7E008123DC = { + isa = PBXGroup; + children = ( + 3B773AF426C8DF7E008123DC /* Shared */, + 3B773AFE26C8DF7F008123DC /* iOS */, + 3B773B0526C8DF7F008123DC /* macOS */, + 3B773B0F26C8DF80008123DC /* Tests iOS */, + 3B773B1A26C8DF80008123DC /* Tests macOS */, + 3B773AFD26C8DF7F008123DC /* Products */, + 36D1861B74BDC2E58FF7D139 /* Pods */, + ECD003D332C404557D385849 /* Frameworks */, + ); + sourceTree = ""; + }; + 3B773AF426C8DF7E008123DC /* Shared */ = { + isa = PBXGroup; + children = ( + 3B773AF526C8DF7E008123DC /* macOSApp.swift */, + 3B773AF626C8DF7E008123DC /* ContentView.swift */, + 3B773AF726C8DF7F008123DC /* Assets.xcassets */, + ); + path = Shared; + sourceTree = ""; + }; + 3B773AFD26C8DF7F008123DC /* Products */ = { + isa = PBXGroup; + children = ( + 3B773AFC26C8DF7F008123DC /* macOS.app */, + 3B773B0426C8DF7F008123DC /* macOS.app */, + 3B773B0C26C8DF80008123DC /* Tests iOS.xctest */, + 3B773B1726C8DF80008123DC /* Tests macOS.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 3B773AFE26C8DF7F008123DC /* iOS */ = { + isa = PBXGroup; + children = ( + 3B773AFF26C8DF7F008123DC /* Info.plist */, + ); + path = iOS; + sourceTree = ""; + }; + 3B773B0526C8DF7F008123DC /* macOS */ = { + isa = PBXGroup; + children = ( + 3B773B0626C8DF7F008123DC /* Info.plist */, + 3B773B0726C8DF80008123DC /* macOS.entitlements */, + ); + path = macOS; + sourceTree = ""; + }; + 3B773B0F26C8DF80008123DC /* Tests iOS */ = { + isa = PBXGroup; + children = ( + 3B773B1026C8DF80008123DC /* Tests_iOS.swift */, + 3B773B1226C8DF80008123DC /* Info.plist */, + ); + path = "Tests iOS"; + sourceTree = ""; + }; + 3B773B1A26C8DF80008123DC /* Tests macOS */ = { + isa = PBXGroup; + children = ( + 3B773B1B26C8DF80008123DC /* Tests_macOS.swift */, + 3B773B1D26C8DF80008123DC /* Info.plist */, + ); + path = "Tests macOS"; + sourceTree = ""; + }; + ECD003D332C404557D385849 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F33B47CA8A29ADCBD3710DDB /* Pods_macOS__macOS_.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3B773AFB26C8DF7F008123DC /* macOS (iOS) */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B773B2626C8DF80008123DC /* Build configuration list for PBXNativeTarget "macOS (iOS)" */; + buildPhases = ( + 3B773AF826C8DF7F008123DC /* Sources */, + 3B773AF926C8DF7F008123DC /* Frameworks */, + 3B773AFA26C8DF7F008123DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "macOS (iOS)"; + productName = "macOS (iOS)"; + productReference = 3B773AFC26C8DF7F008123DC /* macOS.app */; + productType = "com.apple.product-type.application"; + }; + 3B773B0326C8DF7F008123DC /* macOS (macOS) */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B773B2926C8DF80008123DC /* Build configuration list for PBXNativeTarget "macOS (macOS)" */; + buildPhases = ( + 20BF56BC11CE65063CDEB732 /* [CP] Check Pods Manifest.lock */, + 3B773B0026C8DF7F008123DC /* Sources */, + 3B773B0126C8DF7F008123DC /* Frameworks */, + 3B773B0226C8DF7F008123DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "macOS (macOS)"; + productName = "macOS (macOS)"; + productReference = 3B773B0426C8DF7F008123DC /* macOS.app */; + productType = "com.apple.product-type.application"; + }; + 3B773B0B26C8DF80008123DC /* Tests iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B773B2C26C8DF80008123DC /* Build configuration list for PBXNativeTarget "Tests iOS" */; + buildPhases = ( + 3B773B0826C8DF80008123DC /* Sources */, + 3B773B0926C8DF80008123DC /* Frameworks */, + 3B773B0A26C8DF80008123DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3B773B0E26C8DF80008123DC /* PBXTargetDependency */, + ); + name = "Tests iOS"; + productName = "Tests iOS"; + productReference = 3B773B0C26C8DF80008123DC /* Tests iOS.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; + 3B773B1626C8DF80008123DC /* Tests macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B773B2F26C8DF80008123DC /* Build configuration list for PBXNativeTarget "Tests macOS" */; + buildPhases = ( + 3B773B1326C8DF80008123DC /* Sources */, + 3B773B1426C8DF80008123DC /* Frameworks */, + 3B773B1526C8DF80008123DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3B773B1926C8DF80008123DC /* PBXTargetDependency */, + ); + name = "Tests macOS"; + productName = "Tests macOS"; + productReference = 3B773B1726C8DF80008123DC /* Tests macOS.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3B773AF026C8DF7E008123DC /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1220; + LastUpgradeCheck = 1220; + TargetAttributes = { + 3B773AFB26C8DF7F008123DC = { + CreatedOnToolsVersion = 12.2; + }; + 3B773B0326C8DF7F008123DC = { + CreatedOnToolsVersion = 12.2; + }; + 3B773B0B26C8DF80008123DC = { + CreatedOnToolsVersion = 12.2; + TestTargetID = 3B773AFB26C8DF7F008123DC; + }; + 3B773B1626C8DF80008123DC = { + CreatedOnToolsVersion = 12.2; + TestTargetID = 3B773B0326C8DF7F008123DC; + }; + }; + }; + buildConfigurationList = 3B773AF326C8DF7E008123DC /* Build configuration list for PBXProject "macOS" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 3B773AEF26C8DF7E008123DC; + productRefGroup = 3B773AFD26C8DF7F008123DC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3B773AFB26C8DF7F008123DC /* macOS (iOS) */, + 3B773B0326C8DF7F008123DC /* macOS (macOS) */, + 3B773B0B26C8DF80008123DC /* Tests iOS */, + 3B773B1626C8DF80008123DC /* Tests macOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3B773AFA26C8DF7F008123DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B773B2226C8DF80008123DC /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B0226C8DF7F008123DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B773B2326C8DF80008123DC /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B0A26C8DF80008123DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B1526C8DF80008123DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 20BF56BC11CE65063CDEB732 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-macOS (macOS)-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3B773AF826C8DF7F008123DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B773B2026C8DF80008123DC /* ContentView.swift in Sources */, + 3B773B1E26C8DF80008123DC /* macOSApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B0026C8DF7F008123DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B773B2126C8DF80008123DC /* ContentView.swift in Sources */, + 3B773B1F26C8DF80008123DC /* macOSApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B0826C8DF80008123DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B773B1126C8DF80008123DC /* Tests_iOS.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3B773B1326C8DF80008123DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B773B1C26C8DF80008123DC /* Tests_macOS.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3B773B0E26C8DF80008123DC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3B773AFB26C8DF7F008123DC /* macOS (iOS) */; + targetProxy = 3B773B0D26C8DF80008123DC /* PBXContainerItemProxy */; + }; + 3B773B1926C8DF80008123DC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3B773B0326C8DF7F008123DC /* macOS (macOS) */; + targetProxy = 3B773B1826C8DF80008123DC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3B773B2426C8DF80008123DC /* Debug */ = { + isa = XCBuildConfiguration; + 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; + 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; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 3B773B2526C8DF80008123DC /* Release */ = { + isa = XCBuildConfiguration; + 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; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 3B773B2726C8DF80008123DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + ENABLE_BITCODE = NO; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = iOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.macOS; + PRODUCT_NAME = macOS; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 3B773B2826C8DF80008123DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + ENABLE_BITCODE = NO; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = iOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.macOS; + PRODUCT_NAME = macOS; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3B773B2A26C8DF80008123DC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 05AAF53D4B4534B405B50C00 /* Pods-macOS (macOS).debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = macOS/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.macOS; + PRODUCT_NAME = macOS; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 3B773B2B26C8DF80008123DC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D10652CC9753C8B4B72C2429 /* Pods-macOS (macOS).release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = macOS/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.macOS; + PRODUCT_NAME = macOS; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 3B773B2D26C8DF80008123DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Tests iOS/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "io.github.aakira.napier.Tests-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = "macOS (iOS)"; + }; + name = Debug; + }; + 3B773B2E26C8DF80008123DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Tests iOS/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "io.github.aakira.napier.Tests-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = "macOS (iOS)"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3B773B3026C8DF80008123DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = "Tests macOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PRODUCT_BUNDLE_IDENTIFIER = "io.github.aakira.napier.Tests-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = "macOS (macOS)"; + }; + name = Debug; + }; + 3B773B3126C8DF80008123DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = "Tests macOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PRODUCT_BUNDLE_IDENTIFIER = "io.github.aakira.napier.Tests-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = "macOS (macOS)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3B773AF326C8DF7E008123DC /* Build configuration list for PBXProject "macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B773B2426C8DF80008123DC /* Debug */, + 3B773B2526C8DF80008123DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B773B2626C8DF80008123DC /* Build configuration list for PBXNativeTarget "macOS (iOS)" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B773B2726C8DF80008123DC /* Debug */, + 3B773B2826C8DF80008123DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B773B2926C8DF80008123DC /* Build configuration list for PBXNativeTarget "macOS (macOS)" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B773B2A26C8DF80008123DC /* Debug */, + 3B773B2B26C8DF80008123DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B773B2C26C8DF80008123DC /* Build configuration list for PBXNativeTarget "Tests iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B773B2D26C8DF80008123DC /* Debug */, + 3B773B2E26C8DF80008123DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B773B2F26C8DF80008123DC /* Build configuration list for PBXNativeTarget "Tests macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B773B3026C8DF80008123DC /* Debug */, + 3B773B3126C8DF80008123DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3B773AF026C8DF7E008123DC /* Project object */; +} diff --git a/macOS/macOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/macOS/macOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/macOS/macOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macOS/macOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macOS/macOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macOS/macOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macOS/macOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b7c9c4d593a39809218d0e608fb246d076660842 GIT binary patch literal 19511 zcmeHvd0dp$7x%r-Gs7&vFsyE%C@{Fdu*@(EFfa?CxBxPMyEx7aFak3;Gq{^~thBV! ztTeY0P*bxs%{6m3wagT^$}-JNEi22^%F6dV^Dr#guV3%>*ZabUnfu)J+;h)8_uO;7 z598}zrtg=oY z1mQWW%Edti#zEGpR*SBs(rLs;f>NW~MzT$x#|o zASF^EHOfX>l!peRA;^eKXgo3_3$mgLGy&PsZ1gyK0zHZ5pto2%j}D-N=ny)Lj-cb{Lv#wAL+8<_=rX#3zC>T4-_alFPxKHY zj4_32%)wmjhk2Nf1z3pvaR3g)BHS5w!Ci4T9D@_F6erNhrh=^;M@3Td>22!zf*|9lphs9 z1yUj^j0&eZQ(dSYR5aC_>O=LV@~HmQ04kpvNDZO}Q$wf%s*oz8hEm1UaB2iKma3v` z)C8)Us-bGB$I>=)^&9mkP0=*Xq4~6c7SjH75FJW)qI=PO=tMe&PNikE zlFp^`=>GHoI-ed$7trHrGi{-*bOl{WSJ5_l0&S3x6pg(ee{0%0DX`?Nq{Tclw zeVzW1{)zs*G}c~UQ*#CdA`uEgVibxZh7}m4)z+!5k?`FjyJfNF8k5V_h=NfFp$OfG z!caKjkXb}uE)L7j$sOi!R=es;RIF$`M5I7X16#dyMPKdrE@w> z_DUGd?#{7}udmFvS2&=$(OLr)OFao`Ksh9wM4mzYK}H6kd^8XZ zVx(j|Om-A}JFPXqoJm%KNEit%7iU%2YOLu=NlB$HU{8|CRBdyblJYH9QwtfcB)h53 zW_2djn#_ep_ES2AA-4|bY(@pB5EY@JBU!Ptn`*7Y*`(D~T402UH$rjo@B(9@SGW2o zE{z9oWONrJT*v z*V}3=#q~8-S4+0I-+!rGR0Rxat)1{UwS6n=Tf@N)vsbJ@B>t{?k<&WK=BRg-n4Fc? zmgP4vJF#3W`J3Kb2yb88$C^r1g`}%ikw})g)u^Ui99m!;Qtvj6ud(LXKw=$slXGel zsz$Y_cyxiWEzj4715H8Fb*K(aL{8*FZd8vZp~<8>=|Q4NPtuFTkXRD84oyYV&~!8d z%|wr(S%?q`i6^~DACf>4iIgNUZ0{`7E0r=`o<3D!Q03$)^OBQQDXFp?LtByR(W2;f z3)7z0dA1t2)d|OHxo?TQYuCO?j?HDRalqaz0AX@L)l_LRGgeNDQkA3EF=OSaSwo}M-Gr8+<)|382t4?@T!~)kI7S0% z?3l3ztz|RHrY9#vC(mSu-hehXpw~$X$vBJNM4QlN*!ypxEocyWdxXoYpcrGvZ3A|? zO|^BSEG?QJb|;aMR1!)uV|0fs;Q&#fV#^vJwGzA}-7tqHY zSL`DC97Qys&xp1GT_QT79|LDFBiTl`(`K(6(=v7M7fhZ}r?u#6BeS!8eO^PiQN#xH zHM)*&pquC$^ewuDzC+)mA4m?#C3&Pj89?&MKr)C7CPOx$AJI>6^8SqOqI>8*`UU-p z;z$80gtNDZ3?;?HNJ>a4Jn2Wcy~@g%GYF1QHk|`n%xo=!L!!drtQ~1{<<{6LZJ>9` z#S!gm8VvI2ebJVPrTN(S*Zr zIF2AA$y8!x6l5|iXh$=m#pHlZXRNQS1y#+iwb5G1m=D0Q&W|)HtYfq~6h%BzRAO`2 zSiRcdus)&tg zDQ24%r$=|(c)l(QaPcEu7;y9s2#pE^>21l63 z`);0?qB&eY-v9cIlP@T7Ivj4eZi;*O2ZV-o?-AX%Uy?dKBQ8@rAb;SX!Nq06Mvbj< z)VU|OTn_?8LE_*Lu(w(m&KhHI_UPQ8aK?k+yWm>TozNqU^=7lxYOz|*ghz-vb&dL) z%S2=6E`&q4jol)_w(mm1$_k8m4!av_8XPqa=eeG}Vq!&clK9?zpu}jKW`%Jp@@h<# zF2*Xcy39^n9S8>$G8!*ND`9yT{FE5(2|Usn#9gYZ1M}QC6%6y*(tM_Oy`#p`EJ{d} zg6++Y*Va?JNpvCthVW#0R1=sZ?46@2O`#-#pxPoxnAd1x`eW#7Z3pKR5MRRN=UGjR z0)q1wZVZ*Kc2zq2s+8uJx=fXAt(zl6n(T%wxWj}qW9xFF8ubPuCc%xlc_akRQ5dxw z^zQ4Kxf?i~U`^ZIwhAz!;rwVVEty(pZ7UHYv0w9$g2JM|Go(A1c#VZaTdiqmVJsQj zYFBuV!zN?tP~XuA7Zi4`3{SmNffmC@fXeqZP8F*2I> z8RCQUB?w7Tkjd<-(-jpBX2i=5w6J2<{`1~>@B+clnM9_q_9g!!&9#6iL%sd*H`U@Y z*CK>75#o0>*E!t?35G*{%w%^Rlb!+Tuo5am@U!$ zO>j0ur%F?!;i|=4!KVG3pC0fR;Howbf^R9%|AfVq!=%$8y~S+GH9}ei z>06U*Wd)GdB1Fa3x%I`69tdemeRZi0(g~1$v%;BI3h69Je_B;PfJw^{qB~EkDj5dp zu8)XxB|XPA$;jjbot(4NstgRBFcvppf@xq8q(QxKCDxk$%(&1GcW|A%i0Koa zxs&WQ1Xq$X!>f5-=(@TNHHiy1z^9C@p)_EM&QkP+S`REAC9^mBmw&k7DeJGktk z;YwzM3mKEDL?*EHOpr>2ep2DyZiPBlxVG7#R<*Z=6J2X9_qAZ!B*F#H2|ZUp-5O}g z^u+eXxEYz6Y%dPziFsmrzTwR?w~Q!-5e?nf!1XX1Zk@NFyb4l7z_G~WOaTgO;oAVY z^-xv`>Gq?ff+VHF^`4=YrGY7DM!DHCiUV3$ykoKLn0d0a8GvRx+&)cS+Prh;bmAm) zWbl{48O+gelD(rjp~h5{=*`dc=J`f#n>jPLo2{cx1X|nAzCFi$Ts{E&azoEGFhe_V zkl~LDsQDe}u5M}F#!c^t3%l0$uB%)8+|c~7Yhl(f^V!aFoB5*!w~x-)(-}pde`f!2 z6unWr>lpOK(inY?vvc&BfTJ`1VO81nZ!ZBISGBOc+;}C)@`&63E!<}ADefiiSriT5 zUvbZIZ$RoI_cQqYq?MkwHDD#fCljo+nKA9H$w;9NI8)=5m|EZlvr<+skNN|DOu%2( zrBDI6c96m%$n{C#UnPX;t$jHo5$x!d&@cPcCh=x(4kIDV_>8nX%Afz49nx-pRM;1G zt*aZmcE$s19lJiv+F9oo+$%t{6OuP4-%4JcyfOJs@}*XOMJHcK{x11kas!lnOTR#G zqu-@>(YxsrC>ox2gS&Q@H?@)81HW&zw(Gbf*nQV=M=1fg^_^aAW@?#l`~ApB zRdfga$7n!X`+bH3VJEXAu{z|hlF8_<=nfjR6h^Y4$v_9=G-I@b9du8}I;@^xXmj9E z-ZlIi8TCu|i}%a*i-)!?n!qo|Z-8GOiuOxk^8J$h20~iR)Z%pKq;T><>lLDCj*gSY z(YB-+O_&M4j2>jqhD1&_lxA^qI4VX*wx2Cf!t$2UmVZCf_PY>l4Yzd)*eeJb9CcHj zw#q7ZwAT`k&bOPT3DK#^DR3e(b{10yp*usp_7jdcVXk*hV)Ho67Z(Y^1`C4_Sa%cy zr+OmLsze!Z&gO#MP>4#<2yo?^VLfYsXOqF#=z);ed~lw69Q88QNNuFHQwJb8bdI`AeM{Y?5d?uE=$;V%QPBpvkRAzv9w+@6J&#@tL7X>1 z3mm1-(3k03^sgL0PADgulL%`wfK$pbb0%^g<2=Jz##zVN&N<9E!@0t_&H0lX$c^Oo z)pMSxr=L0(4qP4JuU_l)04zfFGo{Z9K` z^}EaC@w)K(@ie?bo{8t?&EYNOZRG9aHS@0Ve&PG`d+<~FdHj)lJAXERF@FPpFTa_8 zo&P`}7Q_kC1%(2OV5(q&V6|Yk;3L5`!2@BiFkYw;mIx;ZJ;IlTZwikHKNH^Z_xJDR zul676Z}TVqFZ*xyKjweM|JQ(!fW85SfYAZ<0nY`z7O+3ylYl#cfq{}hZQ#g2ci?k@ z>jMu3UJCq06e^O6@BWePR*U}ckb3%+u7QAUgu4n&vpK-OLUjqF4bM0@3N!I=Uq8n`*t1L zb#m8Nx*q9zt6NyNjBe&`^SW*6_Gu&)**CH{a(ZM_Mo5;LkZHe}q$jL)=YuFkxw z>7_Ag8Z?))qO-4uqx z{W)|_|D1U_Cv!t`OLLdyUdrp0SDE*E-tGQr{ipZeKY%-6(17O$T*!~gH|MX0=9or8A|p@s|`^1_hM3gQav1v?5+VSeEYg`XG27fmdBXQW4MMYBtsKYsb~@vWM8K?S~!R9a9{q>-yErsk=Ne zed0?KZ#xG$*SfH4jBBSm3@)W7>U-BeS$}0x)}-Z=ewkc0dFzzmDfTHRruLos^wjIq z@}{ks&Y5nWesD(58J-zeX6j}(Jcb_||JcDpVhFwdcdx$+H*D{`v7? zkMDjW>Iw41)hGKu`T88u9Os-1b2H|?`V{9W+fyf>mOZ`n=|AUL=Dj~ZdH&-0zdvJs z=KW_=o_+b*htE|!cXEMZ!7B^>7TOn{e?I&9b&G-*OcR4Z7Y_|TboTJj!zYgnI&$p2y!Q?r)g9e;Oml3{@$}=n-dDZ9;{(M9 z+fSsO*!E%ChucmnPHz85`O(f(>QlQpiZozma-l&&|A>r@k5W&9!gqzI||O&UeAzt@yt8_iz88{o%yz z;kU2-==|~FPtV-xa_6<5xlzs9rvkub764ox$4}zr zcrVxumjJTzCH@M33!s(TU_so)_wldz0YFq_R2rqEG69}a1Qx_NfT7r_nUn`0C(8kD zvK4HI;{Yu=2jG&cU`6~wbLp;h6j%{4bQ~Q|C(~(k23Qlh03*o{yBYR<*n_Y?!~Mg> z;hn>~g-3^{g@cEK`JpiT4Rh`A6F!94y|E%Z7MG7{_5bC7|G5dW#-UP5w~n6RSw8#eIrI1`TyA#`gz63@j? zGms0&Yryl!3?^C+upIm>?!{J|!ahHbd#xfZ=@*$!0He{?$;)^ZlD>wQg3Y=dufQwu zEBIAHh=l)o1kb76VoGeA%^!96g};Y=0%PLma@>3JSTYA+29VF zQDPdeH#vuyTxB*F6Tlm0b5|L`(OqMOl5%lxrlk)G#I`6eFcw3E*x_Vw241)gBSPik z9=>(6wl;t+AoS*D0_BWXJF9(X9m^DX$tm(QRZ1ej2=Wr;DwQ%(otvDOs8Xns^(vV` znU^Ck7k6o$M~TBxGv4IP_mRy8%i2$=T~Vj$(-R>Mo|rr{A$q!60m+o)w6vKs*{IAG zJi0KLv-q#km|p*@_`lEj0-=8Z8(;|y3ykx>wn=?QzV-7IA43vocOt6%fnP{QMl&?{0It+)xKR=@zRKkUC!M2op7d;?_W}T{2T}tz<~LdDIno&y@LAM@m43nAkKb#2nO*8hX{iq zsKF&+ViZh$yh$7$6YCA@^i4@sY4iFI7&NrlST=$UF+qqUIXXES*zM&uBq5a{_IK)JV<5|$Leo&l0WEzeP=Bqke_fIUlTS6hsQ2*e!1AI1vO}@-)TY zMO(_n-3yFuV6oEtTss4IvJ_h@tWK-lY;8Re%bS$@2%oa<}iXF<*IR@Q{8GVS?S}lLVFy zb}3pENRN(X?Yr>SV4__l1Oi$AVe3IiZ#s)jfi3By$-5_I@{-b48DvLpEKvfj!-j*& z(1u}Z9HtzbJVjYCKEZ3%C-d0bX_~T7|ZveW)2-0=&aRz`J$=CqXxF zh&&qi!m$tr?*k5lM4SXpgMqln>nNBDs`e1R2uC}(1tIM!#u!TuE0MD3(@Q+uer)HUiS>OSoU2vISe00__`x|l8j)aP9K8NheG zLO0Qy>8?2~LaM_#M0lzl-;hd1O9$hCEB2 zBMZnv@;q4tfJ*Rb90cMI<0JSzI2ew>G4KLeL)Mb@WCPgu^qmpjKT~Tdt3W))5%s3yT?I`t{BJEC#?#6F!H};|t_P@)B9x1eVu1e32}H z$0lYrEV4)n%?H`s(pFNWt@;k8;zR4TmVyH6?{w7Hu>}ma!Z+d-{56uUhSk3crrkC2 zGFeKNk>#uLb$kN^;yPJDR+3lX6GjeW;cDKqP(PIkOnQ-P!3?gnbtEPmq`uS+F+6~k z{IzmtwhybNG{0k!kDed#PbdQLexT(TTu6t0jSg5H0Fe0V-ow8Dnh4(~uQuRc$v?Mg z26N;O{3m`0adc2%%%NVyAmRb)>a@BbUh9Q3l19={7)-s}@sw03H6tLpTkEA5qym79 zZk^c-a38CMvD3!7T0n9x5FUqp42v?eTJoWdYolL)IIMHG9=#-erK!z4zQDhv&g8Bd z0ovI*WdOkH8iXw5LyVf?H1+?x{;gB$Om+sN@1;P-7!J&=9kWnRIsJNoN zM~s-$3}^Ab@1^7b^wOnkqfjWOn&J5V_brFSL(6FYMq$q~W0lEiwKT&q`R|+OghKQ9 zK8?cOMnJlO?Fy&Yzi&N&X`PhPC`=x~PM+z5W=^qx-$&6chLhw>Cy}F3mENdU$M|$o zV@76-b|U)}qkVR`H`R~@LuUIo2)zop8^pXcfGHdf;N0)^%R z?e*cFMOPt`_#-G}#&;_MWh?;|EX8R6;u(TR!v$ml+%zV_t!oPSYnOp>yAEC=*aqrv z54Ns9>fiF?p?l3L)#5o_f{;(i_mqV9bC78(=e6g7VIt0>F4?zvbt+yf+sr z!h3UR6$)REU8zW>$8O~H1{4RU5A@iLIci*m_L`|JR}F^aEZp0tbg7;cyfx5B^`c_P z8|2MK5RRYWuqtAjhqpE#3~vEgEqcJ^RRa>P$ME9T62{~Mjg{wg)V6AUA4UBr0E}&< z5~xH<3Xc6`Duqgg3%VSx=n6_nHj}r=7P6JRO}3HkWCz(vc9GrWosE>5N~bd54zHoI zsBB6LPkPD#WbGlx$Z_&M`G9;#PLhw{=`#KQ z5BJr!n!H4Kv!VM?IJ{bj@N$W@9(w;HcWkcK-hInyq)Hh9DESJuD4i6w3;n3TH83U&he3Ir<{+BT zye|Tl62p)f?dbj9KEw!&es-zL2U{!LC5~by2q#8oz~X!ij_!J}K4-z)0T$(3<-t~a zrPoMnm*+)Pk`t^3^iZ?mZrEDCk$M~zx6kkq{v$9zloF}Kr$K)b8Mb4FrlUg+%E4HA!nWbktY_t7ZbssAdOTfoMy-b?H#{#an z6)>BXu(4kq*)~e4cYJaN_VroT3}JcKNHvvPHGqHFY2%mZEWhOFB+-c%rqGP z(!Z+DuG=2)n^EtQ&)c@~e(DIA=@5%ONFAb*$R+XxxlFdMrrx8DQpc!ta)tcp!7;Fk zjDlcQ6607gu?9HskIQX_`Ud4wx8U!4>Id*|>rn>m5=+ZF8Xb7Z`h$AHMZ?Ot z<`@%0>hiuv&~Xib6c?kc+b-2`O544c!Io|G*ZOfCN||vOe<3)V7};nw4$8%e|B5AO9JkB-j`;mLC zJfx*w9^U_VJZw2{06LKcZ~M_|IvwI3nY4yHAitA8$e-ll8akWS(mGmC8$1|!FvMR% zJh;0D_h9z*|0A#b(Szv09o`xOoXK!_e-AuML&3LX1n*KQT}BV{V9JAO59W9<*Mt2$ znCHQK4;HMWM*uEm6g`?ALyx7)5%FN52m5<)fCmS9aF7R!Jvf;B|JV6iU+1H%>6(rl zchGfg2Kzc6?S|L+=z0$p{q=o5pG;4sr*-UMCjD5)3=ch<&0zP^lgwV4gaX!dbaALs`pKL6B`|P^tf-N zH#54I2^~CI$e89W#y~k+>SNbddM6kj^xFXU+)nTC;5ZMKcyPQ2_g>AQKXEm^$AkNL za1wEQa0-bW&Y17am0^U}f@e}AS;L;a>M`TD-d%j-@RxryI=< zCP*9Iq0rmh;e@x@!I$TKO$XXXbg1I(oiQ?40X~B^u4-Gp^E5ba8|VujoZJA$5^IOS zJ>BJ~v4YV6o=|4`zG;3=f8o2;(U(0qwIyCkUxh0i{S|%9gJm9^)@uFHH|Se`y;{+4 zqd58pSPvrdU^&spXeW{O*D?AIegBa*+n~*Fuz*Y(1=Geo&f5k&T3z7XganiVi2ZCp z6qLbB=VQSNJnxOz-=qG3e+0n+C%-=(2>%2knC=Zac{J^yC(Eq4mn!=1~0hWiq?k^2UB6Zb9dRzL{u z;2z{2=Dx>0#(kfAf_swtz^{+raKE{JoBiJP+v~T_?||R?ewY2O`~A$rybxX(FM`*Z z*OeE^>&}bj_2S8RX*?xQ&C3AvU^Y+3Gw^bG<9O3~ukcRruJb8=6d(tU{1SdCe;D7w zxAH6aReT%Y$*<>6=1=9%Fj!iUh+1BLt%aV+7@b3PG)4pX`*w*lV;{1%7<=|FBEFHjUH4h#tl z3ycWN4y+Aa8rTSk$W4KJ02O&8@Mz%iz*B+EfoB8H2YwuQCGcwC&A@wse*``R+%zo` ziULF;kysQW>L%(gN)V|5Ppt<8b)IO5s8BRiWE7Q(#)_;WyJ%AE=doYJ-iW;y`$rrn zE;z1xTy$KoIEdB8^^WTsr;Jm_WyERXvg34dhPd3g32_VJcEw$dyB7C-+`YJm5-br) zf+Z1>IEhrEk>p77B!!YJNAj*@pX7k#kmQKutmM4pW67tI&m@;5mnC0HzLMODkBsjhZ;Rg$|6cr+ z_y@f?39lrqN_Zn-f5O3p!wK&t97}jV;Y7m8gi{I43D**?C)`Z}C`-&s9GO^|I5Tl!;wyk!+>-cq;`YRyiTe@{BpymUl6W-no5Vk*Vri6A zBJC~hD@~9}rAnz<>fJ`I{mW9f~WonsT zW{~B|3S^^XV`bxHW|>u1DSJ}3NVY__RJL5UO4cY_En6$wE4wWFPVOh?%Z2g)xkxUS zhseX^5%SLRuJTBEcezromS@N{@@%PX`iKCOZz76R@(Pzw*i02QTQqN3ZWuc5vmAR zbW(It#4F^A{)(ZBk%~%%T~P=4Ot)gXVy0r2!lQUx@si>d#VW-%#SX<`#m9_f^xRZFQN^-%Rx#i;tIQdL7$WvY7BW2*V8XH^SS&#RWHHmkO&K2V)ieWALdx~h&+OVp`q zrP`n#te&i%p?*!hS-n-gO}#^XSpA{;BlT(Z8TC2!CG}*|~8Khi_fd!#3% z%hJ=*mFenqZMr@^Cp|BHK>C>Uy7bxU^V6S8Uzolq{hjm+=?^jjGx}v1Gak=alF^iL zAmdQRk&L4m$1^_2_%P$6jMEusGR|dupK&|mr;ML7?q&Rv@mnUH>6gjR6lQkH?2_3n zGb%GCGa*x*nUSf<%+4HIP}a;?X*`<8 zH48P%H7hl*0`j# zYkL8THdZUq%CvHAnpUY*X?5BhZGUaPb{L>*t=bB0m9}0xNjq6PRXayJSNoK9p7sUp zV(n7xa_vU#ChZpOHti1WFFLFf>B4oLb=`E`b#c1hx_&yTE?KA4W$8@1>AJbPg}N7X zi*+yS*67yiUem4D9nziBoz^w$&gwqZUDn;yW4)igJ0N&9`aFHUez3k!U#uUcAFDU% z&H4&`m42drx_*xS75(e_xAi;pyY=tt_v?@AKhS@uKc#QhpVj|l2r{G^1{q2WrG{Y! zi=omm!2qw38YUW^G%PZ_WLRQYW>{%>)v(U+hGDZ|t6`hrpy9aT1H*@gj|}GxpBOG0 rE*UNxZW`_x{xCeu!GInX<^<*h<%HyfvBy6}vETF`?6>bTC+dFyYE%3% literal 0 HcmV?d00001 diff --git a/macOS/macOS.xcodeproj/project.xcworkspace/xcuserdata/akira.aratani.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcodeproj/project.xcworkspace/xcuserdata/akira.aratani.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..798e3bce417903cedb90657b51fd369c5c8073d9 GIT binary patch literal 29559 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 + + + + SchemeUserState + + macOS (iOS).xcscheme_^#shared#^_ + + orderHint + 3 + + macOS (macOS).xcscheme_^#shared#^_ + + orderHint + 2 + + + + diff --git a/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist b/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9b18e6f --- /dev/null +++ b/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + macOS (iOS).xcscheme_^#shared#^_ + + orderHint + 0 + + macOS (macOS).xcscheme_^#shared#^_ + + orderHint + 1 + + + + diff --git a/macOS/macOS.xcworkspace/contents.xcworkspacedata b/macOS/macOS.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..7bfb4f8 --- /dev/null +++ b/macOS/macOS.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/macOS/macOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macOS/macOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macOS/macOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..9c084bdadc5ae593d36576b96c3d01e0046bb438 GIT binary patch literal 43671 zcmeEv2YggT)bE|SbvJF(8zm4(&t?;nkWkY@AdNISVM#X0LXr);8z2<9gNRD8AYuX0 zgeFDo2ng6k6dNdZ#DanqM69Uq%)Pst1foX2^4|A;U+Ud^XU?=U=bSln=6`3lG@5O8 zgW(MZF_>W)j^P=B5gF~oL32%3o7vJlX^_!c(_n^A6@%=SmWhKbGiRA<>^2_;Ex)H) z=T%%j&eUeA&2%Jsosk$#Wx3sGH_7OJZ`O@*W89fQCWr}U5*P!M$RsgCm}Dk}No9sI zX-qnk%j7Zn%owJC8P7~$CNk5RnM@7S#56M&riHOHi)1*hU+ zcsL%7GjJZx$K!B0o`|PnBd*7@@f>W&3-DEV8NLRu#5dww@$Gmsz87!D_u<|6A^b3Y z4DZFS;8*c$_;q{?AIERtH}MJl7Jd(Zj6cDj;xF)*_yYbOU&KG)AMqb7!v?T{Y!DmF zhOnV*AGR;skL}NfvoUNeo5&`y!`R{M2zDf!%jU7u*=lwMYh-7#HEbGu(z;l*$wPn?8EFM?4#@+_Az!ZyN}(^KF%IspJWfS zFSD<(C)l^xx7kzdN9^b98TKrPILxse$MKxNiJZh~I4$SKxpN+zC+EfKIB(8}>%;Zs z`f>faNG_2};)Za^Tnd-U4dpVqEH0ZX;)=Nvu9Tb1P2sA!8qUVqxmIp2H;-G$UBxZo zWNsO^g1dpcncK*9a9g>(+&*qU_c(WeJIEd4p5UJ3p5fl%-sRro-se8xPI4b|r?`)} zkGXT)dG0&z0{1<4kw-k{S)Sv0Uc+m79q-Ni^8tJ)AI=Zr2lI)15=~9afx`fc&&JyxJq0tZW1?( zTg0v6Ht}9@ySPK#Dee*<5FZowiigA}#KYnX;t}z6@tAmAJSm`{qomQ&SZTaeDNT|lOH-t3X|~iTHA&5q zMVcqgm)fKS(n4v8v`o52S}xrr-7Kw5}w^25WeYMx)iZY1}n|ntq!8ns7~| zCQ1{niPz{gNtz*=WX&+maLs5dd&vSJ(_mS7R^@8F3o+K2Q`mr_GY4%{!WR zH77M6YEElD(|n;hr#Y|rPIE!?qvltwp!LxDY6G>Q+Wy)w?I7(i?Qrb~?MUq??PzU= zHdC9W&DQ2?i?tQnO6@f5bZwosUOQXcsGYBE(=O01)GpFqr@dagLc3DCO1nmTi}nuf zM(w@Y?b?Sc2Q{}gHXdg@7*EEF(J{VEz=Yy*{cKa4Z8H3K=$NWOHH}7_t%LDqd}J)M z9gH92FLMM{%4@52eg!$X6D-!*wiaWJDaTUN+GJ|BSL+6)CL2r@mp!&KgP8~>l8IuXnHVOPiDTkrPuYv0V1oJ(q$jADpb~<{6I3RTgW6?TO~%b+O z+MHvu+0D&HJ80u-ouSZZvu9hHS{hA2u#_rkn;jaiX3H|#Ko`^E%=Wf2Q;Wq4J>uo; zoC)UUTFX2e)Iz<=v|5eL^-x-~J;yY&wZ5Ra&H~BHO^u-8O|`D%L1m^INTb%-NsLxm z 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 literal 0 HcmV?d00001 diff --git a/macOS/macOS/Info.plist b/macOS/macOS/Info.plist new file mode 100644 index 0000000..bacbc56 --- /dev/null +++ b/macOS/macOS/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + + diff --git a/macOS/macOS/macOS.entitlements b/macOS/macOS/macOS.entitlements new file mode 100644 index 0000000..f2ef3ae --- /dev/null +++ b/macOS/macOS/macOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 7bbabf7..3f11875 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -8,21 +8,154 @@ plugins { apply(from = rootProject.file("./gradle/publish.gradle.kts")) +enum class HostOs { + LINUX, WINDOWS, MAC +} + +val napierPrimaryDevelopmentOs: String? by project + +val primaryDevelopmentOs: HostOs = if (napierPrimaryDevelopmentOs != null) { + println("Selected dev OS: $napierPrimaryDevelopmentOs") + when (napierPrimaryDevelopmentOs) { + "linux" -> HostOs.LINUX + "windows" -> HostOs.WINDOWS + "mac" -> HostOs.MAC + else -> throw GradleException( + "Invalid development environment OS select: " + + "$napierPrimaryDevelopmentOs. Only linux, windows and mac are supported at the moment" + ) + } +} else { + HostOs.LINUX +} + +val ideaActive = System.getProperty("idea.active") == "true" + +fun getHostOsName(): HostOs { + val target = System.getProperty("os.name") + if (target == "Linux") return HostOs.LINUX + if (target.startsWith("Windows")) return HostOs.WINDOWS + if (target.startsWith("Mac")) return HostOs.MAC + throw GradleException("Unknown OS: $target") +} + kotlin { + val hostOs = getHostOsName() + println("Host os name $hostOs") + + if (ideaActive) { + when (hostOs) { + HostOs.LINUX -> linuxX64("native") + HostOs.MAC -> macosX64("native") + HostOs.WINDOWS -> mingwX64("native") + } + } + android { publishAllLibraryVariants() } - ios { - binaries { - framework() - } - } +// ios { +// binaries { +// framework() +// } +// } js { browser() nodejs() } jvm() + if (hostOs == HostOs.LINUX) { + + linuxX64("linux") { + binaries { + staticLib { + } + } + } + + if (ideaActive.not()) { + linuxArm32Hfp { + binaries { + staticLib { + } + } + } + + linuxArm64 { + binaries { + staticLib { + } + } + } + } + } + + iosX64("ios") { + binaries { + framework { + } + } + } + iosArm64("ios64Arm") { + binaries { + framework { + } + } + } + + iosArm32("ios32Arm") { + binaries { + framework { + } + } + } + macosX64 { + binaries { + framework { + } + } + } + + tvos { + binaries { + framework { + } + } + } + if (ideaActive.not()) { + watchos { + binaries { + framework { + } + } + } + } + + watchosX86 { + binaries { + framework { + } + } + } + + mingwX64 { + binaries { + staticLib { + } + } + } + if (ideaActive.not()) { + mingwX86 { + binaries { + staticLib { + } + } + } + } + + println(targets.names) + sourceSets { val commonMain by getting { dependencies { @@ -45,35 +178,160 @@ kotlin { implementation(Dep.Test.jvm) } } - val iosMain by getting { - dependencies { +// val iosMain by getting { +// dependencies { +// } +// } +// val iosTest by getting { +// dependencies { +// } +// } + + if (hostOs == primaryDevelopmentOs) { + val jsMain by getting { + dependencies { + implementation(Dep.Kotlin.js) + } + } + val jsTest by getting { + dependencies { + implementation(Dep.Test.js) + } + } + val jvmMain by getting { + dependencies { + implementation(Dep.Kotlin.jvm) + } + } + val jvmTest by getting { + dependencies { + implementation(Dep.Coroutines.core) + implementation(Dep.Test.jvm) + } } } - val iosTest by getting { - dependencies { + + val nativeMain = if (ideaActive) { + val nativeMain by getting { + dependsOn(commonMain) } + nativeMain + } else { + val nativeMain by creating { + dependsOn(commonMain) + } + nativeMain } - val jsMain by getting { - dependencies { - implementation(Dep.Kotlin.js) + val nativeTest = if (ideaActive) { + val nativeTest by getting { + dependsOn(commonTest) } + nativeTest + } else { + val nativeTest by creating { + dependsOn(commonTest) + } + nativeTest } - val jsTest by getting { - dependencies { - implementation(Dep.Test.js) + + if (hostOs == HostOs.LINUX) { + + val linuxMain by getting { + dependsOn(nativeMain) + } + val linuxTest by getting { + dependsOn(nativeTest) + } + + if (ideaActive.not()) { + + val linuxArm32HfpMain by getting { + dependsOn(nativeMain) + } + + val linuxArm32HfpTest by getting { + dependsOn(nativeTest) + } + + val linuxArm64Main by getting { + dependsOn(nativeMain) + } + + val linuxArm64Test by getting { + dependsOn(nativeTest) + } } } - val jvmMain by getting { - dependencies { - implementation(Dep.Kotlin.jvm) + val iosMain by getting { + dependsOn(nativeMain) + } + val iosTest by getting { + dependsOn(nativeTest) + } + + val ios64ArmMain by getting { + dependsOn(nativeMain) + } + val ios64ArmTest by getting { + dependsOn(nativeTest) + } + + val ios32ArmMain by getting { + dependsOn(nativeMain) + } + val ios32ArmTest by getting { + dependsOn(nativeTest) + } + + val macosX64Main by getting { + dependsOn(nativeMain) + } + val macosX64Test by getting { + dependsOn(nativeTest) + } + + val tvosMain by getting { + dependsOn(nativeMain) + } + val tvosTest by getting { + dependsOn(nativeTest) + } + if (ideaActive.not()) { + val watchosMain by getting { + dependsOn(nativeMain) + } + + val watchosTest by getting { + dependsOn(nativeTest) } } - val jvmTest by getting { - dependencies { - implementation(Dep.Coroutines.core) - implementation(Dep.Test.jvm) + + val watchosX86Main by getting { + dependsOn(nativeMain) + } + + val watchosX86Test by getting { + dependsOn(nativeTest) + } + + val mingwX64Main by getting { + dependsOn(nativeMain) + } + + val mingwX64Test by getting { + dependsOn(nativeTest) + } + + if (ideaActive.not()) { + val mingwX86Main by getting { + dependsOn(nativeMain) + } + + val mingwX86Test by getting { + dependsOn(nativeTest) } } + } } diff --git a/napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt new file mode 100644 index 0000000..3da677c --- /dev/null +++ b/napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -0,0 +1,68 @@ +package io.github.aakira.napier + +import platform.Foundation.NSDate +import platform.Foundation.NSDateFormatter +import platform.Foundation.NSThread + +private const val CALL_STACK_INDEX = 8 + +class DebugAntilog(private val defaultTag: String = "app") : Antilog() { + + var crashAssert = false + + private val dateFormatter = NSDateFormatter().apply { + dateFormat = "MM-dd HH:mm:ss.SSS" + } + + private val tagMap: HashMap = hashMapOf( + Napier.Level.VERBOSE to "💜 VERBOSE", + Napier.Level.DEBUG to "💚 DEBUG", + Napier.Level.INFO to "💙 INFO", + Napier.Level.WARNING to "💛 WARN", + Napier.Level.ERROR to "❤️ ERROR", + Napier.Level.ASSERT to "💞 ASSERT" + ) + + override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + if (priority == Napier.Level.ASSERT) { + assert(crashAssert) { buildLog(priority, tag, message) } + } else { + println(buildLog(priority, tag, message)) + } + } + + fun setTag(level: Napier.Level, tag: String) { + tagMap[level] = tag + } + + fun setDateFormatterString(formatter: String) { + dateFormatter.dateFormat = formatter + } + + private fun getCurrentTime() = dateFormatter.stringFromDate(NSDate()) + + private fun buildLog(priority: Napier.Level, tag: String?, message: String?): String { + return "${getCurrentTime()} ${tagMap[priority]} ${tag ?: performTag(defaultTag)} - $message" + } + + // find stack trace + private fun performTag(tag: String): String { + val thread = NSThread.callStackSymbols + + return if (thread.size >= CALL_STACK_INDEX) { + createStackElementTag(thread[CALL_STACK_INDEX] as String) + } else { + tag + } + } + + internal fun createStackElementTag(string: String): String { + var tag = string + tag = tag.substringBeforeLast('$') + tag = tag.substringBeforeLast('(') + tag = tag.substring(tag.lastIndexOf(".", tag.lastIndexOf(".") - 1) + 1) + tag = tag.replace("$", "") + tag = tag.replace("COROUTINE", "") + return tag + } +} diff --git a/napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt new file mode 100644 index 0000000..54ff37d --- /dev/null +++ b/napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt @@ -0,0 +1,13 @@ +package io.github.aakira.napier.atomic + +import kotlin.native.concurrent.AtomicReference +import kotlin.native.concurrent.freeze + +internal actual class AtomicRef actual constructor(value: T) { + private val atomicRef = AtomicReference(value.freeze()) + actual var value: T + get() = atomicRef.value + set(value) { + atomicRef.value = value.freeze() + } +} diff --git a/napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt new file mode 100644 index 0000000..7550c8f --- /dev/null +++ b/napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt @@ -0,0 +1,27 @@ +package io.github.aakira.napier + +import kotlin.test.Test +import kotlin.test.assertEquals + +class NapierIosTest { + + @Test + fun `Check createStackElementTag`() { + val debugAntilog = DebugAntilog() + + val sampleHello = debugAntilog.createStackElementTag( + "::: 8 Common 0x000000010db38cb3 kfun:io.github.aakira.napier.mppsample.Sample.hello()kotlin.String + 211" + ) + assertEquals("Sample.hello", sampleHello) + + val handleError = debugAntilog.createStackElementTag( + "::: 8 Common 0x000000010db396c0 kfun:io.github.aakira.napier.mppsample.Sample.handleError() + 432" + ) + assertEquals("Sample.handleError", handleError) + + val coroutine = debugAntilog.createStackElementTag( + "::: 8 Common 0x000000010db39132 kfun:io.github.aakira.napier.mppsample.Sample.\$suspendHelloCOROUTINE\$0.invokeSuspend(kotlin.Result)kotlin.Any? + 626" + ) + assertEquals("Sample.suspendHello", coroutine) + } +} diff --git a/napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt b/napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt new file mode 100644 index 0000000..9a3dd30 --- /dev/null +++ b/napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt @@ -0,0 +1,7 @@ +package io.github.aakira.napier + +import kotlinx.coroutines.runBlocking + +actual fun testRunBlocking(block: suspend () -> T) { + runBlocking { block() } +} From 813f9649fae7bc9a0141ba774ee43db9be393453 Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 16 Aug 2021 02:01:10 +0900 Subject: [PATCH 12/34] Replace cocoa pods and rename nativeMain. --- .../UserInterfaceState.xcuserstate | Bin 43671 -> 43671 bytes mpp-sample/build.gradle.kts | 44 ++++++++---------- mpp-sample/mpp_sample.podspec | 42 +++++++++++++++++ .../aakira/napier/mppsample/Coroutine.kt | 0 .../aakira/napier/mppsample/CoroutineProxy.kt | 0 .../napier/mppsample/CrashlyticsAntilog.kt | 0 .../aakira/napier/mppsample/NapierProxy.kt | 0 .../aakira/napier/mppsample/RunBlocking.kt | 0 8 files changed, 61 insertions(+), 25 deletions(-) create mode 100644 mpp-sample/mpp_sample.podspec rename mpp-sample/src/{iosMain => nativeMain}/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt (100%) rename mpp-sample/src/{iosMain => nativeMain}/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt (100%) rename mpp-sample/src/{iosMain => nativeMain}/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt (100%) rename mpp-sample/src/{iosMain => nativeMain}/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt (100%) rename mpp-sample/src/{iosMain => nativeMain}/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt (100%) diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index 9c084bdadc5ae593d36576b96c3d01e0046bb438..e7d3301a7fc020c123bac2e796ce5fcef46ed470 100644 GIT binary patch delta 19 bcmbP!m1+7_rVWA#EZwpS?G(targetName).binaries.getFramework(mode) - inputs.property("mode", mode) - dependsOn(framework.linkTask) - val targetDir = File(buildDir, "xcode-frameworks") - from({ framework.outputDirectory }) - into(targetDir) -} - -tasks.getByName("build").dependsOn(packForXcode) diff --git a/mpp-sample/mpp_sample.podspec b/mpp-sample/mpp_sample.podspec new file mode 100644 index 0000000..4c5a425 --- /dev/null +++ b/mpp-sample/mpp_sample.podspec @@ -0,0 +1,42 @@ +Pod::Spec.new do |spec| + spec.name = 'mpp_sample' + spec.version = '1.0.0' + spec.homepage = 'https://github.com/AAkira/Napier' + spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" } + spec.authors = '' + spec.license = '' + spec.summary = 'CocoaPods library' + + spec.static_framework = true + spec.vendored_frameworks = "build/cocoapods/framework/mpp_sample.framework" + spec.libraries = "c++" + spec.module_name = "#{spec.name}_umbrella" + + spec.pod_target_xcconfig = { + 'KOTLIN_TARGET[sdk=iphonesimulator*]' => 'ios_x64', + 'KOTLIN_TARGET[sdk=iphoneos*]' => 'ios_arm', + 'KOTLIN_TARGET[sdk=watchsimulator*]' => 'watchos_x64', + 'KOTLIN_TARGET[sdk=watchos*]' => 'watchos_arm', + 'KOTLIN_TARGET[sdk=appletvsimulator*]' => 'tvos_x64', + 'KOTLIN_TARGET[sdk=appletvos*]' => 'tvos_arm64', + 'KOTLIN_TARGET[sdk=macosx*]' => 'macos_x64' + } + + spec.script_phases = [ + { + :name => 'Build mpp_sample', + :execution_position => :before_compile, + :shell_path => '/bin/sh', + :script => <<-SCRIPT + set -ev + REPO_ROOT="$PODS_TARGET_SRCROOT" + "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" :mpp-sample:syncFramework \ + -Pkotlin.native.cocoapods.target=$KOTLIN_TARGET \ + -Pkotlin.native.cocoapods.configuration=$CONFIGURATION \ + -Pkotlin.native.cocoapods.cflags="$OTHER_CFLAGS" \ + -Pkotlin.native.cocoapods.paths.headers="$HEADER_SEARCH_PATHS" \ + -Pkotlin.native.cocoapods.paths.frameworks="$FRAMEWORK_SEARCH_PATHS" + SCRIPT + } + ] +end diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt b/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt similarity index 100% rename from mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt rename to mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt b/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt similarity index 100% rename from mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt rename to mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt b/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt similarity index 100% rename from mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt rename to mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt b/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt similarity index 100% rename from mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt rename to mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt diff --git a/mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt b/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt similarity index 100% rename from mpp-sample/src/iosMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt rename to mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt From feb546cf4578c09588d5bdda569fd1b478b2460f Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 16 Aug 2021 02:30:53 +0900 Subject: [PATCH 13/34] Replace pod in the iOS project. --- ios/Napier.xcodeproj/project.pbxproj | 62 +++++++----------- ios/Napier/AppDelegate.swift | 2 +- ios/Napier/ViewController.swift | 2 +- ios/Podfile | 1 + ios/Podfile.lock | 11 +++- .../xcschemes/xcschememanagement.plist | 4 +- .../UserInterfaceState.xcuserstate | Bin 43671 -> 37455 bytes mpp-sample/mpp_sample.podspec | 6 +- 8 files changed, 41 insertions(+), 47 deletions(-) diff --git a/ios/Napier.xcodeproj/project.pbxproj b/ios/Napier.xcodeproj/project.pbxproj index 716da5a..8449eae 100644 --- a/ios/Napier.xcodeproj/project.pbxproj +++ b/ios/Napier.xcodeproj/project.pbxproj @@ -3,13 +3,12 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ 3B3988B1264ADA500055407D /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3988B0264ADA500055407D /* GoogleService-Info.plist */; }; - 3B3988B3264AE4F50055407D /* Common.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B3988B2264AE4F40055407D /* Common.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 74AC91897E121EEADF59069F /* Pods_Napier.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 236CB35798B6FF37795E2A6A /* Pods_Napier.framework */; }; + 625D2A51333F356CAFD0D528 /* Pods_Napier.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 236CB35798B6FF37795E2A6A /* Pods_Napier.framework */; }; 7CFB659A22013CF600BD05FC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CFB659922013CF600BD05FC /* AppDelegate.swift */; }; 7CFB659C22013CF600BD05FC /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CFB659B22013CF600BD05FC /* ViewController.swift */; }; 7CFB659F22013CF600BD05FC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7CFB659D22013CF600BD05FC /* Main.storyboard */; }; @@ -17,25 +16,10 @@ 7CFB65A422013CF900BD05FC /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7CFB65A222013CF900BD05FC /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ -/* Begin PBXCopyFilesBuildPhase section */ - 7CFB65CA22013D5200BD05FC /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 3B3988B3264AE4F50055407D /* Common.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - /* Begin PBXFileReference section */ 14D73DDEDA418BBBD3C23B9B /* Pods-Napier.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Napier.release.xcconfig"; path = "Target Support Files/Pods-Napier/Pods-Napier.release.xcconfig"; sourceTree = ""; }; 236CB35798B6FF37795E2A6A /* Pods_Napier.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Napier.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3988B0264ADA500055407D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; - 3B3988B2264AE4F40055407D /* Common.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Common.framework; path = "../mpp-sample/build/xcode-frameworks/Common.framework"; sourceTree = ""; }; 6F88F8388EB37A3B9C7069DF /* Pods-Napier.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Napier.debug.xcconfig"; path = "Target Support Files/Pods-Napier/Pods-Napier.debug.xcconfig"; sourceTree = ""; }; 7CFB659622013CF500BD05FC /* Napier.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Napier.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7CFB659922013CF600BD05FC /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -51,7 +35,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 74AC91897E121EEADF59069F /* Pods_Napier.framework in Frameworks */, + 625D2A51333F356CAFD0D528 /* Pods_Napier.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -78,7 +62,6 @@ 7CFB658D22013CF500BD05FC = { isa = PBXGroup; children = ( - 3B3988B2264AE4F40055407D /* Common.framework */, 7CFB659822013CF500BD05FC /* Napier */, 7CFB659722013CF500BD05FC /* Products */, 10E92F91406E001698737DB9 /* Pods */, @@ -120,9 +103,8 @@ 7CFB659222013CF500BD05FC /* Sources */, 7CFB659322013CF500BD05FC /* Frameworks */, 7CFB659422013CF500BD05FC /* Resources */, - 7CFB65CA22013D5200BD05FC /* Embed Frameworks */, 7C44D7BC221548AD002EEF8F /* Crashlytics */, - 9440D0487B4C902A85F73734 /* [CP] Embed Pods Frameworks */, + 095E9721F85EF8B8A60C2E7E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -181,6 +163,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 095E9721F85EF8B8A60C2E7E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Napier/Pods-Napier-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Napier/Pods-Napier-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Napier/Pods-Napier-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 55963836C9E5F6516FE3DBE8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -238,24 +237,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "cd $SRCROOT/..\n./gradlew :mpp-sample:packForXcode -PXCODE_CONFIGURATION=${CONFIGURATION}\n"; - }; - 9440D0487B4C902A85F73734 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Napier/Pods-Napier-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Napier/Pods-Napier-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Napier/Pods-Napier-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "cd $SRCROOT/..\n./gradlew :mpp-sample:compileKotlinIosX64\n"; }; /* End PBXShellScriptBuildPhase section */ diff --git a/ios/Napier/AppDelegate.swift b/ios/Napier/AppDelegate.swift index 5af17bb..1b545a6 100644 --- a/ios/Napier/AppDelegate.swift +++ b/ios/Napier/AppDelegate.swift @@ -1,6 +1,6 @@ import UIKit import Firebase -import Common +import mpp_sample @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { diff --git a/ios/Napier/ViewController.swift b/ios/Napier/ViewController.swift index 43ab1ee..bae8e1e 100644 --- a/ios/Napier/ViewController.swift +++ b/ios/Napier/ViewController.swift @@ -1,5 +1,5 @@ import UIKit -import Common +import mpp_sample final class ViewController: UIViewController { override func viewDidLoad() { diff --git a/ios/Podfile b/ios/Podfile index 6241e44..cf12a05 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -4,4 +4,5 @@ target 'Napier' do use_frameworks! pod 'Firebase/Crashlytics' + pod 'mpp_sample', :path => '../mpp-sample' end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index efe050b..f18b89b 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -34,6 +34,7 @@ PODS: - GoogleUtilities/Environment - GoogleUtilities/UserDefaults (7.3.1): - GoogleUtilities/Logger + - mpp_sample (1.0.0) - nanopb (2.30908.0): - nanopb/decode (= 2.30908.0) - nanopb/encode (= 2.30908.0) @@ -43,6 +44,7 @@ PODS: DEPENDENCIES: - Firebase/Crashlytics + - mpp_sample (from `../mpp-sample`) SPEC REPOS: trunk: @@ -56,6 +58,10 @@ SPEC REPOS: - nanopb - PromisesObjC +EXTERNAL SOURCES: + mpp_sample: + :path: "../mpp-sample" + SPEC CHECKSUMS: Firebase: fffddd0bab8677d07376538365faa93ff3889b39 FirebaseCore: ec566d917b2195fc2610aeb148dae99f57a788f9 @@ -64,9 +70,10 @@ SPEC CHECKSUMS: FirebaseInstallations: bf2ec8dbf36ff4c91af6b9a003d15855757680c1 GoogleDataTransport: cd9db2180fcecd8da1b561aea31e3e56cf834aa7 GoogleUtilities: e1d9ed4e544fc32a93e00e721400cbc3f377200d + mpp_sample: 07fdbc60934b60a9bbfb833df6298899fe345026 nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97 -PODFILE CHECKSUM: 2822d85bb609b66f886d949716d5f863dc426322 +PODFILE CHECKSUM: 441ae05d1695723ea9a68d3223ef8b6460bbec0f -COCOAPODS: 1.10.0 +COCOAPODS: 1.10.1 diff --git a/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist index a0008a7..94dee37 100644 --- a/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ macOS (iOS).xcscheme_^#shared#^_ orderHint - 3 + 1 macOS (macOS).xcscheme_^#shared#^_ orderHint - 2 + 0 diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index e7d3301a7fc020c123bac2e796ce5fcef46ed470..857437396295bc72f9192da8b42397de125b4b48 100644 GIT binary patch delta 15733 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 delta 20228 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 diff --git a/mpp-sample/mpp_sample.podspec b/mpp-sample/mpp_sample.podspec index 4c5a425..c0114f1 100644 --- a/mpp-sample/mpp_sample.podspec +++ b/mpp-sample/mpp_sample.podspec @@ -12,6 +12,10 @@ Pod::Spec.new do |spec| spec.libraries = "c++" spec.module_name = "#{spec.name}_umbrella" + + + + spec.pod_target_xcconfig = { 'KOTLIN_TARGET[sdk=iphonesimulator*]' => 'ios_x64', 'KOTLIN_TARGET[sdk=iphoneos*]' => 'ios_arm', @@ -39,4 +43,4 @@ Pod::Spec.new do |spec| SCRIPT } ] -end +end \ No newline at end of file From 4bcb4e24589acb8c1881c99ac1843afa52de687b Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 16 Aug 2021 02:31:14 +0900 Subject: [PATCH 14/34] Add macOS in Napier. --- napier/build.gradle.kts | 264 ++++------------------------------------ 1 file changed, 23 insertions(+), 241 deletions(-) diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 3f11875..ff10141 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -8,154 +8,29 @@ plugins { apply(from = rootProject.file("./gradle/publish.gradle.kts")) -enum class HostOs { - LINUX, WINDOWS, MAC -} - -val napierPrimaryDevelopmentOs: String? by project - -val primaryDevelopmentOs: HostOs = if (napierPrimaryDevelopmentOs != null) { - println("Selected dev OS: $napierPrimaryDevelopmentOs") - when (napierPrimaryDevelopmentOs) { - "linux" -> HostOs.LINUX - "windows" -> HostOs.WINDOWS - "mac" -> HostOs.MAC - else -> throw GradleException( - "Invalid development environment OS select: " + - "$napierPrimaryDevelopmentOs. Only linux, windows and mac are supported at the moment" - ) - } -} else { - HostOs.LINUX -} - val ideaActive = System.getProperty("idea.active") == "true" -fun getHostOsName(): HostOs { - val target = System.getProperty("os.name") - if (target == "Linux") return HostOs.LINUX - if (target.startsWith("Windows")) return HostOs.WINDOWS - if (target.startsWith("Mac")) return HostOs.MAC - throw GradleException("Unknown OS: $target") -} - kotlin { - val hostOs = getHostOsName() - println("Host os name $hostOs") - - if (ideaActive) { - when (hostOs) { - HostOs.LINUX -> linuxX64("native") - HostOs.MAC -> macosX64("native") - HostOs.WINDOWS -> mingwX64("native") - } - } - android { publishAllLibraryVariants() } -// ios { -// binaries { -// framework() -// } -// } js { browser() nodejs() } jvm() - if (hostOs == HostOs.LINUX) { - - linuxX64("linux") { - binaries { - staticLib { - } - } - } - - if (ideaActive.not()) { - linuxArm32Hfp { - binaries { - staticLib { - } - } - } - - linuxArm64 { - binaries { - staticLib { - } - } - } - } - } - - iosX64("ios") { + ios { binaries { - framework { - } - } - } - iosArm64("ios64Arm") { - binaries { - framework { - } - } - } - - iosArm32("ios32Arm") { - binaries { - framework { - } + framework() } } macosX64 { binaries { - framework { - } + framework() } } - tvos { - binaries { - framework { - } - } - } - if (ideaActive.not()) { - watchos { - binaries { - framework { - } - } - } - } - - watchosX86 { - binaries { - framework { - } - } - } - - mingwX64 { - binaries { - staticLib { - } - } - } - if (ideaActive.not()) { - mingwX86 { - binaries { - staticLib { - } - } - } - } - - println(targets.names) - sourceSets { val commonMain by getting { dependencies { @@ -178,36 +53,26 @@ kotlin { implementation(Dep.Test.jvm) } } -// val iosMain by getting { -// dependencies { -// } -// } -// val iosTest by getting { -// dependencies { -// } -// } - if (hostOs == primaryDevelopmentOs) { - val jsMain by getting { - dependencies { - implementation(Dep.Kotlin.js) - } + val jsMain by getting { + dependencies { + implementation(Dep.Kotlin.js) } - val jsTest by getting { - dependencies { - implementation(Dep.Test.js) - } + } + val jsTest by getting { + dependencies { + implementation(Dep.Test.js) } - val jvmMain by getting { - dependencies { - implementation(Dep.Kotlin.jvm) - } + } + val jvmMain by getting { + dependencies { + implementation(Dep.Kotlin.jvm) } - val jvmTest by getting { - dependencies { - implementation(Dep.Coroutines.core) - implementation(Dep.Test.jvm) - } + } + val jvmTest by getting { + dependencies { + implementation(Dep.Coroutines.core) + implementation(Dep.Test.jvm) } } @@ -234,53 +99,13 @@ kotlin { nativeTest } - if (hostOs == HostOs.LINUX) { - - val linuxMain by getting { - dependsOn(nativeMain) - } - val linuxTest by getting { - dependsOn(nativeTest) - } - - if (ideaActive.not()) { - - val linuxArm32HfpMain by getting { - dependsOn(nativeMain) - } - - val linuxArm32HfpTest by getting { - dependsOn(nativeTest) - } - - val linuxArm64Main by getting { - dependsOn(nativeMain) - } - - val linuxArm64Test by getting { - dependsOn(nativeTest) - } - } - } val iosMain by getting { - dependsOn(nativeMain) + dependencies { + } } val iosTest by getting { - dependsOn(nativeTest) - } - - val ios64ArmMain by getting { - dependsOn(nativeMain) - } - val ios64ArmTest by getting { - dependsOn(nativeTest) - } - - val ios32ArmMain by getting { - dependsOn(nativeMain) - } - val ios32ArmTest by getting { - dependsOn(nativeTest) + dependencies { + } } val macosX64Main by getting { @@ -289,49 +114,6 @@ kotlin { val macosX64Test by getting { dependsOn(nativeTest) } - - val tvosMain by getting { - dependsOn(nativeMain) - } - val tvosTest by getting { - dependsOn(nativeTest) - } - if (ideaActive.not()) { - val watchosMain by getting { - dependsOn(nativeMain) - } - - val watchosTest by getting { - dependsOn(nativeTest) - } - } - - val watchosX86Main by getting { - dependsOn(nativeMain) - } - - val watchosX86Test by getting { - dependsOn(nativeTest) - } - - val mingwX64Main by getting { - dependsOn(nativeMain) - } - - val mingwX64Test by getting { - dependsOn(nativeTest) - } - - if (ideaActive.not()) { - val mingwX86Main by getting { - dependsOn(nativeMain) - } - - val mingwX86Test by getting { - dependsOn(nativeTest) - } - } - } } From 3832682b445e36f97f31f712664586aa1a078652 Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 16 Aug 2021 20:36:06 +0900 Subject: [PATCH 15/34] Refactoring macOS. --- macOS/macOS.xcodeproj/project.pbxproj | 38 ------------------ .../xcschemes/xcschememanagement.plist | 4 +- .../UserInterfaceState.xcuserstate | Bin 37455 -> 69211 bytes 3 files changed, 2 insertions(+), 40 deletions(-) diff --git a/macOS/macOS.xcodeproj/project.pbxproj b/macOS/macOS.xcodeproj/project.pbxproj index 134be2c..63eb31c 100644 --- a/macOS/macOS.xcodeproj/project.pbxproj +++ b/macOS/macOS.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 3B773B1126C8DF80008123DC /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773B1026C8DF80008123DC /* Tests_iOS.swift */; }; - 3B773B1C26C8DF80008123DC /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773B1B26C8DF80008123DC /* Tests_macOS.swift */; }; 3B773B1E26C8DF80008123DC /* macOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF526C8DF7E008123DC /* macOSApp.swift */; }; 3B773B1F26C8DF80008123DC /* macOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF526C8DF7E008123DC /* macOSApp.swift */; }; 3B773B2026C8DF80008123DC /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B773AF626C8DF7E008123DC /* ContentView.swift */; }; @@ -41,16 +39,11 @@ 3B773AF626C8DF7E008123DC /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 3B773AF726C8DF7F008123DC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 3B773AFC26C8DF7F008123DC /* macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = macOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B773AFF26C8DF7F008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3B773B0426C8DF7F008123DC /* macOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = macOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3B773B0626C8DF7F008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3B773B0726C8DF80008123DC /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = ""; }; 3B773B0C26C8DF80008123DC /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B773B1026C8DF80008123DC /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = ""; }; - 3B773B1226C8DF80008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3B773B1726C8DF80008123DC /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B773B1B26C8DF80008123DC /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = ""; }; - 3B773B1D26C8DF80008123DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D10652CC9753C8B4B72C2429 /* Pods-macOS (macOS).release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS (macOS).release.xcconfig"; path = "Target Support Files/Pods-macOS (macOS)/Pods-macOS (macOS).release.xcconfig"; sourceTree = ""; }; F33B47CA8A29ADCBD3710DDB /* Pods_macOS__macOS_.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macOS__macOS_.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -101,10 +94,7 @@ isa = PBXGroup; children = ( 3B773AF426C8DF7E008123DC /* Shared */, - 3B773AFE26C8DF7F008123DC /* iOS */, 3B773B0526C8DF7F008123DC /* macOS */, - 3B773B0F26C8DF80008123DC /* Tests iOS */, - 3B773B1A26C8DF80008123DC /* Tests macOS */, 3B773AFD26C8DF7F008123DC /* Products */, 36D1861B74BDC2E58FF7D139 /* Pods */, ECD003D332C404557D385849 /* Frameworks */, @@ -132,14 +122,6 @@ name = Products; sourceTree = ""; }; - 3B773AFE26C8DF7F008123DC /* iOS */ = { - isa = PBXGroup; - children = ( - 3B773AFF26C8DF7F008123DC /* Info.plist */, - ); - path = iOS; - sourceTree = ""; - }; 3B773B0526C8DF7F008123DC /* macOS */ = { isa = PBXGroup; children = ( @@ -149,24 +131,6 @@ path = macOS; sourceTree = ""; }; - 3B773B0F26C8DF80008123DC /* Tests iOS */ = { - isa = PBXGroup; - children = ( - 3B773B1026C8DF80008123DC /* Tests_iOS.swift */, - 3B773B1226C8DF80008123DC /* Info.plist */, - ); - path = "Tests iOS"; - sourceTree = ""; - }; - 3B773B1A26C8DF80008123DC /* Tests macOS */ = { - isa = PBXGroup; - children = ( - 3B773B1B26C8DF80008123DC /* Tests_macOS.swift */, - 3B773B1D26C8DF80008123DC /* Info.plist */, - ); - path = "Tests macOS"; - sourceTree = ""; - }; ECD003D332C404557D385849 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -376,7 +340,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3B773B1126C8DF80008123DC /* Tests_iOS.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -384,7 +347,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3B773B1C26C8DF80008123DC /* Tests_macOS.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist index 94dee37..06f9974 100644 --- a/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/macOS/macOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ macOS (iOS).xcscheme_^#shared#^_ orderHint - 1 + 2 macOS (macOS).xcscheme_^#shared#^_ orderHint - 0 + 3 diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index 857437396295bc72f9192da8b42397de125b4b48..72e2e2863dc17535eb8c61b8d6f5f95ddb9c9095 100644 GIT binary patch literal 69211 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

0=1{wXB#OZUbP>iZ$g=0A|)W|KH?{(qzr|9 z8MM?9@V7Bk11-BIq!P8a+AEMUdpTr%`h*D+O2g2$6N16j)s4Xko~lqVQcvLtb-{+} zP~(K!V5Qfm|4v_r_1ORwxsOzkMdS!_2X$O!N(;v#~zdAr2s18yGtEoFl z4XGt{q@Fa8qtqdcKFH`pj6Tlj6O6v0$;x=GDGVuz^qYu;8Vy!ZU#WEu5bb2-#f_mg z)%DF`f3R^yC?dvA)GdLO8A;Fs`a4HB9BT3hSA_L616qCSzf(t7dwpXJflACI(dG*{PD6|V$&Fj9($Us7C++81g9jbP+#pQc7Pke01vqdJt)`(Gx< zkYkAo0>{X4q>P+U5!NaUr*%!$wV+OdwGBs9MRX>JggRUuruJg=fnkn^Lyl*LuiIlZ z-$~>&lD?gsOim%Esw32q>ZtAHbaDncQys02QO80Hl}F^V%qZ$my{Jht8f~Uhy)IMw zwo9s)X)~7TLUkOJ$;i+pWGl+k7IG=Mj9gBxAXlp6)igC-ouFo@nLEigvYqVE{_Rq; z7`>a(dyN0@)#PcIv%aP#*Z_JmRm);3e6N%7Qh`p#-Xdaa4)Ts-wi$rh!rfojMLgud5rmse8K8P2?tW zGr5J_N^T>!lRLBru_wNNXyQ9JEIQ)pM(jdrI!XiwUU_NIMkU)qoMrvvCfI*1OYsdNY(N{7+mbOaqq zN72!A3>{0y(eX5mrqc;DgJ#k!I+0GIlj#&Xm1fgvbUK|uXVO`8Hl0J~QU}eUPU@m= znoIL&KK0OfbUrPhg|vuzX)#?uOQ?_fX(=tE<#Zvfpo{1c^hmmxE};Rslm_WCT1l&D zh%Toq=t^2mSJBn9hSt(LT2CA3QM8eUX%lUxYv@|Kj;^O0=tkN?kEX}aW2s6RJ&qnv zPoO8#P4pysGChT!N>8Jw(=+Iq^elQdJ%^r4&!gwl3+QHgA-#xROfR8Z=%w^BdO5v< zUP-soZFD=`L9e1a=`MOT-A%8d*V60g_4Ee1hu%nUqBql9=&kfNdON*?-bwGGd+FWu z9(pgmkKRuopbyfA=)?38`Y3&jK2D#YPtvF8)ASkoEPakXPhX%f(tY$L`Z9fmzDi%C zuhTc^oAfREHhqV_OW&jW>HG8p`XT*@eoQ~1pVH6h=kyEuCH;ziO~0Yv(gXB6`aS)D z{z!kKKht06uk<(iJN<+HN&ljM(|Q|H<}y6jpfF1MV7(I!B$WI@BE1sk&6Rnycoi z`Km{qr_NUk)IzmL^{U0{0<}c-seZLoEmO$I<;PHP>)g@)v(&6HmhsYwdy)`y}Ci&sJ5s_tH-Fvs;bJ= zFOEknd({U+3Gp!x$1f9`RWDgX7xh#BK2bR5_OAu zsd|}uxq5|qrMgw!rfyevs8^{w)m`e<>TdNK^;-2h^?LONb&qKiLKd3*dKdC>fzo@^ezp1~gf2e<|f2n_~|1e4zg^s{6$}?(W z)Xb>BsK}_qsLZIssD)80qc%qEjCNr(h0(5zc4M?Vqdgey$ta9gy&3JpXkSLb#_G@L z07eHgI*8H1jHWUQ#srLo!x$aT=mx8=qyHOGdhRSxr{m(&0*BZsEbiIqq&UcF$(6b zhtYYA&S$iM(LzRx81*t*%;*9}OBnSr>Swf+(K1HM8C}R|1*3}?J%Z6A8C}fi5=H}z zE@d>x=rTqt8LeV8#OQKHS1`Jg(P~ClF}j-38b)gwtz)#F(FR73VziObFr!V3HZ!`0 z(Y1`OV{|>E8yMZlXbYo9GkOf8$1L*bSdhs)*hd%Q)C zf`HF8-=`VF+$?Uk=C3YnZVE1gX@SPR9bV7T%wYYqkwOmQ_H2V&;>-s$Jriyu>D`(H z(ktxgkAQpv3L-mXBZM+XiN{gokJeTVatuk%k>_*<%G@QsxCH7u zNFdU(IUc{$>xwpiBXVRWPXKGcQ{XOvc67NH27G>Ri94Xf7$s^(cB2|w)k!2lsLC>r zyF6N?bseM_Vex~Idy4V`J~wtH5PpBGgKk9jjN}=P_CQ@^1G$j`1#Nl^iM*&XEKzvQH4ifehMY?{w37>%6xycib3R?swkneVY;QIo(CEh~luATx= z0D9+55Xh4dvmJqS6c-nGoDP(}fP10eU4&v1a1?u>YZp`)&37syWGBy+&*=aL=)G}e zf-He(N3t1h(K8TbWO9@;M}fx`sZ`WHM#^U+&*+2jlzU6&`#|+YrS&}In$uaXfN#F1 zxEOjfsBfrCkOK|S$iij>o6;Igo4k(cY>&P;Y0(ogTKDNok!M(Y=_cvbS0Ka0_828Dq9m})0_>eUF4)o!ZBXc;G7iGB52HxOCQHoEIqhAsZ7l=ySJmCwZ8=QpB$TeCv2I$vFJTVDz z)B*=Px+KqylLi-BQlA6<7ToEYFclg}URY2|y zhM$okS<7iu2E1lEYtsya?>FQdlq4aY&*!g*%|-r1+GMgAq18KZMPZJ&AS%EAAkUa2 z_#IXj&mmi4(-_J~ODw*-^JXMYln{eBd57nv&Tzy_A#XvB#0F`bMqH=o?Z}XkQ1G@4 z?R9&;D{?1Ro52kRMUJP)9mw~%z+ChcI`X30g71NBqmw4uzP{jlBUhq+G7^j9N~$sV ze#o1sYht_|=?s1#awaNigVX4L@mhmVJveQ!HRoJizZ*j{JNyHC{PMM zHRu^e6O~M)3H@1>X3L~95Hx0G%t&8Y!t^#MgAxx z9Tg)5hs=ENMS))pT&7^ugLg8o0J?j;e}`{ErtvW*n5g;OC1q}qQzIeNfxZB`Ho;Vn zx?TCT$T>X53GO_-@ZbXRmTOK?XMqQb6m9qo$PriYD2Fk+V9tz+JsOFJ#Nc)8c*;Ny z*jxs=+6vpfFybx-ZzozmnhkFdACJV{W7v?9B5$DB6GhvE1ifMeSOo!?pMaAsN^=U* zjEvD>bqC5l{`~f5O#JD{(=)~cIsu%v0e?kt6!t76=@BE*T)GLlKNl$m#8LS3p_xJK z{9bQCf*E!JQpQQJSEqC(5M6{saS|N$6BIgp(BJ{^1G}C6gdA)^mbmHxq0veYd5AXl z71S&6d03ps|yl8xgq9McJX<(h-j$9rD+>ybWAgrQiVK#?Swqn5uB z$>VCw=Pq_=?p0lc18!K&F$#MN(#Ex{(EKjg`*_?HCcKxVbrhSF3E67DX#A zS?9T@6>7PoqzGNV1&LyHKa$0j1_~c1S;YzR^bpd55`ws;n(7T&>{3e$&Y=rDiwut} zcIQBJ709TEN0D<}a!ycnXn{c1pqrI=6Wjg?WSnp?M$H3K>M_zaQhgek$I#+n5DIWF02knbX z6iWkJ6-`v&hgk@$rWm<=8F~A~^J)eyB&CnF2Hk5&H#&jN3j1Acv4mt|)0k*g{nSBXdTT_MRE+lf6&Vt0K$oFHM`BO@ z1L+c^B36o6rVP}-k$Pl&nXw08j|E!I4Dki>bHVO*_#F`*6Gfg;@jS+$Vi>8p-U2Yt zv_&w3$%ITpM?Bw0_5Bxod}AX7s3HYSo0%MrqKi~OEkPtSxobmv%r|e!OokL)#W@tDNr*JQRi1nm zU>g?3)(GQsWM~=FROB3!oU?-}o{nq-TCqW6N8}Myjv-I8kg~OqXkyU;{9I&8rICna zoZy19+ULoGWnbu>{sOmVX&Om5Bbm|Tm*c7R-t0GqTT?DlLOms+EYd7!oUSBI!-JfC zlX1p7drbvM)-Of|KJDlVfZy#XG_vePx*;*T$jT$cX@LF#qX=wJzb87;GL;}X2&j>7 zeV~ffO8h8gDn;VaF=9|xWgc84(Umra0YGIIyPXMYZXt4Yr+#hc2F#=}Tp<8n2xBZW z9f1T{aRg}O1hn-R7!0uDU?u>Di^B(VP*i3PPeCaR5k`@hApcn4U)PkTZTd)sh5MG4 z==kpk{i4C3Nmv@4q?m%q`8-9KTy(Y))gaOIs*rC;oAmUm^JCCJLanVp^3iR`Bi1aI zDVjatH43#Vc_JD-7$~0H3N+*lgUnQmm>l;cp$RAfDfY5{GLTHcsaq&c7UY8BpY&+3vLr5A15R5%tT<^ zwUe3`stYwnW=J}$%bio2r!^Q_hd2``K*eAnoz{7zh1pZU{e*KwfP?Y8RGU~th5k%L zn%1d2MO2QaM4VVQSQ0TZbPmE~9Rvo0I?$qU`XQpmO`xqrkn5vmBL9onDfVnEbUIX(=b2&MUYPqbl#nP1%=t77sGi+Bh zpGu6VIn$M$EtcNO+7dFTh&%}R0lnod$9T+Wt8YiJgGnMbSES9sPFWZ*jCT??dK;^<2F& zu`QETsL?JDB2??n)*NoCuT90>ps;DMF*UaacB{3tMC_S_0r`<+wb3DaaX~4#(Mx>^ zFpnclYw=1BV|dA&2>?$eDMkSdBhA4Tuq1-b;RLfS;PJt#3!124z2OU^7M?}+^u*Rk zWRG-8hp#X&-(3O0LN0^%1>|kjl8L;|01jKFpt@0*v=|_R`6Xl?(^0}s&?1niuL4Fm zBk0=nDzc63h|N=^%}>FKjPr?`-ax*o9r0=IXU+L;Xjgqs7B?e$8$nuizr+GZDhq}k zP=&?O2wKy7$k}R`NXiMy6FMD?GsRvHMgc{lo57D64Zkpba8NLqr9m%-4gf|^#MkYL z%zXkrXnjb)XorsxY*I%R6T?6_u!<5LJEqSNp~IF;%J$_!6OL4-7K{t7$=uSSL~G(3 zL}=B6lU8c6!v_`ETC;zL?5zfqM0Q_3dW_vgrO_oT(~rnBy`$>V$B;1vpbqc857CtY$CcF4ui;jnq%7-6(j20$hj3k z+tCnE@K!mG)M3QM7qw0eur3HTrL#Fq0E?Eg8)9U47Q-l|qtx$3O={$%C!)-47e(JP z54-i#ocdrD$qTF)f}pgKjy{OiYWR=qH3?{X6Kh&sLre5onENBtjLv0Dhl$c-O#RHYQ9nrcPf=I185bU&XXsoY<*`PKZkFZAOHCnj}eR)22kufNnha*T) zV!2v@U?&8X3br3D2JJ(R*IOB$xr zN|efjjd;XBYH@u{btUXf*F_RLD%3_k#A4u7vLF!YxzV1Ifl#e8gM^~1+q$ExQPeG(sZ684jgAQ@j)TGu#Ov9)S)Jmt#SOQK*u^(Jw z0qn!D91jLWY``*4L+t#-c4;3QMNC6>=DT4R9V~+4-ZGp}B=|r2>`i{)=5hUj@YA*-k zM=(!`zBzLd;^iI&o>9Ccm*cj66~dj-RaI9pVdO#NC)ks zt*NxlbR`1252I3HB^l$e+~Dfb*1@9NM9s?)vbeL5(cY*9_hO6*bVVFFbD<`no0q`W zVcaxe3^vt>-s%1nMc36_i5s+XQGA4#xd!oEhn!nuH3Wi!K&j=!`gn8 zH-yNz1BGsXz8B2ZxbgZ_1n>0FACEvHRP0gtHN`)nu(x zLW>5D5g21W4^cX;1mg1ro=s5L-cp!28@ju#+TM)thtso)VezNXp&iIzH1)-ZwWPC6 zjjf>@&mcvSz-m}!Ho64rl&DqT)~vo1(`q#(X}@yg(lV;T@LYk#3Y7){ndtFoo6Z%O z&b&h@lV-7E?sYR;^Ae(Y1KqI5Z^YM|w;^t)m2X_LmZI+#mi*yZi!xX)Z#9Fu3Sm1f z#nBD{0sXjmsSTO{40DaBBDxw8TR96lu4t_SN{i+f!7d>vHHt|T?OH@T9McOH9^4RB zt;e6omdDLE9B%fs`LrPfh6LY)Xos#(N{ci!XpHCrt@&1j>hv%Z*Af~Oh6sbci%r4r z_*XfD{m7+JO}F=7RhhPnAC5*bs_b4wYqf|KCm(T6Q%x?)+zT~Nx}zi-!c#V9EUxIOlC$WhJoUgIip@#jxSSQBdLYM3J6H zr1nRt)=0kCs8R?K07l{VAxiuGIXVQ|9(C1Flm2V3Vj_1S`ueL>po<(Dbj8rOEHW16{ zkFB|xKRUcTYv{)Ow5=)f>A%Qx+;jx^3HDWPC^q*UcN=lI2-w?6=X?b!)bY`O!2Ud}RYUJ=w z#A{!XB;duFSz4iSA94U*#-?TeAX@tqrZ}|JU|m%zEJ+yaTAC)%P$8yH_oQgMsD1fx zC_&t+xWHi&CGA?Aok}9A2f*#>LsSHwa?(u@;TBFDvnAKFpi#pA0Y z2Y5kLI?O4Hv^_%+0TJwon18s41rAsN&({tINI>n1sM8M-RgY0ru|VyW=v^KREZA${DKONY&<~M{500drVA7@)@(R2; zV6-`$PVjg^;}pQ!Q`}w$VIZQHA1->#Ct+;Yir;c(jO9WqCgT0Ki9oG@S5Xi7gu)my zH4MQITT0_2qzuH7h&bgCvkTr&I36Wh*k zXskUN#hifXWrvu>X!kZ+Lpvohwk;GX3oR5ccz^=Hq{UaMw$SVw1>KYJk005Iec3e|S3+$6Z1pxaawY~?N zI-m;T54{Y;D#xgm83;PJ1JGz#JHX;pNsn98&cV|TQV4j89fosVn2l%?I*Ddv(#VPf znKQjUMA@_dNz$xf)qGhS}-_1Xvbnk)r1cb z9fyplty+Qj!ojDo91=b7P$)yVIfo4A@|1z32XZO`&?rXmu~30vIfo2Z=q~iap{8)& z0!-g<1=^^+BM~qAknzBZEk>VDQ#O- zGg6CuPG|xMWH7Q9Lc|4a3)vY&V*rjEoB;)oyos*H2`dr4%BaY7wpPCGozJZDr_9)&RO!-fgKgjd@_9M@f%5VGj-AYsis2c!uK z4aIG{f-I~>?0JWW4WYBRkpN6nZCc`l0WR7?8~#N#6nfCehX@CV;fVz<3P&Skl8zpg z*|^D68|9|8y2B5l&PG&_pdy~LgQ6c44-_TDH%0-EN5CZGL+3N7`zDOFvG|2pVH1LP zqyr9`TWzaNY`1}M3L@tJoAO6IQSi z6yF!BY;J@*soKaA9Oh73f@cP45hUn`)kHsLC|rQho__@m8v$T_1Sb2jy@tX?2)poK z!NO)D%)A?SKjKsuLdV>&;SIwdjN0CUsrde5set`kTn^_{MB}G~%Q1oC|5yTr^KqB6 zvE5kMis=8YS>r1SeC<)yz5}5<>fZ;Kn0RP#oH>gtjB4M7;2kOXLjx~^LBt4q6|O<- zS-!Q^%bVieD{b~F>SxIsVbr)o34~k|lBgwkJwnaxER-A0^MF(KG0qsa<=`v^-2_nw zoNyzeWwb@px92464bt?-T+?;pz_J$iDY@C&@jX!ogrneTt;})Y|6fe#Dt}u>62Q95W=-Q~-#27^3QRK>M!&x9_S!Zzru5f*B@`UOM|-*F%%n)!t)oz?*W7>?1UGD7nc9XJXFOsS_Q!*;!MZ*{NdTuTtacEdH)M zxahGd)ChF|Cn&W;0tK(EsfYXC@Y=L6kY=T4#L}A9HZ3C?j<#QoT-{D0zRE_pR<0PY z`-BuCwI`;CT@&k5>>>7yyn#U$Za)?Kiv72W{TO|j(O2N4JZF8wdT{B~Rl)xHl2BN? zyfUl_rZ`9(48m*NViRiG4sTM)V%R4M_r@714i$&BN^zt(D)OdmW5)Q@jH3lQqgLjKInedQ zxuS#7{fxf9O>~MbMn7Qm!~a;<6Fsr6*O5BVC8P*0K@`1=eiDDPqgW#PL_dMMn?7gs zGe$vCJOFC?-{0E_H$Yb1GiLpH{}>fgAufg+AjL)E5hC1B1zPA!M!(uFE)fIbQbxaK z^czOMg{q0%|5&D9vI$2F#r2fLiw&bU^K?}9MKM9qt6?QpLp7rZVwXXRHDVYpgA{AU zIRT-uS$> zbIBs))sVIS=_?^ScSB{z7f0%Kb{sc#t9U%4zsBy+5>LYMH~wU07=GJ5s24TVDR8l5 zN_X*8@ig&t@eJ`y@htId@f`77@jUT-@d9zPc%gWac(HhixJ863z4Vd8dj01g?Js3#UJzz_8T6850h-oG=`Pm$by2wu?IQg zk8OwJfI2#*U%VL^I@?0psSV<7$TB2$@MXsbZ;E#!dBWj#u|woNFwo&zZ ze+mf)Bqmwxb@?I(HpZ?76Q4!O-bpCqPIMPvK%yZ@h>WGR5;)c~ddZylQj%=y)_me* zLVOhorzhf~cRaGM1kYDZ98$~MKNCU;4{X8*TpwlnGA1>?~?Sb;yaA% zvQ>PKaa~~~h`Ul+{0OgL9661&=j>blCB z=Bm*D;VmCgDn5Ot236Qt8?2eI4h|NZGU>l6>;H{;j%d+lbSC|8snUO~-gI5DLO<3n zRF#Hvw*MkU(V+Xp5;R<-9o8%lqt>nouK%AO(f)Napu&T);NTuD%lcq#%}C?Sfmxc> zkgoS^bnhEBZMxoPObCq`cC!|p6y?}A+i{-rdH2xu}!Hr3bHRIY>z|H88>>ub}suhXlV(xdOw zwYCO-bg;Q5>P!1n{EnpW7C#d|7rzj{6u%O`7QYd{6%R138{@h&t_S0KGOicnz`*Up zxW0_*w_E(4j1Yf>e?N=Ah`++$-x=3mwKHz8_J1nlMlo)*_B=-OC-sZTm+m}E4~J^N z=L}A3m|3*_a%KJ6!s@zeFo|HMko0R5RVVgCI8qIK!AWU6b!)1_)o>d&_{rL$KnJdG zZgQ_{3e|=23S*eQwnfn#o|*?by?*&}xEeYcQaFyP27LYP70J=uw6eYt5^7swoHFFr z*HpntCz?}362K88f&X9tID+&y3TfFPStKj|Fm52@21S0;`%_qoRf( zjW%Sf1dTS7aU)?K>7Oxrj=cLoTRTRyd{m?hRYAb=Jp}le9;A5pU1Rp1jXWUrE zjY|YCT@Gb$4QsGYlBR*fR+=nLk)}%7j7wwO1jc1DZsHDUx->(YDa~TsWX8>8++4}eA-a@;x7(%jRW)6ynQo1B^En3g#)%`w%L;mDmd zWy-Y4ljA0NQl1V3UiH>M?n#cUiMbQgvZhVVOq-PL%t*`5%y6XTPIOLmxihjRxh77F z2P)8kvf2XWWM)mtoHR8p)0s0hZIUY+a+K?Er{%h)W#{H(X1XRh5^}Ua2ZC8|s~kBhBfU?40PH;+QryBg?2=zf=ZuTd9(y*2koar7f{MT*^3iG!Iu`9qAwfY!3wfP%6L#_Ir5mI@(v6JsFm68M3K{3!A>Az9BHb$8#<&HH1Id9J zy%3U*?@)X7elQQBoeptnz_&8k7^>1I=@1c_t{DXJ(D&=m1rTq2c+h|fnm2@Nm~GJ? z(b0dP{m6RwaIvz-@L!%tQzw zG({-O`a0mS`w!?wK}4)%o1CJV1acS6Bv`RcHp#pO1%R#545nUkD#)VTTka$GmHWy4 zc2r2WurA6vJ)gx&SBh| zt+I=8Yda~4a=tuYvsLAJnytDH%t^UWvsKr(m7T7p9!7#Ca;YwJptHaX-Pj?Y!E}VY zoTOhPA1N=Em&gHmsT`D-$(3@I3?uB(j5~&L$1+Z39An&Zj60rjCot|r#%;PrUJ((z z)pCtoi)v5?fjlWDdZ#e%OvasMXu=EruamyfU~}pE3(mV-1H%-YnHq95udA-9hQ$m0 z8*O^^zcjCsk48a-7CSjAs0;)ZSI+UDv1Wdc_He%;04K|*qL@N!ow`*98w~#M)Ram- zOFmZ@({nU2Jsnlt`I?G5qpg^x{4`8gkc1csUm{-)VF~gU`BM2Z#+}VLz&Urjd<6*7 zR>qyD4WH+0LepQH+ea!noL*dA2Qg=nk1*j({MHA(8*PT1dWgY+`DnMquNT$V*A@?( z(@I_Mmao&h&b34*5>`E_ttfH{&j1+{KK$gmGIK z2PP#H?{dan!MH1T%lAfl&4Uqj{V3zM#`?@vaq9Y-|LZzTTR+ABfOkQD5qrTt#%+uC zf>%&ozbe0mKaAVXxE+z-psr0RiqW3$%KNb=yvMkmTjlo|2dceuJ>g^dGrcE#s`Z4c zQF^}6dcy9uJ)tWdWF+{l{Jk!9V9n?r|^W!s~f>M4nx;XiNcfx8>@qL z;GjxCGs2Ldlk1cYxOlC)34CwOjer|@si&M9tgWtr7{i|NiJ`)-K{K>XCSdYW*%)dH zEsFUm%k;-m?GHp8Rjp~N(h8MUgO`A&fnTzr85T~bYadtEhnvcDXJ+xD!eC`Bxcsum zXBw?BMo9zZr;Js`Dd04Eh;a`y?vd?Ex-vn@U>qm~kUxmOgt4=9{Cd9T+FBTD^k(;kR-oGo>a9;37Hl4J$(DSm8)=NR|A-U`F!Mh341sij&_fl(7jD1l@EOO>Dk za|lpEFEI|{Lhl>4K>x_ri_f2DaV`4f~YJU4o+lr09OphI|(6nqR~IRslH+1@cLyK z79H+J=%yZS#WLs^VU<${ zseFa6xw0}8stQ%T)U%hpcfWyHg4Ln*;YIK_lC5oh`l=??ysiHLRZ#n?J<5uFx!?@| zN(hv$Z+vCQ&|$;vBSwxIJqEtgClT=rO&c-}=`# zgks-7*uAi?u*h4yNN+G)t68W&hOqTwk@nlX3!s+uP%z-|`CA9~`$`uWk^LZ1dRehf zwW0vW!V1mXiB%A**lmjzBzX(eM=p*u`nDq%yb@R%TxPF?g}N1xLOH5<$Qr7_`a0Bj z+6RyeUqi4G^*(&3ZJE)8MSGc(L7W+>nJK*5PaXJj^{UnOn%a4FesHe3@Rk~<6L7V` zAVpUDs{_1UyIx92*GqAki38cGt!rw8`&B9yRxC;t-zF024Q}Cd(j{0KZopesQM@4Z zBBYC1{O_M%B@{ouq^)Shf76L)GsMnR0^I}fv%V@^SxX3=Nr=?1vZ1kw5P2cIAGWrs z0iRpoxyNeQLj})g1C2Gp3$MvwW2<`}Y{E#*3&Nn0nw6fF3X68=3PY0r?0>a2&6sce zZ!r8=!>fJs;cq(R|AeZb3!kUM^Uak(w-27P;rXjI)n!HSJeLq|ctcZ82|Uk(=c?w_ zr4D!=56?F&Z_F))=h^W5=E~-Le4a!I-)F;0e>pt&gXebcXz65E;5@NDfg2xuBt`7%}0qc}-nS5vDa4o}UPXwerGeL26p* z&xiL}@a%7D^dm3iN7%HyI@bfwx$u0=%Eo+r59JjOG}LHv26ZB)2OHga@E+-zHLb6|bvkr1t3!k0vwi&)#0nhQNWPv1Qkzy^kdLHn5Oy%=P zD)qoorKP3wVLA1@IU&z=WCMJMdDF^n>TSv}O@yBrrUKI}Q-+pWBT%d-Y1;dl+B+lF zSjn+$pGQ+Y3i29X`uG|%YWYE^uO>jQffCk5>L(1j`4jTJI>H^RO)bT<`!$blXxMz_ z0?(42kY6bIagBlM%ID8I@OaBTeMsu7r$6u{Nxd%Rt|zqeV9lhyV!HFlm#mMsbkM4? z)->{#*s9)mxzQx4s*T)0TIPM`7tHUPUnZ&W_apNw=Fi~iE%V#(?~Q1FVr_sjRSoZT znb4)JlJXiQN}&U4rbhd=7HR`qDx|ej9`FUBe#20E%^-K!)@dLC@okYPA&3_LJxYY0 z`U=3+KgA@zQhS3Eg6X5Qw5^{*=^=6bV|m@#{TdpU>}>fX)S$N?wq59?qMwV%apN;? z%=ju}N5*v-KV-bC)q>W38Lwr0o$*S>R`}*i{yhFR{$BnrelPzFNrg{)`3L#Cw5RL% zd*I(qQNF|;q1SO@k3jjXjPw93eN#jR1Z^9Bd7wH|lUzq-V#=D%N$)c|JDj=7Jq+$71LhCnbS}qtVZ|gFqCX^C2V0C;yqc-TtdP=$uG14^Z zRcqk{4O$8*Rg<-lk4C6h)DCr^dr}i3Fdgny_9^*Ty3&4F)cn_Q-B z)RFO}g`DVhi`p`IN#lDV*cwf6;W3O+1oz1`RkR_12mC%-r zP`53Fkxk?@ayGeuTtcn@hv;r{1G$;pLGB?BlE=u?0mm7j-y#Lo6e?gT0l!^1zk#4&^p>oTj=rhG*L76hRe$i-BUmkME(uu(W&xJ=k1JRrO%d?@@Rim=adoH$GLib1hS+yvW& zt`qMU_lX~ize3Q?U@1$=l@>{L(s9ye=^E)iSVsL+`a@2UN66DMn@Qyw& ze=Pq2j-*k_ESP1lQkZg)a)a`y^0xAW#bOz1nPypFskW$=i!3)eZcyL^#_~HHqtiNw#e3GJJYt?_OR_;+pqTS_H?_)US&VlzQumKeV_fC zE^?O|WXZ`0hKpKid7{9zu^%Jv=>D^*F7^ z^*x^JaiC|no|Af(^<39;OV4|I?(fC-8rjR!tESgky>9OHYOmjW5A5ye9qN5b?;CpW z>-|fg{(a{53H3R(&z?T7^!dGSYF~HX)qT(Ddq>}Q`kDHT?YE%c+J2Y!d$iwI{d@GE z(Z90)sr_&6|K5byJn*YQy#~!4v}(}#gYFyj z`QYw@XAiC(eE#732Y->;Gu4q=lX_9=BdG_53>cC>qF~XSaF{{U1Hs*z~+}O!uSB~8>_W5z#xGCeR$6Yq= z#qs9x)5h10-!}fWG;5k8ZB5#>Y44}^N-s!1F8z-5Zzc?%uxP?L6CR)NcgEz58W`W+ z%IuaoFY~y}y_w%mMg9Xs*PiQi2cHz_pf@=32x?moG2@=22)n*7(4 zsZ$!K+%VDd^lxXR%~(C- zni-$X95pjEbH~gNXAPYdoV9h<{@JOsm(IR&_Wn6T<^<<#oAbfkVRNhI?wtFnV~k^! z<2uJTIT<;PIk)Bf;+*b0+WCNscjdWGbv@_q<}P(#;(j-GXzq&KYjY3eP0rhx_dvcm ze}4Ws`LB5fdMZ7;JqPAZopReV(O-3x>T#S6A9_@pGWq^0C>Uw61@`x@WR{v7{V{4X014H#pf&MtlYfvt7>QUCDq@p%3pQGs$W)nSMOT=PfdBvo?5AP zY3*Hg-Rf4?JyJiYeqH^G4dWU%HS9lX`cW4gb)a#6$EkjyZ%lk(=j^26@r~G|t)u~UNmT}tV)BZfY^7N<9$UNhsGyXYq`I*n1HRY_!&lb+E zJNwmh=A3i&xn0lQaPEia6`ptd`Kjlhdj5|W1TJ`T^Q6sJT&P^weBu6!3NE_y;^7yc zees`{ti0rvEje5ETsq*=Q!f4GvZ~AWT|W2n8?G35#c5aker5HQuW!xUdi%DK+cs|( zwy)X#$&Ruek6)F2)$X1BcAmELuU&P!_Fr9c^&`8d?%sXPfNRdWmb6#nSXk5Bl-_Q~c?2Y+i;ur-`0|ghHhtao>r1~G{mrf4 z&i(e80}Bs){9WUB|9pS?4}E{w_2Z-;ANr~Ir+0s@{rQhyPW`p-uUG$;{oCWem;e6h zA8Y><|Gen0F@Np-d;Z^V|5N+VKj0rasxiUqvn{+J;WJP)uQB|E+nN`^=XKy_2G>y3 zsaBW)M4X`6VBR`PeDNj>qZ<7xfHOR^e*G}Yn!`ayEpFd?%3mxPR)Z7LB4=!RL4k2rw}y^jG788&K|3 z&H`Wj*~&Q}Z|P0&7Ixr=9M>)R3*s=|(`)NI<$S$jLfe${$l@jb`YQ0m1)IR$ot~AQ z@`b+sauKXtl5Q#w3ztUyU8=w$x%P6a0t?6=L1pN)+hAk3PPl}e1ADr$1UiKiYVQNtx zDE1JoZ-`eY$^Z};%ZSH|peufMJXqp)j*RTw+)2}>rMa@FLTvN2iMeTxOouBiCu?HX zVLwCAvUNTtZR;97&|}MizL-2TK8j!*xSKh&0SA?*?yn zJww4QM6OOKtPB*hB;j9xl(tw}nt?mQGHe6ngz!8FzM)~^Pzihj9-g5PCT&VOph*7@ z+@5KbmmUxXx4ERd!8OdE>#*VVIkRMzX1s3Kga&i_fe~1G>;aDlubg$nE;rB61il0$ zVUD0s0>2PAl>`!~^T9#$RRTkpGC!i=oG=sIQwoaUPgJ=oe1s3W8dKl4!f^G})m*r~N}wWM_$x@M4|fi4B!Fa~wL(o-%M7CP)l79D zvR*?=TUmFdrn<7l3Joob722j68Y@h|?+taQqr+!+W3wupw>7n~008Gt+MEJ_d(zM3G&9i5h1lg>(Az0Y}#b_h#ZZ{9RheT$`eAQ|52Ve9GT8R{A6 z?pds>KjTSiHZ)RQwVHIl{L=@>Hcmj-?w}Pd>24fdCvES?{9uV{zd$Y`DOTJ`IY$9K|L|&_X5=-Y9LyWv zBbSg{$Q_>cF{6&Se58#~5Qt0Ym=+d&)KQ4WqCTefQwOMn)F;#->M(VL3WDu5!T&qK z|Ayd)n3=Z(Kg7(uBl!O!_}`zT$WotC$Ef4f3F;*EIf#&#q^$UxKy(R2k3b9w#E3v3 z?`9E!m~zz+VW1*1z|0z6JnhYkMIbNDd|e&t2{K?lT-p*2VSwTAPG@^xk8mGgL2%77 zFf5qsnVl^*QLEwDa1`i{4 z>QPV;R1`8OP#k5TOq4|+a|mQEfd~?aP${|q6+^|*1q1?*ff5KtejpV_h6NW_j4PQ< zqDbE^2o4z5de^YDswm`Si39&6)r?JK zcn8D)g?feoUj_vCpg;l*e zn9A77%UThpG=ajv{K6*g?w@xT8jxVJsZ9%|7JX^8QU%I_~wATm*P_fDX$MsjkSF1_%`yn@rCe3gE1nJ z?-1W%zD&LfzDs;ne7E^(`MUUe`Cjnz@l*Nd@r&?FfHPwWm?F&hH}Ko?Z{c_1-^Cxp zpTd8D{}4#}GX9JFH~4Sz|IC&19bkxfiy(*~I5cR82uOP^#1Jt-%n(atJK~RoBT+~U zl7OTjN0AETJUBY9BUMNpau;bqdXQdZ5E=Q077+RmE#Pm@}hFRqQeIK|0J&=sgQnHTwm<#!0X?XU}9W4cvc8vsFP`vBpnp*{QcgDy#n zM3~N0cRRLj-l3^JTaL^9HiHfk=sl}l@0gY zqD?F$!ZS2#69hxLm`r_w0Du#85=oM$o4bZZ*#%h!g6sfu zi48d%?rCcqcVuLIDVh5&!u_@xR2~RIbLWaH-Z{j?HQe2YR1@sL7s#z`2Qac8ZKxf( z1>K6;qYfbZ98o7h5sDq^jJi0w2D(FXIgG`T+oTea^K>F();zeQbmHFT z4uwFZ2}Dvb0hAul-WIn&i#t(Q)D3l~*v)A}LF_X@WFP;f6a*mti@r9a(oOG|2s8>pQPJIKB)W${mJ*08fh;Ql zU2!i8`XgwGa-KW`>S7Xl zgraf=O-57DRCFJ@AN?9VfPRA>L=U0gqK64Yo?8;(yiC>WMzfWu36c%9ebjF_EnwHm!iwpv3VtJoA-a#>-IOK=}~V_-nk)RK|{ zWok{PE7qdFkQ}=XttXJx1Y%N50*H`10)EIgm@{px_jL95^e}-G0e_g3MGm$zcStTy zE>dXFu1_ek5e1CCGiVdqjJBYyXdBv&cA%YT7ut5NiV2cn0kSUjG>FM+eYB^a(ly-$u}A)CWB~oIWZ&O*gYATy71^X&?n)98;(-vo@!X&qy%Q z^QKN_+>-~_xGxjT>vFnTZgf1@s6ISgxlBJ8NfxBXAy7n-G7nS2lra@d6;s31F%3+UJW)+Uxf){K!ORxoj^hfB!WQP2qXwz6E`Cvc{>o;HMxYm zW@oJ_GqRGmwAz%IGE4_siRof`m_C7c5QsN{_!5Xef$SpPG?)>#3ZB%MQi_>4&5mFT zcWeaW$)#Q|$U7w?*r#+aGhYvoqP}51>s=#2p91l*e21Pqm(gP8m<6bIuspMxGEW_v zA~WC6Vr&hmW&Fo7)5Ef)RA43q;zNo>#Op(aX}W|pIdB5;k0_KA4z;2&*|@;sV}1BWOUPau&WaKc1vADn!! zBrF+A!BPnX)Y&Kki6)S}rPzM#YwQ5_4S~cENH>AJA&_hyyXA2?(&yyLvk1Z*@~*7~ z^BX7>!1Y0TZzJj0$~Vvh?1~>qtZAm0j%9&LfMsBr1QJUiam83R2C5|tFo@fY2+6Zn zhfOufW$UnkriC5pZz9+{dA_m5Ucl{0-zBN!sf2O;DIc!~h)>wX z;hwWj2GEKExfbv#cJ|NmvLD?g`ym~wfJjE}lNo&s0RI1VT%RvL|C4sNO}DVc7I17N zroYYfG0PhXB$+_ICXfRJLU2D9a(@Gy!A1fp_*i;e!Y=cq2V~77`v@d)mZ|ey=dH;N zN=z|UiB%Cu5`m`n&7*jHjG1*VU%}jCZS{`dm<*`PtxwILaF(k-TJ@zZbj^N)! zAo~+2Ji2MX8b43K#TdNp2Pj&(pF zWf#_sJ;ZvjM+5?daF9R_5y-a$0%xQn1d>J|=>(E-66@ootYd?`lyz)`Kr%t7^VC}; zXEtRW$>VPA|3$kAgJaYG0AU1s1%V&fZv+Au89cNb>UIb!B`pJ5qK-x^dykq*z&tsrwQ*20Olc%?9SVY(?EE0FW z)5K{KAed(~%@3GkF-?-(@SnZ+Sw={cqAj9H(-zaDu=DU)O7I+Zkw8iaAr^NY>%UWgT?{Qp5cWtOKsVsnqfl)=@z_ zG0Qq?3FPLdtm7=nI?mC~(}3D;5y))<`FWOgU>~23rcXSdXA{?XY~s%6*u*s+n^?zX z6VvnaGwlJW0JJ-_T3Q{gp7smvF6|!eSK567sV9(M2;?q-+#`@*2?VY@Adm(EX*@~e zhSdQFXrXSVwZY#G0%@A%1T7?10@A@{1Ar3&2Cx5B0se<70Bw+@?I#4%JVVQU zcsIS46SU_fZBG(NE1UL$Kma4+%V_&G?GI7`_?=V$+PMka(W(CE6gtAC zEjq;YC=f^&Nm~fF4xC{BsW))-WV#R>%ji@Bc}Tt=h)$!-qtog0z+esOTo4Qv{?WmT zJOvR5*fW3sSGt5O9|mU3rAy-v=@MoRlvq!$NcST@d`g#eN&3QBx*Q~s-cRU~E(3H) z2WScUG6Lx%kjDhl|9?l9baftG4tyzH()H+OK$moVx&hsgZbV-Nxs9voCUjE*86uEj z0s*c2DS?a<2!}wP5y%*UjGv^N^JFyLlBb%}HxS6gEL}oqtmm|N{_TJ1^8W_>kM0O` zNp~U;@}*_G9qs&I=@OFAynrt0upM8p>D~ka;mBV^mvn!6AXnzncX4IztN%z~(^MHw zkK|G1ZZ1{6{*RToiZ(r#9>?=aeMEm;!$vVZp47BSm*uB7!4xoU_SnI@J3WX*I%#U5 zC()DXDReNkfD!vo0(nOuf0fer)4#?v>2Sh)PY58S0Ym`a7FOv%+ImTCnAh2iiF?L^ z?!>bRlU@Tyu0@zEJl$V9J%{WsgPuvxqGuDx--G~#5a1&O_(4+zZPk<_OUffqPWk$Q zBDkI$E{YWCc_SO*I$msDBe^g^VD}RL_%0Wpb;_*_E{2b8a;pOn(=3b$)MtHEgxfl4 zQJEfZF})OQ`}7h*K!8mzBLu$U4(VTP`}C7w+ozwRpC$z65CTH87A^W&`i0Nf+UY;c zeMSF~5SU9ovH*ZjFPoWM8RG~Z^w9J`uF)$$*FqIVmR>^$P+_hFP-tLw#-W7RuDu!dA{F^aYTut^%3sI&@v&@FtL@ZUNcqR`ktuC&*V#p|fGJzoVa{U!Ygf z@6qqm8z6tRh2BQ*pg*Ax(?{uJ^hx?l`fK_h^A^q1pXWAj|GX3Pex27QG9)r0GAi;+ zWL#uYpMwkHR2;+UxG*k)GjJBZ02jw4aVcCHUxF{i zm*LBC1zZVN!PRgLTnpF6SK@lO0d9mF<0iNnZh^1G*Wv4NYkU)Ki`(H_aR=N9-;TTB zJ8?JM1NXvxa6dc%55$Ad03;Y%S8h?Yo#oyuY859OTLjbaM1sPNZ z#-KBV86pe@gT+|D5NAj-q!`kSC5)wvWsKzv1%?tsg`vjKU}!P487moj3h zFk@IS)-u*H)-$Xbn;5nXJH}Rq1H*~2o#DdR$#7$MFuWK(kP95Z2xJ5^LK)$V-Hbhq zXhsYpjzKVz8T%Lq7>5`~7#WOgMlK_tahy@iC}W&poMxP5e9ySZxXif5xWTAq++y5e z)HCie9x$31t&9#vH{%iGF=LQ1%ot^iF(w%=8Lt_CFy1l#X7V$?VhTdW7M(et$zX~y z#hD8sZ%c-`j497lVyZGV$Q&-FKGTS~nrX&d!(7MQz}&>#3>nIf%($UMwUXJ#>vLN0S5lg%t;RxnR7zhj-dn-eulrHZoh7?aVG_53`Rsz#L*eWjYj$$Zb^V+pY4vZyQ? zOPGbTSS&G?Bx@0C2}_o>oTbQ8VX3pUSUM~{mLbcSWy-REtm*ZvjVxQ%7M25R8_R{| z%JN`&v;0`QSi!6?)^1i5D~1)%N@S(5_OrfWealK?WwLTu$5;idB322joOP0QhINj0 zg>{p4n>ECm5akmU6rC?BE-ERiC2ABrD4s2TT%0Z5D*i~kPXZ?sT_mg}>?Ir}4oYN6atdMMy?3V0VxM<<>g$fJZ7X~a0T$r=4Xkqcfx`mAk zo27)LM5Gu}MpA2}ET!V5_Dda*s*5K9f6)b97)Vt`h zw3M`*w7j&Pw6pXM>4VZ)(mB%I(u2}Ni&Yn|T&%a)X|ela&&3B8XDrTId~NZq#Xm28 zy7_vZQUvA2R$h0y1(kYBCx!jxugC9x{Z? z0hxm`XJszST$P!Sc_Z_7spL}GrE-u#zICa?(v+p&EG;w~SxH%0 zSvgrtSzB2<*}byKvZ=D)$zGDZBKt^oSoY~M$z>2{yKM8a?aN%2eZ4GwS?02zm)&31 zupCK?#R{2J(K%Q?)T+#%hi@^EcaU;wmf2a zF65+_F2A?Db$L5vrq7d~FRvwUD8EYHPd-dOLjHUCYx39SU&_Cef3KjcV4`5A5UY@? zuwS7{p-$l!MFB;c;ygtyMMK3^ie8FAiXn=J6^|+&Q@pBpQ}MQ9zamF*Oo^@}swAeQ zsbrvJq~xU(q!gl*p_H#ws8p#`t5mP_Qt6%2du3&1ZRM59JCuEt{ge+XXDR0>|D=3d z`Hu34@^j^vDncqEDhw566>XK3Dy}MiDgi3VDu+}KtCXvpQ~6${L8VirTje*E_o@`t z<*MqcnyTwnx2W2y?olOFlT>f0-chYnolt$F`c`d`+Hy4owT)^HYEEi#YWvi_Ry(Ek zgW8X357au;y3}5){jJWYE~~DhuBN_TeT%xi`W|&cJxTq7`cLXN)H&*})L&~X*MM{% zjU5_38h#q-kZWI{abKfdqf_Ix#^0KJno620G<7tcG~G2lHB&Ud)jXnEsadO8uQ{gq zTJw$80#5cYtye3=SIDf8U174q3NrPBS46GY zyP|Z(cPq}V=v>jiVo+O1TSS|oZKSiFw?qm!wVty8U2uX9)DrOrE@_bX*qDy>vmX}8jO<&Kra$^($|e|Kfe z$~Il5u9U8{?nYe)T_@dC-NU+Ry61JT>i(qrM0Z?wQV-XY)RWRP)U(iAs~4%4pqHpu zs8^wPQtyu51HDGQ-}K(=Q}mbUD*{%4gTAZ2yMB~@qJFaeRsEa#xAmXvztw+dAa9^y zpk?4-;A-G*@U20PL9W3KgF6Ow1``Hv4Bi?_7%nwjW@v3_Z|G?y{n{F$*q!K<+&fxrVux`A&0RbAR)r=4|s4^B(gd^AQVC3u!<)@UYlr z5oGbb#WjoT7B4N{S-fAPutpP*4+7RitchH6dd#*6vvw zz4px7AJ<-9`=_OVZH{LtBY1Itp2q6YrVmG^Yv@i6YCGGKe)bU{m}Z64XXi3Vf}`a z8!l|PxZ%}?zc&1Bt!ZswZDbv5ooc<`y3@MfdT^ua#+4iOHtye;1}F=?8%H*dZc^B! zxoO2FV$*?52RGf>^k7q?4a;Vc&0-rrn=qRQn`)bSo4dBcwqmvtwyw5*wgI;1ZLiw? zv>DsX+$_4;b93P4;LTSy*KEFJ$Ff^wx7g0hF32v#?uuQF-K{O6Tco!v*%G)Va!b^f zn_KQ~`E@IOtLRp-t7_{q|k<1NKiGWF1r-)Epum z5*!j8ZaCa=sB@Hbly#JI^l=Pv40CL8>~ZXMGH^0?TH}=IRN!>niR1Lj>Gd|lZ5G?s zZu@3i=C|qSNp(5wlIGIv^3dhcj)gmx?O49UeMi8Kz#SKN+}KgIlYb|=leW`x zr|nL=odr9~cb?e!a_769?_F(Nom{uOR=A#bz2Nqh8{JLVZJV2io0r>Jx65u<-Trc) z<1XmF%^hC7>i(VkCHE`te|gOD5cII}u=CjJan|Fq$5l_dr>LhGyelsf5JvBLwtBXE zNqNb6$$N!+#d^hiUHAIgtJYi4d%idBZR@?w+u8fP_f_woe3(8`KGHs+K6`y)eQx{w z>hr)?(09Hs?z_QvtFMFaY2S;!m;C1WE$|cf3-pWhi}Gvm>-6jPm-SciSMv|^kMWQ5 zKkt9l|0n+m|2O_`1JnX^1M~x;1Cjz#0@?%m0{V9?*`>Hkc~|(Z*j@3vZtc3a>wchc zpjexj4YLb7 z9(E$^RM?BKKg0eCUmI={zB#-k{7m@S@V602#8(kJBYY$LBWfakiMY3W(eCBD6?RAO zPTHNayM1@x?*2&4NP|eD$hgRTkzYsNi)@W--$UJl?_ut-+GDq8>z+ez6ZSRe} z5BI*0nHwV*gT~B@k&IawBLyfPDlvvJ#xbTb7BQAF>ti;?*v7cVc*J*o&61OF~B)TSgBzh3h<1(l4b~rQb~d zIlV5uF}*9jC%rFyAblwPX*wr;EPXuv&-C{hd>H~6b2F$Jav53~x)}x;t1`?o)?};$ zoEFCnpA7$u@QkR8#Ej&Ow2bVG+>HDTc1CGNMaHR&^BGkc_cB^DIx@O59%Vev7|j^V zn9O*Y@jBy=%sH8Ynbb^Lrb*_;OqbG_$m`bhEZ(xn#L!d1QHK#bh1M%FW8pD$F{bRh(6pbs_6cR%cds)}yT9te07D zvIVkf*~_w(vn{f>XZvOcWCvx3W=CZ2$tJRsv-f2m$UdH3oL!n-mVF}oboQ0(YuPul zf64weyCJ(dyDhsjyFdF$_DD7-hmwQje3dgNM<@r&S)F5@W0PZ-W1r)cZ>Jj{8T!^s)T znLMg<)al%C!Du1PdZN~Z&{vvo>HD=-qyTrc`kXbd0u(Gc>#Gr zd2x9}-hsSt^1jW>$t%q}nRh1dT;9dJ%X!!GZsgs|>&$zWH<9-u@3*`+d4J};&*#e* z$e)`pp1&}EQT~#A+5F}Ciuo$}>iJsvI{9|_Vfi`vSMz%ckOH{^ivrJrz=Dv1@Pf#K zgo3XN4i+3PNH54LI9hP5prYVZ!FL7c3w|iLRM1?|SMa1@q<~W}S@5#pb-^Enf`w?| zg2IJ`(uFdG%L^3?RSMMs<7Y#mTcKy6PoaNdU|~pMcwuB=bYW~^LSa_n(ZXYe1%*Y0 zC57dMCkxLMo-4di_+w#H;q&9n<2uK;9Vd>TIo@!5qKIB3S|nbyut>T{zDT2JMbXM4 z{UW2H)kW4tHbr(t_C-!b&PCBh`-%=09WF{Q$|*WlR8Uk@bgt<8qH9I9MfZyui&~1> ziyjp{E*dNvE*fPEvgOzYY(usMdo$aCy^Za{c4vFBec1u*z3lz$Ja!?Q%`RnEuurkS zW1naLz`n$;XWwJrXE(B2*zN2tb`QIcJ-{9+Mv9jdTNL{gA1uC5+*bTs38Q3TiFAof z$+8mFl9eU;B}OHyOUz2vlvtKnl{l1aD{(1tE%7MvE=ev)E6Fa&Ey*uomz0)Nl$3=Oyn;`AP*!=ay1SX{8dS@}=6PR;AXZHl=o@_N7jx z&ZRp`-AlbneM{p?iPGfK)Y7j@50)M-O)t$VJz9FKw4k)2w6e6mw7>MXGOTQInRc0V znRi)eSyWkkS!vnnvNL6u%Wjw5ExTXVSk_Y3UG}K#aoJ$mFd#0iD7P-RFLx{VEcYq* zFAppaDGx6v%J%~j)3@bmFn~J|r2%ZqGjI4~VOsY()JX(3Y@=WE`%IlR?l{YJYuB@xPTiH?BUHPc; zaphp;aOG&_Sd~bXPL*rbH&vNc`Bi0AC#t@$x>9wc>R#3Ts`jd`s)tp*RnMv>s-9Q9 zs`|a^Z8cIor&_QYt!7j+s~1!+uGX&Btv0AOs$N}fR=uWrUG;|QP1T#Lw^qAXdscf_ z`&D18uBpCN{d09)b!&Bdb!YX%>ZjFjs{gEhU&B`;P&2oNT0^UmtXWjEq(-)8d5vO? za*bMzW{pXWe@%AHm6|_pGHXG_6_4DdQ>Y4Qm>Lu!>>Q~fT z*1Ofm)*q<9#yzg2&y{&D^2FLQsP{z7|zJzzdCdSLz_@Imu~ zz6Vbpj6C2xn0)Z^!RrTqG%y=v8q^we8w?s&HJCJ*H&{2=G}txRH#jvoH|%c6YG5~9 zYPjFf-0-a7bt9#b+Q@8_Zj@B56+GyP9(CFIe)#%&k-x$~!*%;NB()ev- zdE@EETaDd~eT`3>s7>>l)S5Oo?QHUH@@v}F6x18wCEZwZz zY|y-_*`(RLd2O>*vvspgvt6@&vs1Hk^X}%T=9uRA=EUZd=KamzG#_d{(wxzp-JIK; z-+a3HR&#sv^A@Z{uEn&)ttF%-rR7-5*_NMM?zcQ>X=>?idDzn1GSV{E^12miozp7R zinY#b6=~IOUDaybYTCNK)vyB2pR*zQi)|A%t)|}R3tp%;ct!1qzT2Hs$YJJlB zq77}Mx6N;3w28Kfw=HawZj)(S)+XPk)TY|Dw#}-|y3MA|uFby9sm-}u=a1-+3ok*JKG<&_qO-9KWQInf7kI<2epINA>4s? zNO#C}D0C=ysCDRc=ye!$tm-i7*wo?N5!?~ok<@XdBd6n7M?ptXM@7e}jx!zSIxckF z?)bH%zhkiDdB>|xzE1v5q;pQ^{7!{V!_M`c9-Wb$8J*dkxt;l)$2*HV%R1XT`#L$D zW8`L^?~E@~IEOQK7vYjM}ouC-k@UBO)uU720%uF|fGu2Wr?x^8vd>8kI# z*VWxM(#7c-?|R<#ru(aI!EUsh-p%M{b+78)+U?&R-<{rF)_tw}es^Pcb9Y;JM|W5E zK=-qUa~{$j$~`oEXz|eIq1{9Khs47J53?WUJ*;?m{$cmSz8mHjPyB_-<{~n^}P|wkxvYt~t-}RjD`LX9p&rdy-Jd*}Azz3RPMy*j;my@tKUy{5euy_UV}dpGv_ z^!oP(_J;I^_eSUdEx!&u&RlPTRfA0OIx4pNkx2Lza zcck}yAJQk*r_!h2XWeJhXV+)n=hWxix3kZ^&#TY3FQzZPkLXM8+t+uX?@-^7zKp)? zzTCb`eXV_eJeGL8>apkJuOFXyT>H4;ar5K0$DNP+A9Eg$KYsrB)#KkEzkU3!U#K7J zpVu$a&+K2&zoOrye@*|o{tf-M{agAS`nUD_^+)!{^vCxn_V4RI(0{1^NdNKv2mKxW z6aB9S&;hLhodLZ8!vW&~(*cVC%YpR+8wYF${09ODLI%PIA_t-eVh2(O4hvjI5}`;;M~Bifrf$RfwqCpfuVt?1J4E~27VjlAN*=iaF9AEJ*YfrGH5=ycF=0j zdeCOjZqRqAvTEkiGd=MPH_%M33YmLFCbRv*?H z))}@K4jK*}ju_rEymvTmm>5nT-Zy+;_|S0q@X6sb!{>%C4F5QMWw>UzZusu-{o%&p zmf^?4gTuqaqr<-sza9Q-gfc=K5gx%uSR;}n@*_$ksw3(nMk6*Ob|dy9P9x4EJ4f6{ zyheOS0!HFT5=W9p_Kh4EIW%%)Bx59dBzGi#gn%K-#-0olsZZq6&}S$S)*d3+M}kUYe%g{tw%SHZXIB zEaEKT$a0K0t2t(zHJo*v4V+CJN6t=;JI9OT%L(8_abh^}oJ7uHPC6%xbCgrYIl(#2 zIm@}oso~t_)N<-MZJei^XPgPn3(jwxH=I8?@1OBK6L=>2O#GSTvqjIAJd=I4{F&l2 zm1pYDw4T{K3x1aQ?9#KYG0ND|G1D=(G5@i^v5>LwvDmTHv9HGtjvXFLAIlmm9xEF= zF?M?F?AZ5X_s6=&`o;#vhQ>H!<73aqUX3H;!sE>G1>+Lq(&IAY%f{u$SB|e9cN}*a z-#xy6JZrpgoIPGTUNL@Z{D<*N<5$P8k5`S~9KSn0Fg`y1X5y;}`o#PR#)RmE_=L>F zvI+SKr3sY@^@)uW0TYKOPE7nbab@DCiOPwZiQ5w$6OSi`CZ0|_o0yn*H;GKnnG~AD zCh=ACzcbdh}Fb8VhgdA_@3BL93T!7 zKM;qAW5ka{Bk>b)mAFP+CvFfAiATg^;wABlcul+^-V%QS02sgm32*|=zy-7da^M3L zz!&%de-K~-{lFkF3`BzwARdeaV?YW}0X4`1xu5_P0zD`N6`%^3z*sN=d7W+O z2A_k4U=i2|Hi6CHJFo?81>3-OumkJ_d%+=a7#smd!6|SWTm+ZEWpE8#2RFeja2xyz z9)d^U5AYXw2O%V(iG>^#L3`*7U0^Hd20ft<41i&G<1MoOJ z0dK=Q@Gkrr-h=nyFYp2U)dU~Hr|=bg4d21{BujFn4QWd{k- zd6m3IUMFvm56EB1hvXyj1^J#LC_q7qq$rA}94Rp+q1saIsP2Gu{!}p4o9aXL zrTS6*sln7RDvDB4BdC#75|v8jQ-#!6Y8*A5nm|pYCQ*~A&!{OTYC6?GEv1%G%c&LA z*VIaC6}6gLLv5#aP&=tz)NX1Ib&NVrouE!qKT>C?v(zQ(GIgE0LEWVuQIDx7)Enw8 z^%wPydQTHHpdsx*yV9-bc658X11+Uxv_Bm{2hu_GFgl7>($RDbJ)9mv$I@|hJe@$B z66ulj7&@6wqg8Y|olWP^`E&uTrww!!T}{`}3+ONDh4do&D|#`#gs!9O=>~c!y^LN? zuc5!8H_$ujUG#2x551S(M<1h)(WS%iE znLn9#%zKt(TeEH0wro4LJ==lp$hxuatVzmxvHol*8^%Vm-P!)^0Cpfdf*r+eU7 zHiK2O*=!D5z-n0?Tf&yIl`LX;b}T!cox^_4E@T(6U$OOU1G|F#nqAATV>hzf*zN2N z_6PO^dzwARo@akzFSA$J8|+Q?9($jC$UbAAv%jaxX-vL+-%Ow zeaS84mT+}kJ-3!y$9>DK=QeP=xjo!oZXfqOcbGfE9pz4O=eX40ytEH=Adtp++1z@m_mKemkxS$e`9uNgh=NfM)En2;*$0_divrDeY68p`M1gT< z2z$bTa3l;w6%nw4C?QITGNPQQASwwXazpM&ie$(Gc_ObBL^V-Eme(B1?3nC+_Dn8#H)o7Y!ub|$71wM4*@B}m>#j3P!8vxwQ| ztCcNH_{K~mCn;n5-YFuZ+co=FS_4r9$W3ki7ZH z3gT<)a0$jBKewQ2>!53hwROZdCJay1zSbAVC85a)>V zM6$Vq(ar3ArA6!JJ}(fLh=4lcBI;R3Tt>Yx2dPlIoB=uc22Jr$O+~8MQJAk=mPV^7 zwyfcQFQK{1o5arov)&@IF}vPHeNhL@uKku0_lWz%FT?}X9}Pi6kwIXoF6JfnZOob) zck^QV0Qcq&o)FK7fO_I7@f#X|2G$eLiQmy6G#JlqmvMjt@dvSX35tyEou8j7ZfzdU zw;p2!?41DEdo=7LiUJ5oLPdOslqd?dwo-GaPlfq?(@=l|q9$qrI}0_V8-P7<0FEdI z4M!s^a10*?TyfW+1&aMZ3(y+45dq6V8_*WC1MNWv&=JL>A54bU5k zbF^6~$-H=Mn=mX{U@#bh$?>-USl&0_$3uzakyr*S<>oGwxM9zh?Kw+-!*Su>SZ`|~ z4i{RC>u4<`;zIXv3Tt6BF6hSjSPRLxuwHjkY7eR{*P`m0&Sg0_s3L zXaGyWGO!%1KozJG8BrCgMm5NU5aL&Ym4qi)jX&RjwO}3oUXR8i2Q(3XCZQQ@W?NabP*e_gYJepv+BE`H|#5K?Q7&t++r~}8*d8})*& zm-T8zSboGs&4b(l_k`Z=f}hcBWd5kP_)J~CT5k^iszrD37(B=N0z3gv!EfLhnv3S6 zFVL4u!SCP&cnMyiMQADd8m;*!u5T^4&NJK3>BT`{DSU2D5DJW?u)w@nDA-vF3(fcE zM7lx;D8__>j_9j8C_#$_1=QNSN7UNWvMeYFIc$NjZaIg^w;r}8Ho!KpEfI&E{I{^9 zxoU3v7N`Lc9GZvf&Omo4#XK_|%AkjN!(5+WRBwR;dO`0o%GkkLwWd5qWyr3Faw7TT z2i95&=xes0*M@?A(BJGkud@jT!r%|H3qi{Sdy1J7h6}TbK+8WdD+pkB>x4c>EB>BP zPv{|bM)gfJfPG-U5B>H>E1UZrB=kENt!nDG^~cMF(XgYn;9f%2A-np-&4$ld6)xW7R-h@Fc+;y8_{O8Whu;u z1yBohXj?mU3f<)a@edw=1`BaFn4iucVFxQLg-xmAfo3=C|5Sf2vx7C3XW#w(j5Xi- zyqz5!XL-IgRUCoqhL|J2up0pz≻&c4r}2Iv>ok0JJBw*8|^`R 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 From 71c1d549e9ea33292b06e811453884e5133fa293 Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 16 Aug 2021 21:47:28 +0900 Subject: [PATCH 16/34] Add watchOS project. --- .../UserInterfaceState.xcuserstate | Bin 69211 -> 67944 bytes .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 81 ++ .../Assets.xcassets/Contents.json | 6 + watchOS/watchOS WatchKit App/Info.plist | 31 + .../Circular.imageset/Contents.json | 28 + .../Contents.json | 53 ++ .../Extra Large.imageset/Contents.json | 28 + .../Graphic Bezel.imageset/Contents.json | 18 + .../Graphic Circular.imageset/Contents.json | 18 + .../Graphic Corner.imageset/Contents.json | 18 + .../Contents.json | 28 + .../Contents.json | 18 + .../Modular.imageset/Contents.json | 28 + .../Utilitarian.imageset/Contents.json | 28 + .../Assets.xcassets/Contents.json | 6 + .../ComplicationController.swift | 52 ++ .../ContentView.swift | 14 + watchOS/watchOS WatchKit Extension/Info.plist | 38 + .../NotificationController.swift | 26 + .../NotificationView.swift | 13 + .../Preview Assets.xcassets/Contents.json | 6 + .../PushNotificationPayload.apns | 20 + .../watchOSApp.swift | 19 + watchOS/watchOS.xcodeproj/project.pbxproj | 804 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 34917 bytes .../xcschemes/xcschememanagement.plist | 24 + watchOS/watchOSTests/Info.plist | 22 + watchOS/watchOSTests/watchOSTests.swift | 26 + watchOS/watchOSUITests/Info.plist | 22 + watchOS/watchOSUITests/watchOSUITests.swift | 35 + 33 files changed, 1536 insertions(+) create mode 100644 watchOS/watchOS WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 watchOS/watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 watchOS/watchOS WatchKit App/Assets.xcassets/Contents.json create mode 100644 watchOS/watchOS WatchKit App/Info.plist create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/Assets.xcassets/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/ComplicationController.swift create mode 100644 watchOS/watchOS WatchKit Extension/ContentView.swift create mode 100644 watchOS/watchOS WatchKit Extension/Info.plist create mode 100644 watchOS/watchOS WatchKit Extension/NotificationController.swift create mode 100644 watchOS/watchOS WatchKit Extension/NotificationView.swift create mode 100644 watchOS/watchOS WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 watchOS/watchOS WatchKit Extension/PushNotificationPayload.apns create mode 100644 watchOS/watchOS WatchKit Extension/watchOSApp.swift create mode 100644 watchOS/watchOS.xcodeproj/project.pbxproj create mode 100644 watchOS/watchOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 watchOS/watchOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 watchOS/watchOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 watchOS/watchOSTests/Info.plist create mode 100644 watchOS/watchOSTests/watchOSTests.swift create mode 100644 watchOS/watchOSUITests/Info.plist create mode 100644 watchOS/watchOSUITests/watchOSUITests.swift diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index 72e2e2863dc17535eb8c61b8d6f5f95ddb9c9095..b1a32415567d39093c922269e388243248120819 100644 GIT binary patch delta 26935 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 F`X9xR1^EB~ diff --git a/watchOS/watchOS WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json b/watchOS/watchOS WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/watchOS/watchOS WatchKit App/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json b/watchOS/watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d06b66a --- /dev/null +++ b/watchOS/watchOS WatchKit App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,81 @@ +{ + "images" : [ + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "24x24", + "subtype" : "38mm" + }, + { + "idiom" : "watch", + "role" : "notificationCenter", + "scale" : "2x", + "size" : "27.5x27.5", + "subtype" : "42mm" + }, + { + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "companionSettings", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "40x40", + "subtype" : "38mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "44x44", + "subtype" : "40mm" + }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "50x50", + "subtype" : "44mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "86x86", + "subtype" : "38mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "98x98", + "subtype" : "42mm" + }, + { + "idiom" : "watch", + "role" : "quickLook", + "scale" : "2x", + "size" : "108x108", + "subtype" : "44mm" + }, + { + "idiom" : "watch-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit App/Assets.xcassets/Contents.json b/watchOS/watchOS WatchKit App/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/watchOS/watchOS WatchKit App/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit App/Info.plist b/watchOS/watchOS WatchKit App/Info.plist new file mode 100644 index 0000000..208be1e --- /dev/null +++ b/watchOS/watchOS WatchKit App/Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + watchOS WatchKit App + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + WKWatchKitApp + + + diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json new file mode 100644 index 0000000..ed7de25 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json new file mode 100644 index 0000000..e8b3252 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Contents.json @@ -0,0 +1,53 @@ +{ + "assets" : [ + { + "filename" : "Circular.imageset", + "idiom" : "watch", + "role" : "circular" + }, + { + "filename" : "Extra Large.imageset", + "idiom" : "watch", + "role" : "extra-large" + }, + { + "filename" : "Graphic Bezel.imageset", + "idiom" : "watch", + "role" : "graphic-bezel" + }, + { + "filename" : "Graphic Circular.imageset", + "idiom" : "watch", + "role" : "graphic-circular" + }, + { + "filename" : "Graphic Corner.imageset", + "idiom" : "watch", + "role" : "graphic-corner" + }, + { + "filename" : "Graphic Extra Large.imageset", + "idiom" : "watch", + "role" : "graphic-extra-large" + }, + { + "filename" : "Graphic Large Rectangular.imageset", + "idiom" : "watch", + "role" : "graphic-large-rectangular" + }, + { + "filename" : "Modular.imageset", + "idiom" : "watch", + "role" : "modular" + }, + { + "filename" : "Utilitarian.imageset", + "idiom" : "watch", + "role" : "utilitarian" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json new file mode 100644 index 0000000..ed7de25 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json new file mode 100644 index 0000000..9685a7f --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json new file mode 100644 index 0000000..9685a7f --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json new file mode 100644 index 0000000..9685a7f --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json new file mode 100644 index 0000000..ed7de25 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json new file mode 100644 index 0000000..9685a7f --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json new file mode 100644 index 0000000..ed7de25 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json new file mode 100644 index 0000000..ed7de25 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">161" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/Assets.xcassets/Contents.json b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/ComplicationController.swift b/watchOS/watchOS WatchKit Extension/ComplicationController.swift new file mode 100644 index 0000000..0bef9f8 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/ComplicationController.swift @@ -0,0 +1,52 @@ +import ClockKit + + +class ComplicationController: NSObject, CLKComplicationDataSource { + + // MARK: - Complication Configuration + + func getComplicationDescriptors(handler: @escaping ([CLKComplicationDescriptor]) -> Void) { + let descriptors = [ + CLKComplicationDescriptor(identifier: "complication", displayName: "watchOS", supportedFamilies: CLKComplicationFamily.allCases) + // Multiple complication support can be added here with more descriptors + ] + + // Call the handler with the currently supported complication descriptors + handler(descriptors) + } + + func handleSharedComplicationDescriptors(_ complicationDescriptors: [CLKComplicationDescriptor]) { + // Do any necessary work to support these newly shared complication descriptors + } + + // MARK: - Timeline Configuration + + func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { + // Call the handler with the last entry date you can currently provide or nil if you can't support future timelines + handler(nil) + } + + func getPrivacyBehavior(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void) { + // Call the handler with your desired behavior when the device is locked + handler(.showOnLockScreen) + } + + // MARK: - Timeline Population + + func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) { + // Call the handler with the current timeline entry + handler(nil) + } + + func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { + // Call the handler with the timeline entries after the given date + handler(nil) + } + + // MARK: - Sample Templates + + func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) { + // This method will be called once per supported complication, and the results will be cached + handler(nil) + } +} diff --git a/watchOS/watchOS WatchKit Extension/ContentView.swift b/watchOS/watchOS WatchKit Extension/ContentView.swift new file mode 100644 index 0000000..58e7c41 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/ContentView.swift @@ -0,0 +1,14 @@ +import SwiftUI + +struct ContentView: View { + var body: some View { + Text("Hello, World!") + .padding() + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/watchOS/watchOS WatchKit Extension/Info.plist b/watchOS/watchOS WatchKit Extension/Info.plist new file mode 100644 index 0000000..5730de8 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + watchOS WatchKit Extension + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + CLKComplicationPrincipalClass + $(PRODUCT_MODULE_NAME).ComplicationController + NSExtension + + NSExtensionAttributes + + WKAppBundleIdentifier + io.github.aakira.napier.watchOS.watchkitapp + + NSExtensionPointIdentifier + com.apple.watchkit + + WKWatchOnly + + + diff --git a/watchOS/watchOS WatchKit Extension/NotificationController.swift b/watchOS/watchOS WatchKit Extension/NotificationController.swift new file mode 100644 index 0000000..73fceb3 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/NotificationController.swift @@ -0,0 +1,26 @@ +import WatchKit +import SwiftUI +import UserNotifications + +class NotificationController: WKUserNotificationHostingController { + + override var body: NotificationView { + return NotificationView() + } + + override func willActivate() { + // This method is called when watch view controller is about to be visible to user + super.willActivate() + } + + override func didDeactivate() { + // This method is called when watch view controller is no longer visible + super.didDeactivate() + } + + override func didReceive(_ notification: UNNotification) { + // This method is called when a notification needs to be presented. + // Implement it if you use a dynamic notification interface. + // Populate your dynamic notification interface as quickly as possible. + } +} diff --git a/watchOS/watchOS WatchKit Extension/NotificationView.swift b/watchOS/watchOS WatchKit Extension/NotificationView.swift new file mode 100644 index 0000000..63211dd --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/NotificationView.swift @@ -0,0 +1,13 @@ +import SwiftUI + +struct NotificationView: View { + var body: some View { + Text("Hello, World!") + } +} + +struct NotificationView_Previews: PreviewProvider { + static var previews: some View { + NotificationView() + } +} diff --git a/watchOS/watchOS WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json b/watchOS/watchOS WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/watchOS/watchOS WatchKit Extension/PushNotificationPayload.apns b/watchOS/watchOS WatchKit Extension/PushNotificationPayload.apns new file mode 100644 index 0000000..c18b00a --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/PushNotificationPayload.apns @@ -0,0 +1,20 @@ +{ + "aps": { + "alert": { + "body": "Test message", + "title": "Optional title", + "subtitle": "Optional subtitle" + }, + "category": "myCategory", + "thread-id": "5280" + }, + + "WatchKit Simulator Actions": [ + { + "title": "First Button", + "identifier": "firstButtonAction" + } + ], + + "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App." +} diff --git a/watchOS/watchOS WatchKit Extension/watchOSApp.swift b/watchOS/watchOS WatchKit Extension/watchOSApp.swift new file mode 100644 index 0000000..72a6e8f --- /dev/null +++ b/watchOS/watchOS WatchKit Extension/watchOSApp.swift @@ -0,0 +1,19 @@ +import SwiftUI + +@main +struct watchOSApp: App { + + init() { + print("hoge") + } + + @SceneBuilder var body: some Scene { + WindowGroup { + NavigationView { + ContentView() + } + } + + WKNotificationScene(controller: NotificationController.self, category: "myCategory") + } +} diff --git a/watchOS/watchOS.xcodeproj/project.pbxproj b/watchOS/watchOS.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2f00498 --- /dev/null +++ b/watchOS/watchOS.xcodeproj/project.pbxproj @@ -0,0 +1,804 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 3D178DC926CA861800FC5FC3 /* watchOS WatchKit App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 3D178DC826CA861800FC5FC3 /* watchOS WatchKit App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 3D178DCE26CA861900FC5FC3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D178DCD26CA861900FC5FC3 /* Assets.xcassets */; }; + 3D178DD526CA861900FC5FC3 /* watchOS WatchKit Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 3D178DD426CA861900FC5FC3 /* watchOS WatchKit Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 3D178DDA26CA861900FC5FC3 /* watchOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DD926CA861900FC5FC3 /* watchOSApp.swift */; }; + 3D178DDC26CA861900FC5FC3 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DDB26CA861900FC5FC3 /* ContentView.swift */; }; + 3D178DDE26CA861900FC5FC3 /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DDD26CA861900FC5FC3 /* NotificationController.swift */; }; + 3D178DE026CA861900FC5FC3 /* NotificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DDF26CA861900FC5FC3 /* NotificationView.swift */; }; + 3D178DE226CA861900FC5FC3 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DE126CA861900FC5FC3 /* ComplicationController.swift */; }; + 3D178DE426CA861A00FC5FC3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D178DE326CA861A00FC5FC3 /* Assets.xcassets */; }; + 3D178DE726CA861A00FC5FC3 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D178DE626CA861A00FC5FC3 /* Preview Assets.xcassets */; }; + 3D178DF326CA861A00FC5FC3 /* watchOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DF226CA861A00FC5FC3 /* watchOSTests.swift */; }; + 3D178DFE26CA861A00FC5FC3 /* watchOSUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DFD26CA861A00FC5FC3 /* watchOSUITests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3D178DCA26CA861800FC5FC3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D178DBE26CA861800FC5FC3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D178DC726CA861800FC5FC3; + remoteInfo = "watchOS WatchKit App"; + }; + 3D178DD626CA861900FC5FC3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D178DBE26CA861800FC5FC3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D178DD326CA861900FC5FC3; + remoteInfo = "watchOS WatchKit Extension"; + }; + 3D178DEF26CA861A00FC5FC3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D178DBE26CA861800FC5FC3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D178DD326CA861900FC5FC3; + remoteInfo = "watchOS WatchKit Extension"; + }; + 3D178DFA26CA861A00FC5FC3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D178DBE26CA861800FC5FC3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D178DC726CA861800FC5FC3; + remoteInfo = "watchOS WatchKit App"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 3D178E0526CA861A00FC5FC3 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 3D178DD526CA861900FC5FC3 /* watchOS WatchKit Extension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178E0926CA861A00FC5FC3 /* Embed Watch Content */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; + dstSubfolderSpec = 16; + files = ( + 3D178DC926CA861800FC5FC3 /* watchOS WatchKit App.app in Embed Watch Content */, + ); + name = "Embed Watch Content"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 3D178DC426CA861800FC5FC3 /* watchOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = watchOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D178DC826CA861800FC5FC3 /* watchOS WatchKit App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "watchOS WatchKit App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D178DCD26CA861900FC5FC3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3D178DCF26CA861900FC5FC3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3D178DD426CA861900FC5FC3 /* watchOS WatchKit Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "watchOS WatchKit Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D178DD926CA861900FC5FC3 /* watchOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = watchOSApp.swift; sourceTree = ""; }; + 3D178DDB26CA861900FC5FC3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 3D178DDD26CA861900FC5FC3 /* NotificationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationController.swift; sourceTree = ""; }; + 3D178DDF26CA861900FC5FC3 /* NotificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationView.swift; sourceTree = ""; }; + 3D178DE126CA861900FC5FC3 /* ComplicationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComplicationController.swift; sourceTree = ""; }; + 3D178DE326CA861A00FC5FC3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3D178DE626CA861A00FC5FC3 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 3D178DE826CA861A00FC5FC3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3D178DE926CA861A00FC5FC3 /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = ""; }; + 3D178DEE26CA861A00FC5FC3 /* watchOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = watchOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D178DF226CA861A00FC5FC3 /* watchOSTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = watchOSTests.swift; sourceTree = ""; }; + 3D178DF426CA861A00FC5FC3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3D178DF926CA861A00FC5FC3 /* watchOSUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = watchOSUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D178DFD26CA861A00FC5FC3 /* watchOSUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = watchOSUITests.swift; sourceTree = ""; }; + 3D178DFF26CA861A00FC5FC3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3D178DD126CA861900FC5FC3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DEB26CA861A00FC5FC3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DF626CA861A00FC5FC3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3D178DBD26CA861800FC5FC3 = { + isa = PBXGroup; + children = ( + 3D178DCC26CA861800FC5FC3 /* watchOS WatchKit App */, + 3D178DD826CA861900FC5FC3 /* watchOS WatchKit Extension */, + 3D178DF126CA861A00FC5FC3 /* watchOSTests */, + 3D178DFC26CA861A00FC5FC3 /* watchOSUITests */, + 3D178DC526CA861800FC5FC3 /* Products */, + ); + sourceTree = ""; + }; + 3D178DC526CA861800FC5FC3 /* Products */ = { + isa = PBXGroup; + children = ( + 3D178DC426CA861800FC5FC3 /* watchOS.app */, + 3D178DC826CA861800FC5FC3 /* watchOS WatchKit App.app */, + 3D178DD426CA861900FC5FC3 /* watchOS WatchKit Extension.appex */, + 3D178DEE26CA861A00FC5FC3 /* watchOSTests.xctest */, + 3D178DF926CA861A00FC5FC3 /* watchOSUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 3D178DCC26CA861800FC5FC3 /* watchOS WatchKit App */ = { + isa = PBXGroup; + children = ( + 3D178DCD26CA861900FC5FC3 /* Assets.xcassets */, + 3D178DCF26CA861900FC5FC3 /* Info.plist */, + ); + path = "watchOS WatchKit App"; + sourceTree = ""; + }; + 3D178DD826CA861900FC5FC3 /* watchOS WatchKit Extension */ = { + isa = PBXGroup; + children = ( + 3D178DD926CA861900FC5FC3 /* watchOSApp.swift */, + 3D178DDB26CA861900FC5FC3 /* ContentView.swift */, + 3D178DDD26CA861900FC5FC3 /* NotificationController.swift */, + 3D178DDF26CA861900FC5FC3 /* NotificationView.swift */, + 3D178DE126CA861900FC5FC3 /* ComplicationController.swift */, + 3D178DE326CA861A00FC5FC3 /* Assets.xcassets */, + 3D178DE826CA861A00FC5FC3 /* Info.plist */, + 3D178DE926CA861A00FC5FC3 /* PushNotificationPayload.apns */, + 3D178DE526CA861A00FC5FC3 /* Preview Content */, + ); + path = "watchOS WatchKit Extension"; + sourceTree = ""; + }; + 3D178DE526CA861A00FC5FC3 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 3D178DE626CA861A00FC5FC3 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 3D178DF126CA861A00FC5FC3 /* watchOSTests */ = { + isa = PBXGroup; + children = ( + 3D178DF226CA861A00FC5FC3 /* watchOSTests.swift */, + 3D178DF426CA861A00FC5FC3 /* Info.plist */, + ); + path = watchOSTests; + sourceTree = ""; + }; + 3D178DFC26CA861A00FC5FC3 /* watchOSUITests */ = { + isa = PBXGroup; + children = ( + 3D178DFD26CA861A00FC5FC3 /* watchOSUITests.swift */, + 3D178DFF26CA861A00FC5FC3 /* Info.plist */, + ); + path = watchOSUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3D178DC326CA861800FC5FC3 /* watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D178E0A26CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS" */; + buildPhases = ( + 3D178DC226CA861800FC5FC3 /* Resources */, + 3D178E0926CA861A00FC5FC3 /* Embed Watch Content */, + ); + buildRules = ( + ); + dependencies = ( + 3D178DCB26CA861800FC5FC3 /* PBXTargetDependency */, + ); + name = watchOS; + productName = watchOS; + productReference = 3D178DC426CA861800FC5FC3 /* watchOS.app */; + productType = "com.apple.product-type.application.watchapp2-container"; + }; + 3D178DC726CA861800FC5FC3 /* watchOS WatchKit App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D178E0626CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS WatchKit App" */; + buildPhases = ( + 3D178DC626CA861800FC5FC3 /* Resources */, + 3D178E0526CA861A00FC5FC3 /* Embed App Extensions */, + ); + buildRules = ( + ); + dependencies = ( + 3D178DD726CA861900FC5FC3 /* PBXTargetDependency */, + ); + name = "watchOS WatchKit App"; + productName = "watchOS WatchKit App"; + productReference = 3D178DC826CA861800FC5FC3 /* watchOS WatchKit App.app */; + productType = "com.apple.product-type.application.watchapp2"; + }; + 3D178DD326CA861900FC5FC3 /* watchOS WatchKit Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D178E0226CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS WatchKit Extension" */; + buildPhases = ( + 3D178DD026CA861900FC5FC3 /* Sources */, + 3D178DD126CA861900FC5FC3 /* Frameworks */, + 3D178DD226CA861900FC5FC3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "watchOS WatchKit Extension"; + productName = "watchOS WatchKit Extension"; + productReference = 3D178DD426CA861900FC5FC3 /* watchOS WatchKit Extension.appex */; + productType = "com.apple.product-type.watchkit2-extension"; + }; + 3D178DED26CA861A00FC5FC3 /* watchOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D178E0D26CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOSTests" */; + buildPhases = ( + 3D178DEA26CA861A00FC5FC3 /* Sources */, + 3D178DEB26CA861A00FC5FC3 /* Frameworks */, + 3D178DEC26CA861A00FC5FC3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3D178DF026CA861A00FC5FC3 /* PBXTargetDependency */, + ); + name = watchOSTests; + productName = watchOSTests; + productReference = 3D178DEE26CA861A00FC5FC3 /* watchOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 3D178DF826CA861A00FC5FC3 /* watchOSUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D178E1026CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOSUITests" */; + buildPhases = ( + 3D178DF526CA861A00FC5FC3 /* Sources */, + 3D178DF626CA861A00FC5FC3 /* Frameworks */, + 3D178DF726CA861A00FC5FC3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3D178DFB26CA861A00FC5FC3 /* PBXTargetDependency */, + ); + name = watchOSUITests; + productName = watchOSUITests; + productReference = 3D178DF926CA861A00FC5FC3 /* watchOSUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3D178DBE26CA861800FC5FC3 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1250; + LastUpgradeCheck = 1250; + TargetAttributes = { + 3D178DC326CA861800FC5FC3 = { + CreatedOnToolsVersion = 12.5.1; + }; + 3D178DC726CA861800FC5FC3 = { + CreatedOnToolsVersion = 12.5.1; + }; + 3D178DD326CA861900FC5FC3 = { + CreatedOnToolsVersion = 12.5.1; + }; + 3D178DED26CA861A00FC5FC3 = { + CreatedOnToolsVersion = 12.5.1; + TestTargetID = 3D178DD326CA861900FC5FC3; + }; + 3D178DF826CA861A00FC5FC3 = { + CreatedOnToolsVersion = 12.5.1; + TestTargetID = 3D178DC726CA861800FC5FC3; + }; + }; + }; + buildConfigurationList = 3D178DC126CA861800FC5FC3 /* Build configuration list for PBXProject "watchOS" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 3D178DBD26CA861800FC5FC3; + productRefGroup = 3D178DC526CA861800FC5FC3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3D178DC326CA861800FC5FC3 /* watchOS */, + 3D178DC726CA861800FC5FC3 /* watchOS WatchKit App */, + 3D178DD326CA861900FC5FC3 /* watchOS WatchKit Extension */, + 3D178DED26CA861A00FC5FC3 /* watchOSTests */, + 3D178DF826CA861A00FC5FC3 /* watchOSUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3D178DC226CA861800FC5FC3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DC626CA861800FC5FC3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D178DCE26CA861900FC5FC3 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DD226CA861900FC5FC3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D178DE726CA861A00FC5FC3 /* Preview Assets.xcassets in Resources */, + 3D178DE426CA861A00FC5FC3 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DEC26CA861A00FC5FC3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DF726CA861A00FC5FC3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3D178DD026CA861900FC5FC3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D178DDE26CA861900FC5FC3 /* NotificationController.swift in Sources */, + 3D178DDC26CA861900FC5FC3 /* ContentView.swift in Sources */, + 3D178DE226CA861900FC5FC3 /* ComplicationController.swift in Sources */, + 3D178DDA26CA861900FC5FC3 /* watchOSApp.swift in Sources */, + 3D178DE026CA861900FC5FC3 /* NotificationView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DEA26CA861A00FC5FC3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D178DF326CA861A00FC5FC3 /* watchOSTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D178DF526CA861A00FC5FC3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D178DFE26CA861A00FC5FC3 /* watchOSUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3D178DCB26CA861800FC5FC3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D178DC726CA861800FC5FC3 /* watchOS WatchKit App */; + targetProxy = 3D178DCA26CA861800FC5FC3 /* PBXContainerItemProxy */; + }; + 3D178DD726CA861900FC5FC3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D178DD326CA861900FC5FC3 /* watchOS WatchKit Extension */; + targetProxy = 3D178DD626CA861900FC5FC3 /* PBXContainerItemProxy */; + }; + 3D178DF026CA861A00FC5FC3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D178DD326CA861900FC5FC3 /* watchOS WatchKit Extension */; + targetProxy = 3D178DEF26CA861A00FC5FC3 /* PBXContainerItemProxy */; + }; + 3D178DFB26CA861A00FC5FC3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D178DC726CA861800FC5FC3 /* watchOS WatchKit App */; + targetProxy = 3D178DFA26CA861A00FC5FC3 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3D178E0026CA861A00FC5FC3 /* Debug */ = { + isa = XCBuildConfiguration; + 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; + 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; + 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; + }; + 3D178E0126CA861A00FC5FC3 /* Release */ = { + isa = XCBuildConfiguration; + 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; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3D178E0326CA861A00FC5FC3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"watchOS WatchKit Extension/Preview Content\""; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = "watchOS WatchKit Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS.watchkitapp.watchkitextension; + PRODUCT_NAME = "${TARGET_NAME}"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + 3D178E0426CA861A00FC5FC3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"watchOS WatchKit Extension/Preview Content\""; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = "watchOS WatchKit Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS.watchkitapp.watchkitextension; + PRODUCT_NAME = "${TARGET_NAME}"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; + 3D178E0726CA861A00FC5FC3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + IBSC_MODULE = watchOS_WatchKit_Extension; + INFOPLIST_FILE = "watchOS WatchKit App/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS.watchkitapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + 3D178E0826CA861A00FC5FC3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + IBSC_MODULE = watchOS_WatchKit_Extension; + INFOPLIST_FILE = "watchOS WatchKit App/Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS.watchkitapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; + 3D178E0B26CA861A00FC5FC3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 3D178E0C26CA861A00FC5FC3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 3D178E0E26CA861A00FC5FC3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = watchOSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watchOS WatchKit Extension.appex/watchOS WatchKit Extension"; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + 3D178E0F26CA861A00FC5FC3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = watchOSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watchOS WatchKit Extension.appex/watchOS WatchKit Extension"; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; + 3D178E1126CA861A00FC5FC3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = watchOSUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOSUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_TARGET_NAME = "watchOS WatchKit App"; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + 3D178E1226CA861A00FC5FC3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = watchOSUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOSUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + TEST_TARGET_NAME = "watchOS WatchKit App"; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3D178DC126CA861800FC5FC3 /* Build configuration list for PBXProject "watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D178E0026CA861A00FC5FC3 /* Debug */, + 3D178E0126CA861A00FC5FC3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D178E0226CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS WatchKit Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D178E0326CA861A00FC5FC3 /* Debug */, + 3D178E0426CA861A00FC5FC3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D178E0626CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS WatchKit App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D178E0726CA861A00FC5FC3 /* Debug */, + 3D178E0826CA861A00FC5FC3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D178E0A26CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D178E0B26CA861A00FC5FC3 /* Debug */, + 3D178E0C26CA861A00FC5FC3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D178E0D26CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D178E0E26CA861A00FC5FC3 /* Debug */, + 3D178E0F26CA861A00FC5FC3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D178E1026CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOSUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D178E1126CA861A00FC5FC3 /* Debug */, + 3D178E1226CA861A00FC5FC3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3D178DBE26CA861800FC5FC3 /* Project object */; +} diff --git a/watchOS/watchOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/watchOS/watchOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/watchOS/watchOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/watchOS/watchOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/watchOS/watchOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/watchOS/watchOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/watchOS/watchOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/watchOS/watchOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..45093a58071221294b17bca296bfae3fcb68dd86 GIT binary patch literal 34917 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 literal 0 HcmV?d00001 diff --git a/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..4638399 --- /dev/null +++ b/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,24 @@ + + + + + SchemeUserState + + watchOS WatchKit App (Complication).xcscheme_^#shared#^_ + + orderHint + 2 + + watchOS WatchKit App (Notification).xcscheme_^#shared#^_ + + orderHint + 1 + + watchOS WatchKit App.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/watchOS/watchOSTests/Info.plist b/watchOS/watchOSTests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/watchOS/watchOSTests/Info.plist @@ -0,0 +1,22 @@ + + + + + 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 + + diff --git a/watchOS/watchOSTests/watchOSTests.swift b/watchOS/watchOSTests/watchOSTests.swift new file mode 100644 index 0000000..feaf4ac --- /dev/null +++ b/watchOS/watchOSTests/watchOSTests.swift @@ -0,0 +1,26 @@ +import XCTest +@testable import watchOS_WatchKit_Extension + +class watchOSTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/watchOS/watchOSUITests/Info.plist b/watchOS/watchOSUITests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/watchOS/watchOSUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + 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 + + diff --git a/watchOS/watchOSUITests/watchOSUITests.swift b/watchOS/watchOSUITests/watchOSUITests.swift new file mode 100644 index 0000000..64f374b --- /dev/null +++ b/watchOS/watchOSUITests/watchOSUITests.swift @@ -0,0 +1,35 @@ +import XCTest + +class watchOSUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} From 218e1329d72be9af13b0960702640f4845c86d47 Mon Sep 17 00:00:00 2001 From: AAkira Date: Tue, 17 Aug 2021 01:00:28 +0900 Subject: [PATCH 17/34] Add watchOS. --- .../UserInterfaceState.xcuserstate | Bin 67944 -> 35619 bytes mpp-sample/build.gradle.kts | 5 +- napier/build.gradle.kts | 46 +- watchOS/Podfile | 35 + watchOS/Podfile.lock | 16 + .../Local Podspecs/mpp_sample.podspec.json | 39 + watchOS/Pods/Manifest.lock | 16 + watchOS/Pods/Pods.xcodeproj/project.pbxproj | 1222 +++++++++++++++++ .../Pods-watchOS WatchKit App.xcscheme | 60 + .../Pods-watchOS WatchKit Extension.xcscheme | 60 + .../Pods-watchOS-watchOSUITests.xcscheme | 60 + .../xcschemes/Pods-watchOS.xcscheme | 60 + .../xcschemes/Pods-watchOSTests.xcscheme | 60 + .../xcschemes/mpp_sample.xcscheme | 60 + .../xcschemes/xcschememanagement.plist | 41 + .../Pods-watchOS WatchKit App-Info.plist | 26 + ...hOS WatchKit App-acknowledgements.markdown | 3 + ...atchOS WatchKit App-acknowledgements.plist | 29 + .../Pods-watchOS WatchKit App-dummy.m | 5 + .../Pods-watchOS WatchKit App-umbrella.h | 16 + .../Pods-watchOS WatchKit App.debug.xcconfig | 8 + .../Pods-watchOS WatchKit App.modulemap | 6 + ...Pods-watchOS WatchKit App.release.xcconfig | 8 + ...Pods-watchOS WatchKit Extension-Info.plist | 26 + ...tchKit Extension-acknowledgements.markdown | 3 + ... WatchKit Extension-acknowledgements.plist | 29 + .../Pods-watchOS WatchKit Extension-dummy.m | 5 + ...Pods-watchOS WatchKit Extension-umbrella.h | 16 + ...-watchOS WatchKit Extension.debug.xcconfig | 10 + .../Pods-watchOS WatchKit Extension.modulemap | 6 + ...atchOS WatchKit Extension.release.xcconfig | 10 + .../Pods-watchOS-watchOSUITests-Info.plist | 26 + ...S-watchOSUITests-acknowledgements.markdown | 3 + ...chOS-watchOSUITests-acknowledgements.plist | 29 + .../Pods-watchOS-watchOSUITests-dummy.m | 5 + .../Pods-watchOS-watchOSUITests-umbrella.h | 16 + ...Pods-watchOS-watchOSUITests.debug.xcconfig | 8 + .../Pods-watchOS-watchOSUITests.modulemap | 6 + ...ds-watchOS-watchOSUITests.release.xcconfig | 8 + .../Pods-watchOS/Pods-watchOS-Info.plist | 26 + .../Pods-watchOS-acknowledgements.markdown | 3 + .../Pods-watchOS-acknowledgements.plist | 29 + .../Pods-watchOS/Pods-watchOS-dummy.m | 5 + .../Pods-watchOS/Pods-watchOS-umbrella.h | 16 + .../Pods-watchOS/Pods-watchOS.debug.xcconfig | 8 + .../Pods-watchOS/Pods-watchOS.modulemap | 6 + .../Pods-watchOS.release.xcconfig | 8 + .../Pods-watchOSTests-Info.plist | 26 + ...ods-watchOSTests-acknowledgements.markdown | 3 + .../Pods-watchOSTests-acknowledgements.plist | 29 + .../Pods-watchOSTests-dummy.m | 5 + .../Pods-watchOSTests-umbrella.h | 16 + .../Pods-watchOSTests.debug.xcconfig | 8 + .../Pods-watchOSTests.modulemap | 6 + .../Pods-watchOSTests.release.xcconfig | 8 + .../mpp_sample/mpp_sample.debug.xcconfig | 20 + .../mpp_sample/mpp_sample.release.xcconfig | 20 + .../watchOSApp.swift | 7 +- watchOS/watchOS.xcodeproj/project.pbxproj | 227 +++ .../UserInterfaceState.xcuserstate | Bin 34917 -> 33674 bytes .../xcschemes/xcschememanagement.plist | 6 +- .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 40832 bytes 64 files changed, 2556 insertions(+), 31 deletions(-) create mode 100644 watchOS/Podfile create mode 100644 watchOS/Podfile.lock create mode 100644 watchOS/Pods/Local Podspecs/mpp_sample.podspec.json create mode 100644 watchOS/Pods/Manifest.lock create mode 100644 watchOS/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme create mode 100644 watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-Info.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.markdown create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-dummy.m create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-umbrella.h create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.debug.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.modulemap create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.release.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-Info.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.markdown create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-dummy.m create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-umbrella.h create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.debug.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.modulemap create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.release.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-Info.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.markdown create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-dummy.m create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-umbrella.h create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.debug.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.modulemap create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.release.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-Info.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.markdown create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-dummy.m create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-umbrella.h create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.debug.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.modulemap create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.release.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-Info.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.markdown create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.plist create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-dummy.m create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-umbrella.h create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.debug.xcconfig create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.modulemap create mode 100644 watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.release.xcconfig create mode 100644 watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig create mode 100644 watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig create mode 100644 watchOS/watchOS.xcworkspace/contents.xcworkspacedata create mode 100644 watchOS/watchOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 watchOS/watchOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index b1a32415567d39093c922269e388243248120819..31c95ee7785ca3e213ab1ade648a172ca6c1ae46 100644 GIT binary patch delta 15818 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 ak3V@#eJsv(k>c^(|HPBr|0{nVEBqfY3W$0D diff --git a/mpp-sample/build.gradle.kts b/mpp-sample/build.gradle.kts index 5de31c0..1eab6fb 100644 --- a/mpp-sample/build.gradle.kts +++ b/mpp-sample/build.gradle.kts @@ -1,6 +1,5 @@ import dependencies.Dep import dependencies.Versions -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget plugins { kotlin("multiplatform") @@ -18,6 +17,7 @@ kotlin { jvm() ios() macosX64() + watchosX64() sourceSets { val commonMain by getting { @@ -52,6 +52,9 @@ kotlin { val macosX64Main by getting { dependsOn(nativeMain) } + val watchosX64Main by getting { + dependsOn(nativeMain) + } } cocoapods { diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index ff10141..9e0de84 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -30,6 +30,11 @@ kotlin { framework() } } + watchos { + binaries { + framework() + } + } sourceSets { val commonMain by getting { @@ -76,36 +81,18 @@ kotlin { } } - val nativeMain = if (ideaActive) { - val nativeMain by getting { - dependsOn(commonMain) - } - nativeMain - } else { - val nativeMain by creating { - dependsOn(commonMain) - } - nativeMain + val iosMain by getting { + dependencies { } } - val nativeTest = if (ideaActive) { - val nativeTest by getting { - dependsOn(commonTest) - } - nativeTest - } else { - val nativeTest by creating { - dependsOn(commonTest) - } - nativeTest + val iosTest by getting { + dependencies { } } - val iosMain by getting { - dependencies { - } + val nativeMain by creating { + dependsOn(commonMain) } - val iosTest by getting { - dependencies { - } + val nativeTest by creating { + dependsOn(commonTest) } val macosX64Main by getting { @@ -114,6 +101,13 @@ kotlin { val macosX64Test by getting { dependsOn(nativeTest) } + + val watchosMain by getting { + dependsOn(nativeMain) + } + val watchosTest by getting { + dependsOn(nativeTest) + } } } diff --git a/watchOS/Podfile b/watchOS/Podfile new file mode 100644 index 0000000..5eaae16 --- /dev/null +++ b/watchOS/Podfile @@ -0,0 +1,35 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'watchOS' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for watchOS + + target 'watchOSTests' do + inherit! :search_paths + # Pods for testing + end + + target 'watchOSUITests' do + # Pods for testing + end + +end + +target 'watchOS WatchKit App' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for watchOS WatchKit App + +end + +target 'watchOS WatchKit Extension' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for watchOS WatchKit Extension + pod 'mpp_sample', :path => '../mpp-sample' +end diff --git a/watchOS/Podfile.lock b/watchOS/Podfile.lock new file mode 100644 index 0000000..10f11f2 --- /dev/null +++ b/watchOS/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - mpp_sample (1.0.0) + +DEPENDENCIES: + - mpp_sample (from `../mpp-sample`) + +EXTERNAL SOURCES: + mpp_sample: + :path: "../mpp-sample" + +SPEC CHECKSUMS: + mpp_sample: 07fdbc60934b60a9bbfb833df6298899fe345026 + +PODFILE CHECKSUM: b3436ce517ca1a0cce102f45d61571a87947fefe + +COCOAPODS: 1.10.1 diff --git a/watchOS/Pods/Local Podspecs/mpp_sample.podspec.json b/watchOS/Pods/Local Podspecs/mpp_sample.podspec.json new file mode 100644 index 0000000..eb7b285 --- /dev/null +++ b/watchOS/Pods/Local Podspecs/mpp_sample.podspec.json @@ -0,0 +1,39 @@ +{ + "name": "mpp_sample", + "version": "1.0.0", + "homepage": "https://github.com/AAkira/Napier", + "source": { + "git": "Not Published", + "tag": "Cocoapods/mpp_sample/1.0.0" + }, + "authors": "", + "license": "", + "summary": "CocoaPods library", + "static_framework": true, + "vendored_frameworks": "build/cocoapods/framework/mpp_sample.framework", + "libraries": "c++", + "module_name": "mpp_sample_umbrella", + "pod_target_xcconfig": { + "KOTLIN_TARGET[sdk=iphonesimulator*]": "ios_x64", + "KOTLIN_TARGET[sdk=iphoneos*]": "ios_arm", + "KOTLIN_TARGET[sdk=watchsimulator*]": "watchos_x64", + "KOTLIN_TARGET[sdk=watchos*]": "watchos_arm", + "KOTLIN_TARGET[sdk=appletvsimulator*]": "tvos_x64", + "KOTLIN_TARGET[sdk=appletvos*]": "tvos_arm64", + "KOTLIN_TARGET[sdk=macosx*]": "macos_x64" + }, + "script_phases": [ + { + "name": "Build mpp_sample", + "execution_position": "before_compile", + "shell_path": "/bin/sh", + "script": " set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" :mpp-sample:syncFramework -Pkotlin.native.cocoapods.target=$KOTLIN_TARGET -Pkotlin.native.cocoapods.configuration=$CONFIGURATION -Pkotlin.native.cocoapods.cflags=\"$OTHER_CFLAGS\" -Pkotlin.native.cocoapods.paths.headers=\"$HEADER_SEARCH_PATHS\" -Pkotlin.native.cocoapods.paths.frameworks=\"$FRAMEWORK_SEARCH_PATHS\"\n" + } + ], + "platforms": { + "osx": null, + "ios": null, + "tvos": null, + "watchos": null + } +} diff --git a/watchOS/Pods/Manifest.lock b/watchOS/Pods/Manifest.lock new file mode 100644 index 0000000..10f11f2 --- /dev/null +++ b/watchOS/Pods/Manifest.lock @@ -0,0 +1,16 @@ +PODS: + - mpp_sample (1.0.0) + +DEPENDENCIES: + - mpp_sample (from `../mpp-sample`) + +EXTERNAL SOURCES: + mpp_sample: + :path: "../mpp-sample" + +SPEC CHECKSUMS: + mpp_sample: 07fdbc60934b60a9bbfb833df6298899fe345026 + +PODFILE CHECKSUM: b3436ce517ca1a0cce102f45d61571a87947fefe + +COCOAPODS: 1.10.1 diff --git a/watchOS/Pods/Pods.xcodeproj/project.pbxproj b/watchOS/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c8ab509 --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,1222 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXAggregateTarget section */ + 2BDBC3602D396D415E60A5F264B74513 /* mpp_sample */ = { + isa = PBXAggregateTarget; + buildConfigurationList = C8461E57243705CFA5C9C5247BD5AB9D /* Build configuration list for PBXAggregateTarget "mpp_sample" */; + buildPhases = ( + 3FC3EA628192C67993A01162848AFF70 /* [CP-User] Build mpp_sample */, + ); + dependencies = ( + ); + name = mpp_sample; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 05B9D630676A4E1928A214A21A598B4B /* Pods-watchOSTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B0161C81B4622D69A6AAE812ED51481E /* Pods-watchOSTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D9E22F2A25D0D076DDFAACA12CB35F8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FCE35B7430FD7C91E8CC808A3540CF2E /* Foundation.framework */; }; + 1B413DB28D56D3521F9BDC442D578931 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D0A982A9433AACEF8A61353293CF443 /* Foundation.framework */; }; + 23499A3BE98527A0C56B3826717DFCF8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D0A982A9433AACEF8A61353293CF443 /* Foundation.framework */; }; + 3C726380CD4D1DACBDD3C468A1681293 /* Pods-watchOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B9FBC75AB39CF748796538514C7326F0 /* Pods-watchOS-dummy.m */; }; + 4D05AE7412EDAF9C3C99CD0FF40A6E04 /* Pods-watchOS WatchKit App-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B8DB9BBEA90752B5CA12F60C5630ABB /* Pods-watchOS WatchKit App-dummy.m */; }; + 4EEE83115F0816C5BDFAB91917CCC268 /* Pods-watchOS WatchKit App-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EFF4E231F7DED632055CCD0FCACD666B /* Pods-watchOS WatchKit App-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 518A80C457ECD2E925D7D4CAB92625E7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FCE35B7430FD7C91E8CC808A3540CF2E /* Foundation.framework */; }; + 51A107A22702D91F795A7450479D6ADF /* Pods-watchOS-watchOSUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 65EB451B2C8D42968745FA556D117E32 /* Pods-watchOS-watchOSUITests-dummy.m */; }; + 7A25CFBA31169A1C8E251AF6BABD7C8D /* Pods-watchOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FF4FAB75826D059A9B9FF69DE1EC1EA2 /* Pods-watchOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 888CA163594B793263B3C1A8D14D6569 /* Pods-watchOS-watchOSUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36BCA7A8237C9395A8528D262E83D337 /* Pods-watchOS-watchOSUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9407E4DDCBC613607D9D231BED2FD5BD /* Pods-watchOSTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F59ABA6D7416CF8037F5F4E4F8D18D9B /* Pods-watchOSTests-dummy.m */; }; + 940F18020BF9206BEFC462FD77F86484 /* Pods-watchOS WatchKit Extension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A1EADE9F5BB79EF5AA45C1DD65394FB /* Pods-watchOS WatchKit Extension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C8971D437D66697D7E76CBE72F3A5F9A /* Pods-watchOS WatchKit Extension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 18B3DF22D563B0D03BF294DD4147C7FE /* Pods-watchOS WatchKit Extension-dummy.m */; }; + EB1A55BE13254F29830793475B12E803 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D0A982A9433AACEF8A61353293CF443 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 036CBDC9225A98D40CB948F04D39DA3E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 711CC3535E38CFD6E7B40F1DEA407CC6; + remoteInfo = "Pods-watchOS"; + }; + 91E344126B351156377C185ECAA475CF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2BDBC3602D396D415E60A5F264B74513; + remoteInfo = mpp_sample; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 05B8601317D979AFBBF563CC35FF0CD3 /* Pods-watchOS WatchKit App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS WatchKit App.debug.xcconfig"; sourceTree = ""; }; + 18937805BB1CB2271B93BBDFD14ECF7F /* mpp_sample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = mpp_sample.debug.xcconfig; sourceTree = ""; }; + 18B3DF22D563B0D03BF294DD4147C7FE /* Pods-watchOS WatchKit Extension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-watchOS WatchKit Extension-dummy.m"; sourceTree = ""; }; + 1B588CD277D9A658B9DE338F05990ABF /* Pods-watchOS WatchKit App.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-watchOS WatchKit App.modulemap"; sourceTree = ""; }; + 1C4E77F5633EC44A7E0DA46471A3BF87 /* Pods-watchOSTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-watchOSTests.modulemap"; sourceTree = ""; }; + 22C68EFA9E3FF5D4A159156ED3DDA07F /* Pods-watchOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS.release.xcconfig"; sourceTree = ""; }; + 252172DA73B4CDD88DDE2870FAA051D4 /* Pods_watchOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_watchOS.framework; path = "Pods-watchOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2606B7AA51E08B04C509159E4ED5FFA6 /* mpp_sample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = mpp_sample.release.xcconfig; sourceTree = ""; }; + 2D063492CEBAD485E8E3D2B0D4C1EA0C /* Pods-watchOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOSTests.debug.xcconfig"; sourceTree = ""; }; + 2DBAB9F5758499A42E66B70B3D988BAB /* Pods-watchOS-watchOSUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS-watchOSUITests.debug.xcconfig"; sourceTree = ""; }; + 2FD750FE9CA6FAA7BB9180A882940AFD /* Pods-watchOS WatchKit App-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS WatchKit App-Info.plist"; sourceTree = ""; }; + 32E1AF5DEBB733C0E63815F751BF79AD /* Pods-watchOS WatchKit App-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS WatchKit App-acknowledgements.plist"; sourceTree = ""; }; + 339B7893A5D39D63BDA2A3D2769387AC /* Pods-watchOS WatchKit Extension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-watchOS WatchKit Extension.modulemap"; sourceTree = ""; }; + 36BCA7A8237C9395A8528D262E83D337 /* Pods-watchOS-watchOSUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-watchOS-watchOSUITests-umbrella.h"; sourceTree = ""; }; + 38863D35F1A43C339433DA443A276E74 /* Pods-watchOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-watchOS-acknowledgements.markdown"; sourceTree = ""; }; + 3CBEC4943B46315EE3491B8D2B8DD6B3 /* Pods-watchOS-watchOSUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS-watchOSUITests.release.xcconfig"; sourceTree = ""; }; + 41D5DC40F9F20E77A414F12D66E2489A /* Pods-watchOSTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOSTests-Info.plist"; sourceTree = ""; }; + 49F1A2E2788FF4B856155CEF97BABA29 /* Pods-watchOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS.debug.xcconfig"; sourceTree = ""; }; + 4B16BDF19426260DF175C5109B19D8C0 /* Pods-watchOS WatchKit App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS WatchKit App.release.xcconfig"; sourceTree = ""; }; + 4B8DB9BBEA90752B5CA12F60C5630ABB /* Pods-watchOS WatchKit App-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-watchOS WatchKit App-dummy.m"; sourceTree = ""; }; + 4C29F103146136D16088BAE0B6AE31FD /* Pods-watchOS WatchKit Extension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS WatchKit Extension-Info.plist"; sourceTree = ""; }; + 4E90B761A47BD6F6EAABC054B879A3EA /* Pods-watchOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-watchOS.modulemap"; sourceTree = ""; }; + 5D0A982A9433AACEF8A61353293CF443 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 65E4DB7C0A64368EBF0FE6937514F100 /* Pods_watchOSTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_watchOSTests.framework; path = "Pods-watchOSTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 65EB451B2C8D42968745FA556D117E32 /* Pods-watchOS-watchOSUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-watchOS-watchOSUITests-dummy.m"; sourceTree = ""; }; + 7A9516A0AB827FFA9FAF61E413D8E36D /* Pods-watchOS-watchOSUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-watchOS-watchOSUITests-acknowledgements.markdown"; sourceTree = ""; }; + 846D9EB5EBA86B2DE84476BCA02049C4 /* Pods_watchOS_WatchKit_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_watchOS_WatchKit_App.framework; path = "Pods-watchOS WatchKit App.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8800D27522806F35774C0F769137F302 /* Pods-watchOS-watchOSUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS-watchOSUITests-Info.plist"; sourceTree = ""; }; + 8A1EADE9F5BB79EF5AA45C1DD65394FB /* Pods-watchOS WatchKit Extension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-watchOS WatchKit Extension-umbrella.h"; sourceTree = ""; }; + 92F7668084BD2392648D5511B0E4A20D /* Pods-watchOS WatchKit Extension-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-watchOS WatchKit Extension-acknowledgements.markdown"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A29017FE5AD112C72CCDAB15E72E82D2 /* Pods-watchOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS-Info.plist"; sourceTree = ""; }; + AF66AE6FC3CC02D1F9884DEAC4387A4D /* Pods-watchOS-watchOSUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS-watchOSUITests-acknowledgements.plist"; sourceTree = ""; }; + B0161C81B4622D69A6AAE812ED51481E /* Pods-watchOSTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-watchOSTests-umbrella.h"; sourceTree = ""; }; + B982BCF82CFB1999CF2C0D6AC7FB4761 /* Pods-watchOS-watchOSUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-watchOS-watchOSUITests.modulemap"; sourceTree = ""; }; + B9FBC75AB39CF748796538514C7326F0 /* Pods-watchOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-watchOS-dummy.m"; sourceTree = ""; }; + BF62C58047B8C4D44580326B67AEB3C6 /* Pods-watchOSTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOSTests-acknowledgements.plist"; sourceTree = ""; }; + C47365EFD0B0F014B87334B3C72C5CAB /* Pods-watchOS WatchKit Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS WatchKit Extension.release.xcconfig"; sourceTree = ""; }; + C964D2F851708C186ADBE73061ABCE45 /* Pods-watchOS WatchKit Extension-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS WatchKit Extension-acknowledgements.plist"; sourceTree = ""; }; + CB2287D3F13607A700EC359617280ECE /* mpp_sample.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = mpp_sample.framework; path = build/cocoapods/framework/mpp_sample.framework; sourceTree = ""; }; + D831AB56CEFAB42A366D4E4DDED17246 /* Pods_watchOS_watchOSUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_watchOS_watchOSUITests.framework; path = "Pods-watchOS-watchOSUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + D86A553A490805E5D5959655352BFC62 /* Pods-watchOSTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-watchOSTests-acknowledgements.markdown"; sourceTree = ""; }; + D9A692BF722DE8AC719F5CC31099C61A /* Pods-watchOS WatchKit Extension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOS WatchKit Extension.debug.xcconfig"; sourceTree = ""; }; + EC5ABA9681C97C50B6AB74EB87EE7E55 /* mpp_sample.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = mpp_sample.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + EFE842F3C1ADD358B4ED8F73DAA4B2FB /* Pods-watchOS WatchKit App-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-watchOS WatchKit App-acknowledgements.markdown"; sourceTree = ""; }; + EFF4E231F7DED632055CCD0FCACD666B /* Pods-watchOS WatchKit App-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-watchOS WatchKit App-umbrella.h"; sourceTree = ""; }; + F59ABA6D7416CF8037F5F4E4F8D18D9B /* Pods-watchOSTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-watchOSTests-dummy.m"; sourceTree = ""; }; + F6E21188BCBFBF1F6D1E5771776C442E /* Pods-watchOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-watchOSTests.release.xcconfig"; sourceTree = ""; }; + F9BC4BEDE2CF725A4581BC4D57A34ECC /* Pods-watchOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-watchOS-acknowledgements.plist"; sourceTree = ""; }; + FCE35B7430FD7C91E8CC808A3540CF2E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS7.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + FF4FAB75826D059A9B9FF69DE1EC1EA2 /* Pods-watchOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-watchOS-umbrella.h"; sourceTree = ""; }; + FF5DF79662323AAB03339F4DA5DF1362 /* Pods_watchOS_WatchKit_Extension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_watchOS_WatchKit_Extension.framework; path = "Pods-watchOS WatchKit Extension.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 180ADBFDE5E5F918156A27E1FAE9F6F9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1B413DB28D56D3521F9BDC442D578931 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 24276F672599FB7F5F88DE0A848C2B0D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB1A55BE13254F29830793475B12E803 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6E56A6B8871907C12012BBCE9E4CE37F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 23499A3BE98527A0C56B3826717DFCF8 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AA3F61CFBE650F07A162D4CC56D8E8AA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0D9E22F2A25D0D076DDFAACA12CB35F8 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B94ADC7C37443C2E12CF13B4CD31CD45 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 518A80C457ECD2E925D7D4CAB92625E7 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 03FBABE5ACCBF0D21AB61D364299D310 /* iOS */ = { + isa = PBXGroup; + children = ( + 5D0A982A9433AACEF8A61353293CF443 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 0C5C784C00B452A50AF975110D1361BC /* Pod */ = { + isa = PBXGroup; + children = ( + EC5ABA9681C97C50B6AB74EB87EE7E55 /* mpp_sample.podspec */, + ); + name = Pod; + sourceTree = ""; + }; + 2834AA90A87F6D9DC0BBE74DC646A84D /* Pods-watchOSTests */ = { + isa = PBXGroup; + children = ( + 1C4E77F5633EC44A7E0DA46471A3BF87 /* Pods-watchOSTests.modulemap */, + D86A553A490805E5D5959655352BFC62 /* Pods-watchOSTests-acknowledgements.markdown */, + BF62C58047B8C4D44580326B67AEB3C6 /* Pods-watchOSTests-acknowledgements.plist */, + F59ABA6D7416CF8037F5F4E4F8D18D9B /* Pods-watchOSTests-dummy.m */, + 41D5DC40F9F20E77A414F12D66E2489A /* Pods-watchOSTests-Info.plist */, + B0161C81B4622D69A6AAE812ED51481E /* Pods-watchOSTests-umbrella.h */, + 2D063492CEBAD485E8E3D2B0D4C1EA0C /* Pods-watchOSTests.debug.xcconfig */, + F6E21188BCBFBF1F6D1E5771776C442E /* Pods-watchOSTests.release.xcconfig */, + ); + name = "Pods-watchOSTests"; + path = "Target Support Files/Pods-watchOSTests"; + sourceTree = ""; + }; + 54CCD06893F300F5B2C02DAFD57093E1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 03FBABE5ACCBF0D21AB61D364299D310 /* iOS */, + 8B063FB5829CC11F1F48DAAF9305FCB4 /* watchOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7A77230CA8CACC40ECD4E2B11F9503D5 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + D96C173BC6F7CFAA40CBF7CB422AEDC2 /* Pods-watchOS */, + CFCCA60D7BA29F4E9DC8EEEEAB8B71B7 /* Pods-watchOS WatchKit App */, + FD5F33A1043B1413EFB6C3A7E9258A13 /* Pods-watchOS WatchKit Extension */, + F78DCC13A65D6F242B986FF15FCE4B41 /* Pods-watchOS-watchOSUITests */, + 2834AA90A87F6D9DC0BBE74DC646A84D /* Pods-watchOSTests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + 8B063FB5829CC11F1F48DAAF9305FCB4 /* watchOS */ = { + isa = PBXGroup; + children = ( + FCE35B7430FD7C91E8CC808A3540CF2E /* Foundation.framework */, + ); + name = watchOS; + sourceTree = ""; + }; + A9E2CA7155BAECABB1DB5C8F1DCC81AB /* mpp_sample */ = { + isa = PBXGroup; + children = ( + C92FF61DF117E29439D4C19D39CF8600 /* Frameworks */, + 0C5C784C00B452A50AF975110D1361BC /* Pod */, + C0805A053138233F7F3B8DB32636AB68 /* Support Files */, + ); + name = mpp_sample; + path = "../../mpp-sample"; + sourceTree = ""; + }; + AF199AEE59247EBAA5D92E2E2B31877A /* Development Pods */ = { + isa = PBXGroup; + children = ( + A9E2CA7155BAECABB1DB5C8F1DCC81AB /* mpp_sample */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + C0805A053138233F7F3B8DB32636AB68 /* Support Files */ = { + isa = PBXGroup; + children = ( + 18937805BB1CB2271B93BBDFD14ECF7F /* mpp_sample.debug.xcconfig */, + 2606B7AA51E08B04C509159E4ED5FFA6 /* mpp_sample.release.xcconfig */, + ); + name = "Support Files"; + path = "../watchOS/Pods/Target Support Files/mpp_sample"; + sourceTree = ""; + }; + C92FF61DF117E29439D4C19D39CF8600 /* Frameworks */ = { + isa = PBXGroup; + children = ( + CB2287D3F13607A700EC359617280ECE /* mpp_sample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + CE35C77183A8A7166E09EECBDEFE58BF /* Products */ = { + isa = PBXGroup; + children = ( + 252172DA73B4CDD88DDE2870FAA051D4 /* Pods_watchOS.framework */, + 846D9EB5EBA86B2DE84476BCA02049C4 /* Pods_watchOS_WatchKit_App.framework */, + FF5DF79662323AAB03339F4DA5DF1362 /* Pods_watchOS_WatchKit_Extension.framework */, + D831AB56CEFAB42A366D4E4DDED17246 /* Pods_watchOS_watchOSUITests.framework */, + 65E4DB7C0A64368EBF0FE6937514F100 /* Pods_watchOSTests.framework */, + ); + name = Products; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + AF199AEE59247EBAA5D92E2E2B31877A /* Development Pods */, + 54CCD06893F300F5B2C02DAFD57093E1 /* Frameworks */, + CE35C77183A8A7166E09EECBDEFE58BF /* Products */, + 7A77230CA8CACC40ECD4E2B11F9503D5 /* Targets Support Files */, + ); + sourceTree = ""; + }; + CFCCA60D7BA29F4E9DC8EEEEAB8B71B7 /* Pods-watchOS WatchKit App */ = { + isa = PBXGroup; + children = ( + 1B588CD277D9A658B9DE338F05990ABF /* Pods-watchOS WatchKit App.modulemap */, + EFE842F3C1ADD358B4ED8F73DAA4B2FB /* Pods-watchOS WatchKit App-acknowledgements.markdown */, + 32E1AF5DEBB733C0E63815F751BF79AD /* Pods-watchOS WatchKit App-acknowledgements.plist */, + 4B8DB9BBEA90752B5CA12F60C5630ABB /* Pods-watchOS WatchKit App-dummy.m */, + 2FD750FE9CA6FAA7BB9180A882940AFD /* Pods-watchOS WatchKit App-Info.plist */, + EFF4E231F7DED632055CCD0FCACD666B /* Pods-watchOS WatchKit App-umbrella.h */, + 05B8601317D979AFBBF563CC35FF0CD3 /* Pods-watchOS WatchKit App.debug.xcconfig */, + 4B16BDF19426260DF175C5109B19D8C0 /* Pods-watchOS WatchKit App.release.xcconfig */, + ); + name = "Pods-watchOS WatchKit App"; + path = "Target Support Files/Pods-watchOS WatchKit App"; + sourceTree = ""; + }; + D96C173BC6F7CFAA40CBF7CB422AEDC2 /* Pods-watchOS */ = { + isa = PBXGroup; + children = ( + 4E90B761A47BD6F6EAABC054B879A3EA /* Pods-watchOS.modulemap */, + 38863D35F1A43C339433DA443A276E74 /* Pods-watchOS-acknowledgements.markdown */, + F9BC4BEDE2CF725A4581BC4D57A34ECC /* Pods-watchOS-acknowledgements.plist */, + B9FBC75AB39CF748796538514C7326F0 /* Pods-watchOS-dummy.m */, + A29017FE5AD112C72CCDAB15E72E82D2 /* Pods-watchOS-Info.plist */, + FF4FAB75826D059A9B9FF69DE1EC1EA2 /* Pods-watchOS-umbrella.h */, + 49F1A2E2788FF4B856155CEF97BABA29 /* Pods-watchOS.debug.xcconfig */, + 22C68EFA9E3FF5D4A159156ED3DDA07F /* Pods-watchOS.release.xcconfig */, + ); + name = "Pods-watchOS"; + path = "Target Support Files/Pods-watchOS"; + sourceTree = ""; + }; + F78DCC13A65D6F242B986FF15FCE4B41 /* Pods-watchOS-watchOSUITests */ = { + isa = PBXGroup; + children = ( + B982BCF82CFB1999CF2C0D6AC7FB4761 /* Pods-watchOS-watchOSUITests.modulemap */, + 7A9516A0AB827FFA9FAF61E413D8E36D /* Pods-watchOS-watchOSUITests-acknowledgements.markdown */, + AF66AE6FC3CC02D1F9884DEAC4387A4D /* Pods-watchOS-watchOSUITests-acknowledgements.plist */, + 65EB451B2C8D42968745FA556D117E32 /* Pods-watchOS-watchOSUITests-dummy.m */, + 8800D27522806F35774C0F769137F302 /* Pods-watchOS-watchOSUITests-Info.plist */, + 36BCA7A8237C9395A8528D262E83D337 /* Pods-watchOS-watchOSUITests-umbrella.h */, + 2DBAB9F5758499A42E66B70B3D988BAB /* Pods-watchOS-watchOSUITests.debug.xcconfig */, + 3CBEC4943B46315EE3491B8D2B8DD6B3 /* Pods-watchOS-watchOSUITests.release.xcconfig */, + ); + name = "Pods-watchOS-watchOSUITests"; + path = "Target Support Files/Pods-watchOS-watchOSUITests"; + sourceTree = ""; + }; + FD5F33A1043B1413EFB6C3A7E9258A13 /* Pods-watchOS WatchKit Extension */ = { + isa = PBXGroup; + children = ( + 339B7893A5D39D63BDA2A3D2769387AC /* Pods-watchOS WatchKit Extension.modulemap */, + 92F7668084BD2392648D5511B0E4A20D /* Pods-watchOS WatchKit Extension-acknowledgements.markdown */, + C964D2F851708C186ADBE73061ABCE45 /* Pods-watchOS WatchKit Extension-acknowledgements.plist */, + 18B3DF22D563B0D03BF294DD4147C7FE /* Pods-watchOS WatchKit Extension-dummy.m */, + 4C29F103146136D16088BAE0B6AE31FD /* Pods-watchOS WatchKit Extension-Info.plist */, + 8A1EADE9F5BB79EF5AA45C1DD65394FB /* Pods-watchOS WatchKit Extension-umbrella.h */, + D9A692BF722DE8AC719F5CC31099C61A /* Pods-watchOS WatchKit Extension.debug.xcconfig */, + C47365EFD0B0F014B87334B3C72C5CAB /* Pods-watchOS WatchKit Extension.release.xcconfig */, + ); + name = "Pods-watchOS WatchKit Extension"; + path = "Target Support Files/Pods-watchOS WatchKit Extension"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 095E1FBFFBFCBE49B841E4CF4E406728 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EEE83115F0816C5BDFAB91917CCC268 /* Pods-watchOS WatchKit App-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 408320CA41C12DA2AB49D933CFB81400 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 940F18020BF9206BEFC462FD77F86484 /* Pods-watchOS WatchKit Extension-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 526DACED761A76F5A69E24798882F6B6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7A25CFBA31169A1C8E251AF6BABD7C8D /* Pods-watchOS-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7DBFAF1F408705D21B43C97FED259A06 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 888CA163594B793263B3C1A8D14D6569 /* Pods-watchOS-watchOSUITests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E68C7062319BB494B9CDEFBBA7C2D09B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 05B9D630676A4E1928A214A21A598B4B /* Pods-watchOSTests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 62FB437211E380DB4FC03AF45E2B3208 /* Pods-watchOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6BD959F88525B691A7D3F4F181B9765B /* Build configuration list for PBXNativeTarget "Pods-watchOSTests" */; + buildPhases = ( + E68C7062319BB494B9CDEFBBA7C2D09B /* Headers */, + FEBEAD982FA3A6C35C4E874E3B533A37 /* Sources */, + 6E56A6B8871907C12012BBCE9E4CE37F /* Frameworks */, + 5A2DF8F0A63A9B01950C9E2E3F27140A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + E364184E3EEE23AF3D1C9D56284F9150 /* PBXTargetDependency */, + ); + name = "Pods-watchOSTests"; + productName = "Pods-watchOSTests"; + productReference = 65E4DB7C0A64368EBF0FE6937514F100 /* Pods_watchOSTests.framework */; + productType = "com.apple.product-type.framework"; + }; + 711CC3535E38CFD6E7B40F1DEA407CC6 /* Pods-watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 431725524C47130F338EFC350CD2D86A /* Build configuration list for PBXNativeTarget "Pods-watchOS" */; + buildPhases = ( + 526DACED761A76F5A69E24798882F6B6 /* Headers */, + 276FE7CDB767081A29B3A051C2D7B994 /* Sources */, + 24276F672599FB7F5F88DE0A848C2B0D /* Frameworks */, + 14F655A5C5D92D1B3DD77DB63A62D6B1 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-watchOS"; + productName = "Pods-watchOS"; + productReference = 252172DA73B4CDD88DDE2870FAA051D4 /* Pods_watchOS.framework */; + productType = "com.apple.product-type.framework"; + }; + 7F24FB6A04775D9D353987CB9ADDE78A /* Pods-watchOS WatchKit App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 18206E754A2920A41F7BA58EF29EE873 /* Build configuration list for PBXNativeTarget "Pods-watchOS WatchKit App" */; + buildPhases = ( + 095E1FBFFBFCBE49B841E4CF4E406728 /* Headers */, + 3D36D6C6B468CB2787540EDA0B92CE3D /* Sources */, + B94ADC7C37443C2E12CF13B4CD31CD45 /* Frameworks */, + 724529BAB19F049A01416D276EB35A00 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-watchOS WatchKit App"; + productName = "Pods-watchOS WatchKit App"; + productReference = 846D9EB5EBA86B2DE84476BCA02049C4 /* Pods_watchOS_WatchKit_App.framework */; + productType = "com.apple.product-type.framework"; + }; + CE8FA6DD1B68AF3E569DEE152ECF7A04 /* Pods-watchOS-watchOSUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B87C8972FDBEB72DB7B70D49266D9081 /* Build configuration list for PBXNativeTarget "Pods-watchOS-watchOSUITests" */; + buildPhases = ( + 7DBFAF1F408705D21B43C97FED259A06 /* Headers */, + DADF8B033D7FA4BEE59DF7747DF3441E /* Sources */, + 180ADBFDE5E5F918156A27E1FAE9F6F9 /* Frameworks */, + E414797BB078974D232EB290A1AA7572 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-watchOS-watchOSUITests"; + productName = "Pods-watchOS-watchOSUITests"; + productReference = D831AB56CEFAB42A366D4E4DDED17246 /* Pods_watchOS_watchOSUITests.framework */; + productType = "com.apple.product-type.framework"; + }; + FF1FC0697B06D17D474F80098065D763 /* Pods-watchOS WatchKit Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09A70F4F41DBA1F97437703E00234B20 /* Build configuration list for PBXNativeTarget "Pods-watchOS WatchKit Extension" */; + buildPhases = ( + 408320CA41C12DA2AB49D933CFB81400 /* Headers */, + 754350830FAC2DF00548067874893AAA /* Sources */, + AA3F61CFBE650F07A162D4CC56D8E8AA /* Frameworks */, + 6BD23A3D39C48E4212A2E58DC1870219 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8ADC02E5BEFE753EA9AC3B2A74D706C9 /* PBXTargetDependency */, + ); + name = "Pods-watchOS WatchKit Extension"; + productName = "Pods-watchOS WatchKit Extension"; + productReference = FF5DF79662323AAB03339F4DA5DF1362 /* Pods_watchOS_WatchKit_Extension.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = CE35C77183A8A7166E09EECBDEFE58BF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2BDBC3602D396D415E60A5F264B74513 /* mpp_sample */, + 711CC3535E38CFD6E7B40F1DEA407CC6 /* Pods-watchOS */, + 7F24FB6A04775D9D353987CB9ADDE78A /* Pods-watchOS WatchKit App */, + FF1FC0697B06D17D474F80098065D763 /* Pods-watchOS WatchKit Extension */, + CE8FA6DD1B68AF3E569DEE152ECF7A04 /* Pods-watchOS-watchOSUITests */, + 62FB437211E380DB4FC03AF45E2B3208 /* Pods-watchOSTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 14F655A5C5D92D1B3DD77DB63A62D6B1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5A2DF8F0A63A9B01950C9E2E3F27140A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6BD23A3D39C48E4212A2E58DC1870219 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 724529BAB19F049A01416D276EB35A00 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E414797BB078974D232EB290A1AA7572 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3FC3EA628192C67993A01162848AFF70 /* [CP-User] Build mpp_sample */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] Build mpp_sample"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = " set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" :mpp-sample:syncFramework -Pkotlin.native.cocoapods.target=$KOTLIN_TARGET -Pkotlin.native.cocoapods.configuration=$CONFIGURATION -Pkotlin.native.cocoapods.cflags=\"$OTHER_CFLAGS\" -Pkotlin.native.cocoapods.paths.headers=\"$HEADER_SEARCH_PATHS\" -Pkotlin.native.cocoapods.paths.frameworks=\"$FRAMEWORK_SEARCH_PATHS\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 276FE7CDB767081A29B3A051C2D7B994 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3C726380CD4D1DACBDD3C468A1681293 /* Pods-watchOS-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D36D6C6B468CB2787540EDA0B92CE3D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D05AE7412EDAF9C3C99CD0FF40A6E04 /* Pods-watchOS WatchKit App-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 754350830FAC2DF00548067874893AAA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C8971D437D66697D7E76CBE72F3A5F9A /* Pods-watchOS WatchKit Extension-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DADF8B033D7FA4BEE59DF7747DF3441E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 51A107A22702D91F795A7450479D6ADF /* Pods-watchOS-watchOSUITests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FEBEAD982FA3A6C35C4E874E3B533A37 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9407E4DDCBC613607D9D231BED2FD5BD /* Pods-watchOSTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 8ADC02E5BEFE753EA9AC3B2A74D706C9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = mpp_sample; + target = 2BDBC3602D396D415E60A5F264B74513 /* mpp_sample */; + targetProxy = 91E344126B351156377C185ECAA475CF /* PBXContainerItemProxy */; + }; + E364184E3EEE23AF3D1C9D56284F9150 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-watchOS"; + target = 711CC3535E38CFD6E7B40F1DEA407CC6 /* Pods-watchOS */; + targetProxy = 036CBDC9225A98D40CB948F04D39DA3E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 070EEA8D3FCE714B7CDC2B48FEBD71DD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DBAB9F5758499A42E66B70B3D988BAB /* Pods-watchOS-watchOSUITests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 26B4702B92F9D597ADBC3F258B8CCDE9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C47365EFD0B0F014B87334B3C72C5CAB /* Pods-watchOS WatchKit Extension.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; + 30C673941DB56C03AC17D7CD2D8ACABE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F6E21188BCBFBF1F6D1E5771776C442E /* Pods-watchOSTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOSTests/Pods-watchOSTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOSTests/Pods-watchOSTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 39BCCF67E046DD58B79C835ABA0424FF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2D063492CEBAD485E8E3D2B0D4C1EA0C /* Pods-watchOSTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOSTests/Pods-watchOSTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOSTests/Pods-watchOSTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3C2A59F66EDE4B99E75A550E328355B8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2606B7AA51E08B04C509159E4ED5FFA6 /* mpp_sample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + VALIDATE_PRODUCT = YES; + WATCHOS_DEPLOYMENT_TARGET = 2.0; + }; + name = Release; + }; + 52F8C524EF93D3C6DCED78F9CAEF0E56 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3CBEC4943B46315EE3491B8D2B8DD6B3 /* Pods-watchOS-watchOSUITests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 73973B70042B7BEB1E257116E0B29B11 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 49F1A2E2788FF4B856155CEF97BABA29 /* Pods-watchOS.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS/Pods-watchOS-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS/Pods-watchOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 7733D520129A1C56E8ADCD017DAE052C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=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 = ""; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; + 8D8B6063E722E3ACCE87854B6647BEFF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 22C68EFA9E3FF5D4A159156ED3DDA07F /* Pods-watchOS.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS/Pods-watchOS-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS/Pods-watchOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + D92F43F0A975730EE34E36B38EEA1B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + 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; + 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 = ( + "POD_CONFIGURATION_DEBUG=1", + "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 = ""; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + DA6AD2029747FE0C26ED2216BDE4D493 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 05B8601317D979AFBBF563CC35FF0CD3 /* Pods-watchOS WatchKit App.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + E4D08ACBBC79113FEA0BD86A8BF67DC4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4B16BDF19426260DF175C5109B19D8C0 /* Pods-watchOS WatchKit App.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Release; + }; + F78ECFED27A24FE15ED0AB5B57CA8684 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D9A692BF722DE8AC719F5CC31099C61A /* Pods-watchOS WatchKit Extension.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 7.4; + }; + name = Debug; + }; + FCD1E6642C62DF2F1144DCFE9037565D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 18937805BB1CB2271B93BBDFD14ECF7F /* mpp_sample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.0; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 09A70F4F41DBA1F97437703E00234B20 /* Build configuration list for PBXNativeTarget "Pods-watchOS WatchKit Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F78ECFED27A24FE15ED0AB5B57CA8684 /* Debug */, + 26B4702B92F9D597ADBC3F258B8CCDE9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 18206E754A2920A41F7BA58EF29EE873 /* Build configuration list for PBXNativeTarget "Pods-watchOS WatchKit App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DA6AD2029747FE0C26ED2216BDE4D493 /* Debug */, + E4D08ACBBC79113FEA0BD86A8BF67DC4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 431725524C47130F338EFC350CD2D86A /* Build configuration list for PBXNativeTarget "Pods-watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 73973B70042B7BEB1E257116E0B29B11 /* Debug */, + 8D8B6063E722E3ACCE87854B6647BEFF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D92F43F0A975730EE34E36B38EEA1B70 /* Debug */, + 7733D520129A1C56E8ADCD017DAE052C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6BD959F88525B691A7D3F4F181B9765B /* Build configuration list for PBXNativeTarget "Pods-watchOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 39BCCF67E046DD58B79C835ABA0424FF /* Debug */, + 30C673941DB56C03AC17D7CD2D8ACABE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B87C8972FDBEB72DB7B70D49266D9081 /* Build configuration list for PBXNativeTarget "Pods-watchOS-watchOSUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 070EEA8D3FCE714B7CDC2B48FEBD71DD /* Debug */, + 52F8C524EF93D3C6DCED78F9CAEF0E56 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C8461E57243705CFA5C9C5247BD5AB9D /* Build configuration list for PBXAggregateTarget "mpp_sample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FCD1E6642C62DF2F1144DCFE9037565D /* Debug */, + 3C2A59F66EDE4B99E75A550E328355B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme new file mode 100644 index 0000000..bc9df6d --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme new file mode 100644 index 0000000..e46e9a6 --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme new file mode 100644 index 0000000..3d8890a --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme new file mode 100644 index 0000000..3660253 --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme new file mode 100644 index 0000000..071a18b --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme new file mode 100644 index 0000000..24f4e6e --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/mpp_sample.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..b876e25 --- /dev/null +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,41 @@ + + + + + SchemeUserState + + Pods-watchOS WatchKit App.xcscheme + + isShown + + + Pods-watchOS WatchKit Extension.xcscheme + + isShown + + + Pods-watchOS-watchOSUITests.xcscheme + + isShown + + + Pods-watchOS.xcscheme + + isShown + + + Pods-watchOSTests.xcscheme + + isShown + + + mpp_sample.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-Info.plist b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.markdown b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.plist b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-dummy.m b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-dummy.m new file mode 100644 index 0000000..e8db90c --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_watchOS_WatchKit_App : NSObject +@end +@implementation PodsDummy_Pods_watchOS_WatchKit_App +@end diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-umbrella.h b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-umbrella.h new file mode 100644 index 0000000..43f3dab --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_watchOS_WatchKit_AppVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_watchOS_WatchKit_AppVersionString[]; + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.debug.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.debug.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.debug.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.modulemap b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.modulemap new file mode 100644 index 0000000..7aea892 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.modulemap @@ -0,0 +1,6 @@ +framework module Pods_watchOS_WatchKit_App { + umbrella header "Pods-watchOS WatchKit App-umbrella.h" + + export * + module * { export * } +} diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.release.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.release.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.release.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-Info.plist b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.markdown b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.plist b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-dummy.m b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-dummy.m new file mode 100644 index 0000000..7d77b64 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_watchOS_WatchKit_Extension : NSObject +@end +@implementation PodsDummy_Pods_watchOS_WatchKit_Extension +@end diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-umbrella.h b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-umbrella.h new file mode 100644 index 0000000..534d5a7 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_watchOS_WatchKit_ExtensionVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_watchOS_WatchKit_ExtensionVersionString[]; + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.debug.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.debug.xcconfig new file mode 100644 index 0000000..38775fb --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.debug.xcconfig @@ -0,0 +1,10 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -framework "mpp_sample" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.modulemap b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.modulemap new file mode 100644 index 0000000..7fde14c --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.modulemap @@ -0,0 +1,6 @@ +framework module Pods_watchOS_WatchKit_Extension { + umbrella header "Pods-watchOS WatchKit Extension-umbrella.h" + + export * + module * { export * } +} diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.release.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.release.xcconfig new file mode 100644 index 0000000..38775fb --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.release.xcconfig @@ -0,0 +1,10 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -framework "mpp_sample" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-Info.plist b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.markdown b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.plist b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-dummy.m b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-dummy.m new file mode 100644 index 0000000..d830688 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_watchOS_watchOSUITests : NSObject +@end +@implementation PodsDummy_Pods_watchOS_watchOSUITests +@end diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-umbrella.h b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-umbrella.h new file mode 100644 index 0000000..59b042f --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_watchOS_watchOSUITestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_watchOS_watchOSUITestsVersionString[]; + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.debug.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.debug.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.debug.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.modulemap b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.modulemap new file mode 100644 index 0000000..d2d4834 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_watchOS_watchOSUITests { + umbrella header "Pods-watchOS-watchOSUITests-umbrella.h" + + export * + module * { export * } +} diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.release.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.release.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.release.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-Info.plist b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.markdown b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.plist b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-dummy.m b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-dummy.m new file mode 100644 index 0000000..4730bc4 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_watchOS : NSObject +@end +@implementation PodsDummy_Pods_watchOS +@end diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-umbrella.h b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-umbrella.h new file mode 100644 index 0000000..ea0aec2 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_watchOSVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_watchOSVersionString[]; + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.debug.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.debug.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.debug.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.modulemap b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.modulemap new file mode 100644 index 0000000..2fd29d0 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.modulemap @@ -0,0 +1,6 @@ +framework module Pods_watchOS { + umbrella header "Pods-watchOS-umbrella.h" + + export * + module * { export * } +} diff --git a/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.release.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.release.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOS/Pods-watchOS.release.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-Info.plist b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.markdown b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.plist b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-dummy.m b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-dummy.m new file mode 100644 index 0000000..856ef20 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_watchOSTests : NSObject +@end +@implementation PodsDummy_Pods_watchOSTests +@end diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-umbrella.h b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-umbrella.h new file mode 100644 index 0000000..e76267b --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_watchOSTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_watchOSTestsVersionString[]; + diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.debug.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.debug.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.debug.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.modulemap b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.modulemap new file mode 100644 index 0000000..e5ed627 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_watchOSTests { + umbrella header "Pods-watchOSTests-umbrella.h" + + export * + module * { export * } +} diff --git a/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.release.xcconfig b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.release.xcconfig new file mode 100644 index 0000000..26f2c77 --- /dev/null +++ b/watchOS/Pods/Target Support Files/Pods-watchOSTests/Pods-watchOSTests.release.xcconfig @@ -0,0 +1,8 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig b/watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig new file mode 100644 index 0000000..39b79db --- /dev/null +++ b/watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.debug.xcconfig @@ -0,0 +1,20 @@ +APPLICATION_EXTENSION_API_ONLY = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/mpp_sample +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +KOTLIN_TARGET[sdk=appletvos*] = tvos_arm64 +KOTLIN_TARGET[sdk=appletvsimulator*] = tvos_x64 +KOTLIN_TARGET[sdk=iphoneos*] = ios_arm +KOTLIN_TARGET[sdk=iphonesimulator*] = ios_x64 +KOTLIN_TARGET[sdk=macosx*] = macos_x64 +KOTLIN_TARGET[sdk=watchos*] = watchos_arm +KOTLIN_TARGET[sdk=watchsimulator*] = watchos_x64 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../mpp-sample +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig b/watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig new file mode 100644 index 0000000..39b79db --- /dev/null +++ b/watchOS/Pods/Target Support Files/mpp_sample/mpp_sample.release.xcconfig @@ -0,0 +1,20 @@ +APPLICATION_EXTENSION_API_ONLY = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/mpp_sample +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../mpp-sample/build/cocoapods/framework" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +KOTLIN_TARGET[sdk=appletvos*] = tvos_arm64 +KOTLIN_TARGET[sdk=appletvsimulator*] = tvos_x64 +KOTLIN_TARGET[sdk=iphoneos*] = ios_arm +KOTLIN_TARGET[sdk=iphonesimulator*] = ios_x64 +KOTLIN_TARGET[sdk=macosx*] = macos_x64 +KOTLIN_TARGET[sdk=watchos*] = watchos_arm +KOTLIN_TARGET[sdk=watchsimulator*] = watchos_x64 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../mpp-sample +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/watchOS/watchOS WatchKit Extension/watchOSApp.swift b/watchOS/watchOS WatchKit Extension/watchOSApp.swift index 72a6e8f..60061ba 100644 --- a/watchOS/watchOS WatchKit Extension/watchOSApp.swift +++ b/watchOS/watchOS WatchKit Extension/watchOSApp.swift @@ -1,10 +1,15 @@ import SwiftUI +import mpp_sample @main struct watchOSApp: App { init() { - print("hoge") + NapierProxyKt.debugBuild() + let sample = Sample() + sample.hello() + sample.suspendHelloKt() + sample.handleError() } @SceneBuilder var body: some Scene { diff --git a/watchOS/watchOS.xcodeproj/project.pbxproj b/watchOS/watchOS.xcodeproj/project.pbxproj index 2f00498..81c4431 100644 --- a/watchOS/watchOS.xcodeproj/project.pbxproj +++ b/watchOS/watchOS.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 1B4D3D0AF6AFE8450BCFD644 /* Pods_watchOS_WatchKit_Extension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A1481A9834F41A2F16B1A3 /* Pods_watchOS_WatchKit_Extension.framework */; }; + 228584D8551835F999A19AA5 /* Pods_watchOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C26AC213605AB4B014F275A /* Pods_watchOS.framework */; }; 3D178DC926CA861800FC5FC3 /* watchOS WatchKit App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 3D178DC826CA861800FC5FC3 /* watchOS WatchKit App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 3D178DCE26CA861900FC5FC3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D178DCD26CA861900FC5FC3 /* Assets.xcassets */; }; 3D178DD526CA861900FC5FC3 /* watchOS WatchKit Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 3D178DD426CA861900FC5FC3 /* watchOS WatchKit Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -19,6 +21,9 @@ 3D178DE726CA861A00FC5FC3 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D178DE626CA861A00FC5FC3 /* Preview Assets.xcassets */; }; 3D178DF326CA861A00FC5FC3 /* watchOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DF226CA861A00FC5FC3 /* watchOSTests.swift */; }; 3D178DFE26CA861A00FC5FC3 /* watchOSUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D178DFD26CA861A00FC5FC3 /* watchOSUITests.swift */; }; + 3EFDD5A0DEF5AC16E1A72843 /* Pods_watchOS_watchOSUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0B5E9156AA4A57B743A6C7A /* Pods_watchOS_watchOSUITests.framework */; }; + C247E1B44F319692FF2BEB28 /* Pods_watchOSTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DB8145DBF7BAC70EB488446 /* Pods_watchOSTests.framework */; }; + F14AE0DC0C447145EB6B5B38 /* Pods_watchOS_WatchKit_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 74D673C0316C1D7E8FD48AF3 /* Pods_watchOS_WatchKit_App.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -78,6 +83,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 001F31778035258F2F137608 /* Pods-watchOS WatchKit App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS WatchKit App.release.xcconfig"; path = "Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.release.xcconfig"; sourceTree = ""; }; + 091623C2A6E351665A17F4F7 /* Pods-watchOS-watchOSUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS-watchOSUITests.debug.xcconfig"; path = "Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.debug.xcconfig"; sourceTree = ""; }; + 1DB8145DBF7BAC70EB488446 /* Pods_watchOSTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_watchOSTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 352D6FF90CA02B685F1CBE32 /* Pods-watchOS WatchKit Extension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS WatchKit Extension.debug.xcconfig"; path = "Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.debug.xcconfig"; sourceTree = ""; }; + 3C26AC213605AB4B014F275A /* Pods_watchOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_watchOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3D178DC426CA861800FC5FC3 /* watchOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = watchOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3D178DC826CA861800FC5FC3 /* watchOS WatchKit App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "watchOS WatchKit App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 3D178DCD26CA861900FC5FC3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -98,6 +108,16 @@ 3D178DF926CA861A00FC5FC3 /* watchOSUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = watchOSUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3D178DFD26CA861A00FC5FC3 /* watchOSUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = watchOSUITests.swift; sourceTree = ""; }; 3D178DFF26CA861A00FC5FC3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4F1213079D637786D63ADE2A /* Pods-watchOS WatchKit Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS WatchKit Extension.release.xcconfig"; path = "Target Support Files/Pods-watchOS WatchKit Extension/Pods-watchOS WatchKit Extension.release.xcconfig"; sourceTree = ""; }; + 600D98AF6220105D02CCE51B /* Pods-watchOS WatchKit App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS WatchKit App.debug.xcconfig"; path = "Target Support Files/Pods-watchOS WatchKit App/Pods-watchOS WatchKit App.debug.xcconfig"; sourceTree = ""; }; + 61D67141901C18809291BDB5 /* Pods-watchOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOSTests.debug.xcconfig"; path = "Target Support Files/Pods-watchOSTests/Pods-watchOSTests.debug.xcconfig"; sourceTree = ""; }; + 6EC3B27DC32CA5DF9210AB97 /* Pods-watchOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOSTests.release.xcconfig"; path = "Target Support Files/Pods-watchOSTests/Pods-watchOSTests.release.xcconfig"; sourceTree = ""; }; + 74D673C0316C1D7E8FD48AF3 /* Pods_watchOS_WatchKit_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_watchOS_WatchKit_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8527CBB4447A65D5973155C8 /* Pods-watchOS-watchOSUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS-watchOSUITests.release.xcconfig"; path = "Target Support Files/Pods-watchOS-watchOSUITests/Pods-watchOS-watchOSUITests.release.xcconfig"; sourceTree = ""; }; + 86A1481A9834F41A2F16B1A3 /* Pods_watchOS_WatchKit_Extension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_watchOS_WatchKit_Extension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9C10860CC5560FD04880CA88 /* Pods-watchOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS.release.xcconfig"; path = "Target Support Files/Pods-watchOS/Pods-watchOS.release.xcconfig"; sourceTree = ""; }; + F0B5E9156AA4A57B743A6C7A /* Pods_watchOS_watchOSUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_watchOS_watchOSUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FB84CB0F69D669078368954A /* Pods-watchOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-watchOS.debug.xcconfig"; path = "Target Support Files/Pods-watchOS/Pods-watchOS.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -105,6 +125,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1B4D3D0AF6AFE8450BCFD644 /* Pods_watchOS_WatchKit_Extension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -112,6 +133,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + C247E1B44F319692FF2BEB28 /* Pods_watchOSTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -119,6 +141,23 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3EFDD5A0DEF5AC16E1A72843 /* Pods_watchOS_watchOSUITests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 63FF231FB1BE5382DFCC9B7C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F14AE0DC0C447145EB6B5B38 /* Pods_watchOS_WatchKit_App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C641C1F40095975E4C686120 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 228584D8551835F999A19AA5 /* Pods_watchOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -133,6 +172,8 @@ 3D178DF126CA861A00FC5FC3 /* watchOSTests */, 3D178DFC26CA861A00FC5FC3 /* watchOSUITests */, 3D178DC526CA861800FC5FC3 /* Products */, + 68783D1BE47ABB24AB5AEE1C /* Pods */, + 4CCBED2703C1AD34B8B580CE /* Frameworks */, ); sourceTree = ""; }; @@ -199,6 +240,35 @@ path = watchOSUITests; sourceTree = ""; }; + 4CCBED2703C1AD34B8B580CE /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3C26AC213605AB4B014F275A /* Pods_watchOS.framework */, + 74D673C0316C1D7E8FD48AF3 /* Pods_watchOS_WatchKit_App.framework */, + 86A1481A9834F41A2F16B1A3 /* Pods_watchOS_WatchKit_Extension.framework */, + F0B5E9156AA4A57B743A6C7A /* Pods_watchOS_watchOSUITests.framework */, + 1DB8145DBF7BAC70EB488446 /* Pods_watchOSTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 68783D1BE47ABB24AB5AEE1C /* Pods */ = { + isa = PBXGroup; + children = ( + FB84CB0F69D669078368954A /* Pods-watchOS.debug.xcconfig */, + 9C10860CC5560FD04880CA88 /* Pods-watchOS.release.xcconfig */, + 600D98AF6220105D02CCE51B /* Pods-watchOS WatchKit App.debug.xcconfig */, + 001F31778035258F2F137608 /* Pods-watchOS WatchKit App.release.xcconfig */, + 352D6FF90CA02B685F1CBE32 /* Pods-watchOS WatchKit Extension.debug.xcconfig */, + 4F1213079D637786D63ADE2A /* Pods-watchOS WatchKit Extension.release.xcconfig */, + 091623C2A6E351665A17F4F7 /* Pods-watchOS-watchOSUITests.debug.xcconfig */, + 8527CBB4447A65D5973155C8 /* Pods-watchOS-watchOSUITests.release.xcconfig */, + 61D67141901C18809291BDB5 /* Pods-watchOSTests.debug.xcconfig */, + 6EC3B27DC32CA5DF9210AB97 /* Pods-watchOSTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -206,8 +276,10 @@ isa = PBXNativeTarget; buildConfigurationList = 3D178E0A26CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS" */; buildPhases = ( + F015394FE1310EDD3A11A4F5 /* [CP] Check Pods Manifest.lock */, 3D178DC226CA861800FC5FC3 /* Resources */, 3D178E0926CA861A00FC5FC3 /* Embed Watch Content */, + C641C1F40095975E4C686120 /* Frameworks */, ); buildRules = ( ); @@ -223,8 +295,10 @@ isa = PBXNativeTarget; buildConfigurationList = 3D178E0626CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS WatchKit App" */; buildPhases = ( + 5EB8AD24914CEC09C944576C /* [CP] Check Pods Manifest.lock */, 3D178DC626CA861800FC5FC3 /* Resources */, 3D178E0526CA861A00FC5FC3 /* Embed App Extensions */, + 63FF231FB1BE5382DFCC9B7C /* Frameworks */, ); buildRules = ( ); @@ -240,6 +314,8 @@ isa = PBXNativeTarget; buildConfigurationList = 3D178E0226CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOS WatchKit Extension" */; buildPhases = ( + E03D0D536D53B314D1A31684 /* [CP] Check Pods Manifest.lock */, + 3DDD56D926CAC26F00287FF2 /* Build Kotlin/Native */, 3D178DD026CA861900FC5FC3 /* Sources */, 3D178DD126CA861900FC5FC3 /* Frameworks */, 3D178DD226CA861900FC5FC3 /* Resources */, @@ -257,6 +333,7 @@ isa = PBXNativeTarget; buildConfigurationList = 3D178E0D26CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOSTests" */; buildPhases = ( + 4022ED38BAD65CA2C485C87C /* [CP] Check Pods Manifest.lock */, 3D178DEA26CA861A00FC5FC3 /* Sources */, 3D178DEB26CA861A00FC5FC3 /* Frameworks */, 3D178DEC26CA861A00FC5FC3 /* Resources */, @@ -275,6 +352,7 @@ isa = PBXNativeTarget; buildConfigurationList = 3D178E1026CA861A00FC5FC3 /* Build configuration list for PBXNativeTarget "watchOSUITests" */; buildPhases = ( + CED8D6C05BE598F7D0535E7B /* [CP] Check Pods Manifest.lock */, 3D178DF526CA861A00FC5FC3 /* Sources */, 3D178DF626CA861A00FC5FC3 /* Frameworks */, 3D178DF726CA861A00FC5FC3 /* Resources */, @@ -380,6 +458,137 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 3DDD56D926CAC26F00287FF2 /* Build Kotlin/Native */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Build Kotlin/Native"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cd $SRCROOT/..\n./gradlew :mpp-sample:compileKotlinWatchosX64\n"; + }; + 4022ED38BAD65CA2C485C87C /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-watchOSTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 5EB8AD24914CEC09C944576C /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-watchOS WatchKit App-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + CED8D6C05BE598F7D0535E7B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-watchOS-watchOSUITests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E03D0D536D53B314D1A31684 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-watchOS WatchKit Extension-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + F015394FE1310EDD3A11A4F5 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-watchOS-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 3D178DD026CA861900FC5FC3 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -551,11 +760,13 @@ }; 3D178E0326CA861A00FC5FC3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 352D6FF90CA02B685F1CBE32 /* Pods-watchOS WatchKit Extension.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"watchOS WatchKit Extension/Preview Content\""; ENABLE_PREVIEWS = YES; + EXCLUDED_ARCHS = arm64; INFOPLIST_FILE = "watchOS WatchKit Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -574,11 +785,13 @@ }; 3D178E0426CA861A00FC5FC3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 4F1213079D637786D63ADE2A /* Pods-watchOS WatchKit Extension.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"watchOS WatchKit Extension/Preview Content\""; ENABLE_PREVIEWS = YES; + EXCLUDED_ARCHS = arm64; INFOPLIST_FILE = "watchOS WatchKit Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -597,11 +810,13 @@ }; 3D178E0726CA861A00FC5FC3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 600D98AF6220105D02CCE51B /* Pods-watchOS WatchKit App.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; + EXCLUDED_ARCHS = arm64; IBSC_MODULE = watchOS_WatchKit_Extension; INFOPLIST_FILE = "watchOS WatchKit App/Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS.watchkitapp; @@ -616,11 +831,13 @@ }; 3D178E0826CA861A00FC5FC3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 001F31778035258F2F137608 /* Pods-watchOS WatchKit App.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; + EXCLUDED_ARCHS = arm64; IBSC_MODULE = watchOS_WatchKit_Extension; INFOPLIST_FILE = "watchOS WatchKit App/Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS.watchkitapp; @@ -635,30 +852,37 @@ }; 3D178E0B26CA861A00FC5FC3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = FB84CB0F69D669078368954A /* Pods-watchOS.debug.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + EXCLUDED_ARCHS = arm64e; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SWIFT_VERSION = 5.0; }; name = Debug; }; 3D178E0C26CA861A00FC5FC3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 9C10860CC5560FD04880CA88 /* Pods-watchOS.release.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + EXCLUDED_ARCHS = arm64e; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = io.github.aakira.napier.watchOS; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SWIFT_VERSION = 5.0; }; name = Release; }; 3D178E0E26CA861A00FC5FC3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 61D67141901C18809291BDB5 /* Pods-watchOSTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -681,6 +905,7 @@ }; 3D178E0F26CA861A00FC5FC3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 6EC3B27DC32CA5DF9210AB97 /* Pods-watchOSTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -703,6 +928,7 @@ }; 3D178E1126CA861A00FC5FC3 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 091623C2A6E351665A17F4F7 /* Pods-watchOS-watchOSUITests.debug.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = watchOSUITests/Info.plist; @@ -723,6 +949,7 @@ }; 3D178E1226CA861A00FC5FC3 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 8527CBB4447A65D5973155C8 /* Pods-watchOS-watchOSUITests.release.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; INFOPLIST_FILE = watchOSUITests/Info.plist; diff --git a/watchOS/watchOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/watchOS/watchOS.xcodeproj/project.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index 45093a58071221294b17bca296bfae3fcb68dd86..1aa0389e454ef9b97f11f9c2390871b4c96f7349 100644 GIT binary patch delta 13105 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 diff --git a/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist index 4638399..9839728 100644 --- a/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/watchOS/watchOS.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,17 +7,17 @@ watchOS WatchKit App (Complication).xcscheme_^#shared#^_ orderHint - 2 + 8 watchOS WatchKit App (Notification).xcscheme_^#shared#^_ orderHint - 1 + 7 watchOS WatchKit App.xcscheme_^#shared#^_ orderHint - 0 + 6 diff --git a/watchOS/watchOS.xcworkspace/contents.xcworkspacedata b/watchOS/watchOS.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..e245369 --- /dev/null +++ b/watchOS/watchOS.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/watchOS/watchOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/watchOS/watchOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/watchOS/watchOS.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/watchOS/watchOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/watchOS/watchOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7e2b4a1a6857b2ffb56fddc5d3aa6909b1d3c770 GIT binary patch literal 40832 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 Date: Tue, 17 Aug 2021 01:21:03 +0900 Subject: [PATCH 18/34] Native test on pull request. --- .github/workflows/pull_request.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 6b358f2..38159fe 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -28,6 +28,10 @@ jobs: run: ./gradlew :napier:iosX64Test --stacktrace - name: Run jvm tests run: ./gradlew :napier:jvmTest --stacktrace + - name: Run macos tests + run: ./gradlew :napier:macosX64Test --stacktrace + - name: Run watchos tests + run: ./gradlew :napier:watchosX64Test --stacktrace - name: Bundle the build report if: failure() From 9aea0e3e57ba7d0e4294db7c47ff8062b36dcff0 Mon Sep 17 00:00:00 2001 From: AAkira Date: Tue, 17 Aug 2021 01:25:12 +0900 Subject: [PATCH 19/34] Add tvOS. --- .github/workflows/pull_request.yml | 2 ++ napier/build.gradle.kts | 11 +++++++++++ .../xcschemes/xcschememanagement.plist | 12 ++++++++++++ 3 files changed, 25 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 38159fe..67b6c7e 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -32,6 +32,8 @@ jobs: run: ./gradlew :napier:macosX64Test --stacktrace - name: Run watchos tests run: ./gradlew :napier:watchosX64Test --stacktrace + - name: Run tvos tests + run: ./gradlew :napier:tvosX64Test --stacktrace - name: Bundle the build report if: failure() diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 9e0de84..9fb4399 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -35,6 +35,11 @@ kotlin { framework() } } + tvos { + binaries { + framework() + } + } sourceSets { val commonMain by getting { @@ -108,6 +113,12 @@ kotlin { val watchosTest by getting { dependsOn(nativeTest) } + val tvosMain by getting { + dependsOn(nativeMain) + } + val tvosTest by getting { + dependsOn(nativeTest) + } } } diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist index b876e25..4b1a3d2 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -8,31 +8,43 @@ isShown + orderHint + 2 Pods-watchOS WatchKit Extension.xcscheme isShown + orderHint + 3 Pods-watchOS-watchOSUITests.xcscheme isShown + orderHint + 4 Pods-watchOS.xcscheme isShown + orderHint + 1 Pods-watchOSTests.xcscheme isShown + orderHint + 5 mpp_sample.xcscheme isShown + orderHint + 0 SuppressBuildableAutocreation From 6bbfaf88f2dcd14f7eed50829d586fb04b3f6e85 Mon Sep 17 00:00:00 2001 From: AAkira Date: Tue, 17 Aug 2021 02:07:13 +0900 Subject: [PATCH 20/34] Refactoring gradle and directory name. --- .../UserInterfaceState.xcuserstate | Bin 35619 -> 34574 bytes mpp-sample/build.gradle.kts | 8 +++--- .../aakira/napier/mppsample/Coroutine.kt | 0 .../aakira/napier/mppsample/CoroutineProxy.kt | 0 .../napier/mppsample/CrashlyticsAntilog.kt | 0 .../aakira/napier/mppsample/NapierProxy.kt | 0 .../aakira/napier/mppsample/RunBlocking.kt | 0 napier/build.gradle.kts | 27 ++++++++---------- .../io/github/aakira/napier/DebugAntilog.kt | 0 .../github/aakira/napier/atomic/AtomicRef.kt | 0 .../io/github/aakira/napier/NapierIosTest.kt | 0 .../github/aakira/napier/TestRunBlocking.kt | 0 .../Pods-watchOS WatchKit App.xcscheme | 24 +++++++--------- .../Pods-watchOS WatchKit Extension.xcscheme | 24 +++++++--------- .../Pods-watchOS-watchOSUITests.xcscheme | 24 +++++++--------- .../xcschemes/Pods-watchOS.xcscheme | 24 +++++++--------- .../xcschemes/Pods-watchOSTests.xcscheme | 24 +++++++--------- .../xcschemes/xcschememanagement.plist | 12 ++++++++ .../UserInterfaceState.xcuserstate | Bin 40832 -> 30816 bytes 19 files changed, 83 insertions(+), 84 deletions(-) rename mpp-sample/src/{nativeMain => appleMain}/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt (100%) rename mpp-sample/src/{nativeMain => appleMain}/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt (100%) rename mpp-sample/src/{nativeMain => appleMain}/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt (100%) rename mpp-sample/src/{nativeMain => appleMain}/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt (100%) rename mpp-sample/src/{nativeMain => appleMain}/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt (100%) rename napier/src/{iosMain => appleMain}/kotlin/io/github/aakira/napier/DebugAntilog.kt (100%) rename napier/src/{iosMain => appleMain}/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt (100%) rename napier/src/{iosTest => appleTest}/kotlin/io/github/aakira/napier/NapierIosTest.kt (100%) rename napier/src/{iosTest => appleTest}/kotlin/io/github/aakira/napier/TestRunBlocking.kt (100%) diff --git a/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index 31c95ee7785ca3e213ab1ade648a172ca6c1ae46..9f80eb849cf0462c7cf13e06a5b8c86da1ba85f9 100644 GIT binary patch delta 6482 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 delta 6821 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 diff --git a/mpp-sample/build.gradle.kts b/mpp-sample/build.gradle.kts index 1eab6fb..c9a429c 100644 --- a/mpp-sample/build.gradle.kts +++ b/mpp-sample/build.gradle.kts @@ -43,17 +43,17 @@ kotlin { implementation(Dep.Kotlin.jvm) } } - val nativeMain by creating { + val appleMain by creating { dependsOn(commonMain) } val iosMain by getting { - dependsOn(nativeMain) + dependsOn(appleMain) } val macosX64Main by getting { - dependsOn(nativeMain) + dependsOn(appleMain) } val watchosX64Main by getting { - dependsOn(nativeMain) + dependsOn(appleMain) } } diff --git a/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt similarity index 100% rename from mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt rename to mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt diff --git a/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt similarity index 100% rename from mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt rename to mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt diff --git a/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt similarity index 100% rename from mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt rename to mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt diff --git a/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt similarity index 100% rename from mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt rename to mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt diff --git a/mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt similarity index 100% rename from mpp-sample/src/nativeMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt rename to mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 9e0de84..05127ac 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -81,32 +81,29 @@ kotlin { } } - val iosMain by getting { - dependencies { } - } - val iosTest by getting { - dependencies { } - } - - val nativeMain by creating { + val appleMain by creating { dependsOn(commonMain) } - val nativeTest by creating { + val appleTest by creating { dependsOn(commonTest) } - + val iosMain by getting { + dependsOn(appleMain) + } + val iosTest by getting { + dependsOn(appleTest) + } val macosX64Main by getting { - dependsOn(nativeMain) + dependsOn(appleMain) } val macosX64Test by getting { - dependsOn(nativeTest) + dependsOn(appleTest) } - val watchosMain by getting { - dependsOn(nativeMain) + dependsOn(appleMain) } val watchosTest by getting { - dependsOn(nativeTest) + dependsOn(appleTest) } } } diff --git a/napier/src/iosMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt similarity index 100% rename from napier/src/iosMain/kotlin/io/github/aakira/napier/DebugAntilog.kt rename to napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt diff --git a/napier/src/iosMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/appleMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt similarity index 100% rename from napier/src/iosMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt rename to napier/src/appleMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt diff --git a/napier/src/iosTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt similarity index 100% rename from napier/src/iosTest/kotlin/io/github/aakira/napier/NapierIosTest.kt rename to napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt diff --git a/napier/src/iosTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt b/napier/src/appleTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt similarity index 100% rename from napier/src/iosTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt rename to napier/src/appleTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme index bc9df6d..f988755 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit App.xcscheme @@ -7,15 +7,15 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES" + buildForAnalyzing = "YES"> @@ -23,14 +23,15 @@ - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme index e46e9a6..22d999f 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS WatchKit Extension.xcscheme @@ -7,15 +7,15 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES" + buildForAnalyzing = "YES"> @@ -23,14 +23,15 @@ - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme index 3d8890a..3bef13e 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS-watchOSUITests.xcscheme @@ -7,15 +7,15 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES" + buildForAnalyzing = "YES"> @@ -23,14 +23,15 @@ - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme index 3660253..8f568d5 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOS.xcscheme @@ -7,15 +7,15 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES" + buildForAnalyzing = "YES"> @@ -23,14 +23,15 @@ - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme index 071a18b..e3b1ef9 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/Pods-watchOSTests.xcscheme @@ -7,15 +7,15 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES" + buildForAnalyzing = "YES"> @@ -23,14 +23,15 @@ - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist index b876e25..4b1a3d2 100644 --- a/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/watchOS/Pods/Pods.xcodeproj/xcuserdata/aakira.xcuserdatad/xcschemes/xcschememanagement.plist @@ -8,31 +8,43 @@ isShown + orderHint + 2 Pods-watchOS WatchKit Extension.xcscheme isShown + orderHint + 3 Pods-watchOS-watchOSUITests.xcscheme isShown + orderHint + 4 Pods-watchOS.xcscheme isShown + orderHint + 1 Pods-watchOSTests.xcscheme isShown + orderHint + 5 mpp_sample.xcscheme isShown + orderHint + 0 SuppressBuildableAutocreation diff --git a/watchOS/watchOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate b/watchOS/watchOS.xcworkspace/xcuserdata/aakira.xcuserdatad/UserInterfaceState.xcuserstate index 7e2b4a1a6857b2ffb56fddc5d3aa6909b1d3c770..f75d7bcb47766e42f6192ebb9856e78898f92c38 100644 GIT binary patch delta 11710 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 Date: Tue, 17 Aug 2021 02:13:56 +0900 Subject: [PATCH 21/34] Bump up the version code and name. --- buildSrc/src/main/kotlin/dependencies/Versions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/dependencies/Versions.kt b/buildSrc/src/main/kotlin/dependencies/Versions.kt index aebe650..a2a65e0 100644 --- a/buildSrc/src/main/kotlin/dependencies/Versions.kt +++ b/buildSrc/src/main/kotlin/dependencies/Versions.kt @@ -1,8 +1,8 @@ package dependencies object Versions { - const val versionCode = 16 - const val versionName = "2.0.0-alpha1" + const val versionCode = 17 + const val versionName = "2.0.0-alpha2" // android const val androidVersionCode = 1 From 3580d9138ab6cd172ded44deb8bea79fc20f041d Mon Sep 17 00:00:00 2001 From: AAkira Date: Tue, 17 Aug 2021 02:15:57 +0900 Subject: [PATCH 22/34] Refactoring tvos. --- napier/build.gradle.kts | 4 +- .../io/github/aakira/napier/DebugAntilog.kt | 68 ------------------- .../github/aakira/napier/atomic/AtomicRef.kt | 13 ---- .../io/github/aakira/napier/NapierIosTest.kt | 27 -------- .../github/aakira/napier/TestRunBlocking.kt | 7 -- 5 files changed, 2 insertions(+), 117 deletions(-) delete mode 100644 napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt delete mode 100644 napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt delete mode 100644 napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt delete mode 100644 napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 75c3b68..cba841f 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -111,10 +111,10 @@ kotlin { dependsOn(appleTest) } val tvosMain by getting { - dependsOn(nativeMain) + dependsOn(appleMain) } val tvosTest by getting { - dependsOn(nativeTest) + dependsOn(appleTest) } } } diff --git a/napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt deleted file mode 100644 index 3da677c..0000000 --- a/napier/src/nativeMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ /dev/null @@ -1,68 +0,0 @@ -package io.github.aakira.napier - -import platform.Foundation.NSDate -import platform.Foundation.NSDateFormatter -import platform.Foundation.NSThread - -private const val CALL_STACK_INDEX = 8 - -class DebugAntilog(private val defaultTag: String = "app") : Antilog() { - - var crashAssert = false - - private val dateFormatter = NSDateFormatter().apply { - dateFormat = "MM-dd HH:mm:ss.SSS" - } - - private val tagMap: HashMap = hashMapOf( - Napier.Level.VERBOSE to "💜 VERBOSE", - Napier.Level.DEBUG to "💚 DEBUG", - Napier.Level.INFO to "💙 INFO", - Napier.Level.WARNING to "💛 WARN", - Napier.Level.ERROR to "❤️ ERROR", - Napier.Level.ASSERT to "💞 ASSERT" - ) - - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { - if (priority == Napier.Level.ASSERT) { - assert(crashAssert) { buildLog(priority, tag, message) } - } else { - println(buildLog(priority, tag, message)) - } - } - - fun setTag(level: Napier.Level, tag: String) { - tagMap[level] = tag - } - - fun setDateFormatterString(formatter: String) { - dateFormatter.dateFormat = formatter - } - - private fun getCurrentTime() = dateFormatter.stringFromDate(NSDate()) - - private fun buildLog(priority: Napier.Level, tag: String?, message: String?): String { - return "${getCurrentTime()} ${tagMap[priority]} ${tag ?: performTag(defaultTag)} - $message" - } - - // find stack trace - private fun performTag(tag: String): String { - val thread = NSThread.callStackSymbols - - return if (thread.size >= CALL_STACK_INDEX) { - createStackElementTag(thread[CALL_STACK_INDEX] as String) - } else { - tag - } - } - - internal fun createStackElementTag(string: String): String { - var tag = string - tag = tag.substringBeforeLast('$') - tag = tag.substringBeforeLast('(') - tag = tag.substring(tag.lastIndexOf(".", tag.lastIndexOf(".") - 1) + 1) - tag = tag.replace("$", "") - tag = tag.replace("COROUTINE", "") - return tag - } -} diff --git a/napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt deleted file mode 100644 index 54ff37d..0000000 --- a/napier/src/nativeMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.aakira.napier.atomic - -import kotlin.native.concurrent.AtomicReference -import kotlin.native.concurrent.freeze - -internal actual class AtomicRef actual constructor(value: T) { - private val atomicRef = AtomicReference(value.freeze()) - actual var value: T - get() = atomicRef.value - set(value) { - atomicRef.value = value.freeze() - } -} diff --git a/napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt deleted file mode 100644 index 7550c8f..0000000 --- a/napier/src/nativeTest/kotlin/io/github/aakira/napier/NapierIosTest.kt +++ /dev/null @@ -1,27 +0,0 @@ -package io.github.aakira.napier - -import kotlin.test.Test -import kotlin.test.assertEquals - -class NapierIosTest { - - @Test - fun `Check createStackElementTag`() { - val debugAntilog = DebugAntilog() - - val sampleHello = debugAntilog.createStackElementTag( - "::: 8 Common 0x000000010db38cb3 kfun:io.github.aakira.napier.mppsample.Sample.hello()kotlin.String + 211" - ) - assertEquals("Sample.hello", sampleHello) - - val handleError = debugAntilog.createStackElementTag( - "::: 8 Common 0x000000010db396c0 kfun:io.github.aakira.napier.mppsample.Sample.handleError() + 432" - ) - assertEquals("Sample.handleError", handleError) - - val coroutine = debugAntilog.createStackElementTag( - "::: 8 Common 0x000000010db39132 kfun:io.github.aakira.napier.mppsample.Sample.\$suspendHelloCOROUTINE\$0.invokeSuspend(kotlin.Result)kotlin.Any? + 626" - ) - assertEquals("Sample.suspendHello", coroutine) - } -} diff --git a/napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt b/napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt deleted file mode 100644 index 9a3dd30..0000000 --- a/napier/src/nativeTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.aakira.napier - -import kotlinx.coroutines.runBlocking - -actual fun testRunBlocking(block: suspend () -> T) { - runBlocking { block() } -} From e2efb7342161cef5ebafd4d5d9ddf2b669d0bf1d Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 19 Aug 2021 01:45:46 +0900 Subject: [PATCH 23/34] Modify debug antilog in kotlin/native on darwin. --- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 13 ++++++++++--- .../kotlin/io/github/aakira/napier/NapierIosTest.kt | 8 ++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 3da677c..6e74889 100644 --- a/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -60,9 +60,16 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { var tag = string tag = tag.substringBeforeLast('$') tag = tag.substringBeforeLast('(') - tag = tag.substring(tag.lastIndexOf(".", tag.lastIndexOf(".") - 1) + 1) - tag = tag.replace("$", "") - tag = tag.replace("COROUTINE", "") + if(tag.contains("$")) { + // coroutines + tag = tag.substring(tag.lastIndexOf(".", tag.lastIndexOf(".") - 1) + 1) + tag = tag.replace("$", "") + tag = tag.replace("COROUTINE", "") + } else { + // others + tag = tag.substringAfterLast(".") + tag = tag.replace("#", ".") + } return tag } } diff --git a/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt index 7550c8f..066e5d8 100644 --- a/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt +++ b/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt @@ -10,18 +10,18 @@ class NapierIosTest { val debugAntilog = DebugAntilog() val sampleHello = debugAntilog.createStackElementTag( - "::: 8 Common 0x000000010db38cb3 kfun:io.github.aakira.napier.mppsample.Sample.hello()kotlin.String + 211" + "8 Napier 0x0000000100f0eb3d kfun:io.github.aakira.napier.mppsample.Sample#hello(){}kotlin.String + 205" ) assertEquals("Sample.hello", sampleHello) val handleError = debugAntilog.createStackElementTag( - "::: 8 Common 0x000000010db396c0 kfun:io.github.aakira.napier.mppsample.Sample.handleError() + 432" + "8 Napier 0x0000000100f0f57c kfun:io.github.aakira.napier.mppsample.Sample#handleError(){} + 412" ) assertEquals("Sample.handleError", handleError) val coroutine = debugAntilog.createStackElementTag( - "::: 8 Common 0x000000010db39132 kfun:io.github.aakira.napier.mppsample.Sample.\$suspendHelloCOROUTINE\$0.invokeSuspend(kotlin.Result)kotlin.Any? + 626" + "8 Napier 0x0000000100f0f0e2 kfun:io.github.aakira.napier.mppsample.Sample.\$suspendHelloCOROUTINE\$2#invokeSuspend(kotlin.Result){}kotlin.Any? + 930" ) - assertEquals("Sample.suspendHello", coroutine) + assertEquals("Sample.suspendHello[async]", coroutine) } } From 71747dfc59a3c95752458f118ad9b843cec2edf9 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 19 Aug 2021 02:07:16 +0900 Subject: [PATCH 24/34] Add [async] suffix if it's called from suspend functions. --- .../aakira/napier/mppsample/NapierProxy.kt | 2 +- .../io/github/aakira/napier/DebugAntilog.kt | 16 ++++++++++---- .../io/github/aakira/napier/NapierIosTest.kt | 22 +++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt index aa8c853..9210959 100644 --- a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt +++ b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt @@ -5,7 +5,7 @@ import io.github.aakira.napier.DebugAntilog import io.github.aakira.napier.Napier fun debugBuild() { - Napier.base(DebugAntilog()) + Napier.base(DebugAntilog(coroutinesSuffix = false)) } fun releaseBuild(antilog: Antilog) { diff --git a/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 6e74889..3dfcb70 100644 --- a/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -6,7 +6,10 @@ import platform.Foundation.NSThread private const val CALL_STACK_INDEX = 8 -class DebugAntilog(private val defaultTag: String = "app") : Antilog() { +class DebugAntilog( + private val defaultTag: String = "app", + private val coroutinesSuffix: Boolean = true, +) : Antilog() { var crashAssert = false @@ -23,7 +26,12 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { Napier.Level.ASSERT to "💞 ASSERT" ) - override fun performLog(priority: Napier.Level, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog( + priority: Napier.Level, + tag: String?, + throwable: Throwable?, + message: String? + ) { if (priority == Napier.Level.ASSERT) { assert(crashAssert) { buildLog(priority, tag, message) } } else { @@ -60,11 +68,11 @@ class DebugAntilog(private val defaultTag: String = "app") : Antilog() { var tag = string tag = tag.substringBeforeLast('$') tag = tag.substringBeforeLast('(') - if(tag.contains("$")) { + if (tag.contains("$")) { // coroutines tag = tag.substring(tag.lastIndexOf(".", tag.lastIndexOf(".") - 1) + 1) tag = tag.replace("$", "") - tag = tag.replace("COROUTINE", "") + tag = tag.replace("COROUTINE", if (coroutinesSuffix) "[async]" else "") } else { // others tag = tag.substringAfterLast(".") diff --git a/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt index 066e5d8..0b2b52c 100644 --- a/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt +++ b/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt @@ -24,4 +24,26 @@ class NapierIosTest { ) assertEquals("Sample.suspendHello[async]", coroutine) } + + @Test + fun `Check createStackElementTag without coroutines suffix`() { + val debugAntilog = DebugAntilog( + coroutinesSuffix = false, + ) + + val sampleHello = debugAntilog.createStackElementTag( + "8 Napier 0x0000000100f0eb3d kfun:io.github.aakira.napier.mppsample.Sample#hello(){}kotlin.String + 205" + ) + assertEquals("Sample.hello", sampleHello) + + val handleError = debugAntilog.createStackElementTag( + "8 Napier 0x0000000100f0f57c kfun:io.github.aakira.napier.mppsample.Sample#handleError(){} + 412" + ) + assertEquals("Sample.handleError", handleError) + + val coroutine = debugAntilog.createStackElementTag( + "8 Napier 0x0000000100f0f0e2 kfun:io.github.aakira.napier.mppsample.Sample.\$suspendHelloCOROUTINE\$2#invokeSuspend(kotlin.Result){}kotlin.Any? + 930" + ) + assertEquals("Sample.suspendHello", coroutine) + } } From 5b25d6bafa84118712c99c20bca7f2133be66941 Mon Sep 17 00:00:00 2001 From: AAkira Date: Thu, 19 Aug 2021 02:07:35 +0900 Subject: [PATCH 25/34] Update readme. --- README.md | 18 +++++++++++++----- arts/screen-shot-ios.jpg | Bin 0 -> 40356 bytes 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 arts/screen-shot-ios.jpg diff --git a/README.md b/README.md index ef2efe2..9c0e23d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ ![logo][logo] Napier is a logger library for Kotlin Multiplatform. -It supports for the android, ios, jvm, js. +It supports for the Android, Darwin(iOS, macOS, watchOS, tvOS), JVM, JavaScript. Logs written in common module are displayed on logger viewer of each platform. -* Android +## Preview + +### Android format: `[Class name]$[Method name]: [Your log]` @@ -12,21 +14,23 @@ uses the `android.util.Log`(Logcat) ![preview-android][preview-android] -* ios +### Darwin(iOS, macOS, watchOS, tvOS) format: `[Date time][Symbol][Log level][Class name].[Method name] - [Your log]` +Added `[async]` label at the end, if it is called from suspend functions. + uses the `print` ![preview-ios][preview-ios] -* js +### JavaScript uses the `console.log` ![preview-js][preview-js] -* jvm +### JVM uses the `java.util.logging.Logger` @@ -175,6 +179,10 @@ fun debugBuild() { } ``` +|argument|type|description| +|-|-| +|coroutinesSuffix|Boolean|Added `[async]` label at the end, if it is called from suspend functions| + * Call initialize code from ios project. ```swift diff --git a/arts/screen-shot-ios.jpg b/arts/screen-shot-ios.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67b83c7c94ade5bd72b4c41c0823c4efe1c98dc3 GIT binary patch literal 40356 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¬ERe!`j9^qr$X;3A8nR8P7J@w^F7c+oQVJd@(wY= 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 Date: Thu, 19 Aug 2021 02:11:52 +0900 Subject: [PATCH 26/34] Restore debugAntilog initializer in ios. --- .../kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt index 9210959..aa8c853 100644 --- a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt +++ b/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt @@ -5,7 +5,7 @@ import io.github.aakira.napier.DebugAntilog import io.github.aakira.napier.Napier fun debugBuild() { - Napier.base(DebugAntilog(coroutinesSuffix = false)) + Napier.base(DebugAntilog()) } fun releaseBuild(antilog: Antilog) { From 7878946e068b0d513ac4b4abea297383a4600a64 Mon Sep 17 00:00:00 2001 From: AAkira Date: Fri, 20 Aug 2021 02:02:21 +0900 Subject: [PATCH 27/34] Refactoring gradle. --- mpp-sample/build.gradle.kts | 34 +++++++++--- napier/build.gradle.kts | 108 +++++++++++++++++++++++------------- 2 files changed, 97 insertions(+), 45 deletions(-) diff --git a/mpp-sample/build.gradle.kts b/mpp-sample/build.gradle.kts index c9a429c..430e595 100644 --- a/mpp-sample/build.gradle.kts +++ b/mpp-sample/build.gradle.kts @@ -9,15 +9,24 @@ plugins { version = "1.0.0" +val ideaActive = System.getProperty("idea.active") == "true" + kotlin { android() js { browser() } jvm() - ios() + + // darwin macosX64() - watchosX64() + if (ideaActive) { + ios() + watchos() + } else { + iosX64() + watchosX64() + } sourceSets { val commonMain by getting { @@ -43,17 +52,28 @@ kotlin { implementation(Dep.Kotlin.jvm) } } + + // darwin val appleMain by creating { dependsOn(commonMain) } - val iosMain by getting { - dependsOn(appleMain) - } val macosX64Main by getting { dependsOn(appleMain) } - val watchosX64Main by getting { - dependsOn(appleMain) + if (ideaActive) { + val iosMain by getting { + dependsOn(appleMain) + } + val watchosMain by getting { + dependsOn(appleMain) + } + } else { + val iosX64Main by getting { + dependsOn(appleMain) + } + val watchosX64Main by getting { + dependsOn(appleMain) + } } } diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index cba841f..227cb6e 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -20,24 +20,39 @@ kotlin { } jvm() - ios { - binaries { - framework() + if (ideaActive) { + // darwin + ios { + binaries { + framework() + } } - } - macosX64 { - binaries { - framework() + watchos { + binaries { + framework() + } } - } - watchos { - binaries { - framework() + tvos { + binaries { + framework() + } } - } - tvos { - binaries { - framework() + } else { + // darwin + iosX64 { + binaries { + framework() + } + } + watchosX64 { + binaries { + framework() + } + } + tvosX64 { + binaries { + framework() + } } } @@ -92,29 +107,46 @@ kotlin { val appleTest by creating { dependsOn(commonTest) } - val iosMain by getting { - dependsOn(appleMain) - } - val iosTest by getting { - dependsOn(appleTest) - } - val macosX64Main by getting { - dependsOn(appleMain) - } - val macosX64Test by getting { - dependsOn(appleTest) - } - val watchosMain by getting { - dependsOn(appleMain) - } - val watchosTest by getting { - dependsOn(appleTest) - } - val tvosMain by getting { - dependsOn(appleMain) - } - val tvosTest by getting { - dependsOn(appleTest) + if (ideaActive) { + // darwin + val iosMain by getting { + dependsOn(appleMain) + } + val iosTest by getting { + dependsOn(appleTest) + } + val watchosMain by getting { + dependsOn(appleMain) + } + val watchosTest by getting { + dependsOn(appleTest) + } + val tvosMain by getting { + dependsOn(appleMain) + } + val tvosTest by getting { + dependsOn(appleTest) + } + } else { + // darwin + val iosX64Main by getting { + dependsOn(appleMain) + } + val iosX64Test by getting { + dependsOn(appleTest) + } + val watchosX64Main by getting { + dependsOn(appleMain) + } + val watchosX64Test by getting { + dependsOn(appleTest) + } + val tvosX64Main by getting { + dependsOn(appleMain) + } + val tvosX64Test by getting { + dependsOn(appleTest) + } } } } From 4c5da369f766731267426c321af61ebde9b38c6f Mon Sep 17 00:00:00 2001 From: AAkira Date: Fri, 20 Aug 2021 02:18:53 +0900 Subject: [PATCH 28/34] Rename darwin. --- mpp-sample/build.gradle.kts | 14 ++++---- .../aakira/napier/mppsample/Coroutine.kt | 0 .../aakira/napier/mppsample/CoroutineProxy.kt | 0 .../napier/mppsample/CrashlyticsAntilog.kt | 0 .../aakira/napier/mppsample/NapierProxy.kt | 0 .../aakira/napier/mppsample/RunBlocking.kt | 0 napier/build.gradle.kts | 32 +++++++++---------- .../io/github/aakira/napier/DebugAntilog.kt | 0 .../github/aakira/napier/atomic/AtomicRef.kt | 0 .../io/github/aakira/napier/NapierIosTest.kt | 0 .../github/aakira/napier/TestRunBlocking.kt | 0 11 files changed, 23 insertions(+), 23 deletions(-) rename mpp-sample/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt (100%) rename mpp-sample/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt (100%) rename mpp-sample/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt (100%) rename mpp-sample/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt (100%) rename mpp-sample/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt (100%) rename napier/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/DebugAntilog.kt (100%) rename napier/src/{appleMain => darwinMain}/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt (100%) rename napier/src/{appleTest => darwinTest}/kotlin/io/github/aakira/napier/NapierIosTest.kt (100%) rename napier/src/{appleTest => darwinTest}/kotlin/io/github/aakira/napier/TestRunBlocking.kt (100%) diff --git a/mpp-sample/build.gradle.kts b/mpp-sample/build.gradle.kts index 430e595..6e68545 100644 --- a/mpp-sample/build.gradle.kts +++ b/mpp-sample/build.gradle.kts @@ -53,26 +53,26 @@ kotlin { } } - // darwin - val appleMain by creating { + // apple + val darwinMain by creating { dependsOn(commonMain) } val macosX64Main by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } if (ideaActive) { val iosMain by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val watchosMain by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } } else { val iosX64Main by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val watchosX64Main by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } } } diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt b/mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt similarity index 100% rename from mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt rename to mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/Coroutine.kt diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt b/mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt similarity index 100% rename from mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt rename to mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/CoroutineProxy.kt diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt b/mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt similarity index 100% rename from mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt rename to mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/CrashlyticsAntilog.kt diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt b/mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt similarity index 100% rename from mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt rename to mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/NapierProxy.kt diff --git a/mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt b/mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt similarity index 100% rename from mpp-sample/src/appleMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt rename to mpp-sample/src/darwinMain/kotlin/io/github/aakira/napier/mppsample/RunBlocking.kt diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 227cb6e..1631ea7 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -101,51 +101,51 @@ kotlin { } } - val appleMain by creating { + val darwinMain by creating { dependsOn(commonMain) } - val appleTest by creating { + val darwinTest by creating { dependsOn(commonTest) } if (ideaActive) { - // darwin + // apple val iosMain by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val iosTest by getting { - dependsOn(appleTest) + dependsOn(darwinTest) } val watchosMain by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val watchosTest by getting { - dependsOn(appleTest) + dependsOn(darwinTest) } val tvosMain by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val tvosTest by getting { - dependsOn(appleTest) + dependsOn(darwinTest) } } else { - // darwin + // apple val iosX64Main by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val iosX64Test by getting { - dependsOn(appleTest) + dependsOn(darwinTest) } val watchosX64Main by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val watchosX64Test by getting { - dependsOn(appleTest) + dependsOn(darwinTest) } val tvosX64Main by getting { - dependsOn(appleMain) + dependsOn(darwinMain) } val tvosX64Test by getting { - dependsOn(appleTest) + dependsOn(darwinTest) } } } diff --git a/napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/darwinMain/kotlin/io/github/aakira/napier/DebugAntilog.kt similarity index 100% rename from napier/src/appleMain/kotlin/io/github/aakira/napier/DebugAntilog.kt rename to napier/src/darwinMain/kotlin/io/github/aakira/napier/DebugAntilog.kt diff --git a/napier/src/appleMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt b/napier/src/darwinMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt similarity index 100% rename from napier/src/appleMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt rename to napier/src/darwinMain/kotlin/io/github/aakira/napier/atomic/AtomicRef.kt diff --git a/napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt b/napier/src/darwinTest/kotlin/io/github/aakira/napier/NapierIosTest.kt similarity index 100% rename from napier/src/appleTest/kotlin/io/github/aakira/napier/NapierIosTest.kt rename to napier/src/darwinTest/kotlin/io/github/aakira/napier/NapierIosTest.kt diff --git a/napier/src/appleTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt b/napier/src/darwinTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt similarity index 100% rename from napier/src/appleTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt rename to napier/src/darwinTest/kotlin/io/github/aakira/napier/TestRunBlocking.kt From 5a4fad8c0fad7e64cf0f6daae1ff6bb2d6e3df09 Mon Sep 17 00:00:00 2001 From: AAkira Date: Fri, 20 Aug 2021 02:20:28 +0900 Subject: [PATCH 29/34] Fix idea active. --- mpp-sample/build.gradle.kts | 4 ++-- napier/build.gradle.kts | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mpp-sample/build.gradle.kts b/mpp-sample/build.gradle.kts index 6e68545..6672a1e 100644 --- a/mpp-sample/build.gradle.kts +++ b/mpp-sample/build.gradle.kts @@ -20,7 +20,7 @@ kotlin { // darwin macosX64() - if (ideaActive) { + if (ideaActive.not()) { ios() watchos() } else { @@ -60,7 +60,7 @@ kotlin { val macosX64Main by getting { dependsOn(darwinMain) } - if (ideaActive) { + if (ideaActive.not()) { val iosMain by getting { dependsOn(darwinMain) } diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index 1631ea7..d53fedf 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -20,7 +20,9 @@ kotlin { } jvm() - if (ideaActive) { + // darwin + macosX64() + if (ideaActive.not()) { // darwin ios { binaries { @@ -107,7 +109,13 @@ kotlin { val darwinTest by creating { dependsOn(commonTest) } - if (ideaActive) { + val macosX64Main by getting { + dependsOn(darwinMain) + } + val macosX64Test by getting { + dependsOn(darwinMain) + } + if (ideaActive.not()) { // apple val iosMain by getting { dependsOn(darwinMain) From 0a18a7c4a6e9ec1d7fe24775ad5567a782e3d93a Mon Sep 17 00:00:00 2001 From: AAkira Date: Fri, 20 Aug 2021 02:37:06 +0900 Subject: [PATCH 30/34] Support IR compiler(experimental). --- napier/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts index d53fedf..8dd3221 100644 --- a/napier/build.gradle.kts +++ b/napier/build.gradle.kts @@ -14,7 +14,7 @@ kotlin { android { publishAllLibraryVariants() } - js { + js(BOTH) { browser() nodejs() } From 775862a9971ac2acf4482b2ae9bb6cea9e969f46 Mon Sep 17 00:00:00 2001 From: Philip Dukhov Date: Sat, 21 Aug 2021 00:16:12 +0700 Subject: [PATCH 31/34] DebugAntilog made common class with expect/actual --- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 2 +- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 9 +++++++++ .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 3 ++- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 2 +- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 3 ++- 5 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt diff --git a/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 5a7a879..f28933e 100644 --- a/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -6,7 +6,7 @@ import java.io.PrintWriter import java.io.StringWriter import java.util.regex.Pattern -class DebugAntilog(private val defaultTag: String = "app") : Antilog() { +actual class DebugAntilog actual constructor(private val defaultTag: String) : Antilog() { companion object { private const val MAX_LOG_LENGTH = 4000 diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt new file mode 100644 index 0000000..6ef1bf5 --- /dev/null +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -0,0 +1,9 @@ +package io.github.aakira.napier + +import android.os.Build +import android.util.Log +import java.io.PrintWriter +import java.io.StringWriter +import java.util.regex.Pattern + +expect class DebugAntilog(defaultTag: String = "app") : Antilog \ No newline at end of file diff --git a/napier/src/darwinMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/darwinMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 71299eb..da425fc 100644 --- a/napier/src/darwinMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/darwinMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -6,10 +6,11 @@ import platform.Foundation.NSThread private const val CALL_STACK_INDEX = 8 -class DebugAntilog( +actual class DebugAntilog( private val defaultTag: String = "app", private val coroutinesSuffix: Boolean = true, ) : Antilog() { + actual constructor(defaultTag: String) : this(defaultTag, coroutinesSuffix = true) var crashAssert = false diff --git a/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index e56b547..175cbcc 100644 --- a/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -3,7 +3,7 @@ package io.github.aakira.napier import io.github.aakira.napier.Antilog import io.github.aakira.napier.Napier -class DebugAntilog(private val defaultTag: String = "app") : Antilog() { +actual class DebugAntilog actual constructor(private val defaultTag: String) : Antilog() { override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { val logTag = tag ?: defaultTag diff --git a/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index f770681..511019b 100644 --- a/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -9,10 +9,11 @@ import java.util.logging.Logger import java.util.logging.SimpleFormatter import java.util.regex.Pattern -class DebugAntilog( +actual class DebugAntilog( private val defaultTag: String = "app", private val handler: List = listOf() ) : Antilog() { + actual constructor(defaultTag: String) : this(defaultTag, handler = listOf()) companion object { private const val CALL_STACK_INDEX = 8 From 00104607dd64fc2674412cc63865712305c676ed Mon Sep 17 00:00:00 2001 From: Philip Dukhov Date: Sat, 21 Aug 2021 00:48:35 +0700 Subject: [PATCH 32/34] imports updated to fix build --- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 6 ------ .../jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt | 3 --- 2 files changed, 9 deletions(-) diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 6ef1bf5..7318127 100644 --- a/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -1,9 +1,3 @@ package io.github.aakira.napier -import android.os.Build -import android.util.Log -import java.io.PrintWriter -import java.io.StringWriter -import java.util.regex.Pattern - expect class DebugAntilog(defaultTag: String = "app") : Antilog \ No newline at end of file diff --git a/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 175cbcc..395a5f9 100644 --- a/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -1,8 +1,5 @@ package io.github.aakira.napier -import io.github.aakira.napier.Antilog -import io.github.aakira.napier.Napier - actual class DebugAntilog actual constructor(private val defaultTag: String) : Antilog() { override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { From 221563a82272bee380a2dc6a0f2db1ab0ab1c64e Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 23 Aug 2021 01:44:58 +0900 Subject: [PATCH 33/34] Format files. --- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 7 ++++++- .../kotlin/io/github/aakira/napier/Antilog.kt | 14 ++++++++++++-- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 7 ++++++- .../kotlin/io/github/aakira/napier/DebugAntilog.kt | 7 ++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index f28933e..d09668b 100644 --- a/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -16,7 +16,12 @@ actual class DebugAntilog actual constructor(private val defaultTag: String) : A private val anonymousClass = Pattern.compile("(\\$\\d+)+$") - override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog( + priority: LogLevel, + tag: String?, + throwable: Throwable?, + message: String?, + ) { val debugTag = tag ?: performTag(defaultTag) diff --git a/napier/src/commonMain/kotlin/io/github/aakira/napier/Antilog.kt b/napier/src/commonMain/kotlin/io/github/aakira/napier/Antilog.kt index b08fa54..bfd3d60 100644 --- a/napier/src/commonMain/kotlin/io/github/aakira/napier/Antilog.kt +++ b/napier/src/commonMain/kotlin/io/github/aakira/napier/Antilog.kt @@ -10,9 +10,19 @@ abstract class Antilog { } } - internal fun rawLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { + internal fun rawLog( + priority: LogLevel, + tag: String?, + throwable: Throwable?, + message: String?, + ) { performLog(priority, tag, throwable, message) } - protected abstract fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) + protected abstract fun performLog( + priority: LogLevel, + tag: String?, + throwable: Throwable?, + message: String?, + ) } diff --git a/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 395a5f9..6eb1744 100644 --- a/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jsMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -2,7 +2,12 @@ package io.github.aakira.napier actual class DebugAntilog actual constructor(private val defaultTag: String) : Antilog() { - override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog( + priority: LogLevel, + tag: String?, + throwable: Throwable?, + message: String?, + ) { val logTag = tag ?: defaultTag val fullMessage = if (message != null) { diff --git a/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt b/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt index 511019b..41f66dd 100644 --- a/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt +++ b/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt @@ -47,7 +47,12 @@ actual class DebugAntilog( LogLevel.ASSERT to "[ASSERT]" ) - override fun performLog(priority: LogLevel, tag: String?, throwable: Throwable?, message: String?) { + override fun performLog( + priority: LogLevel, + tag: String?, + throwable: Throwable?, + message: String?, + ) { val debugTag = tag ?: performTag(defaultTag) From 9f77226d27d2ac2cbf6ae2796e14fddd4a8f57cc Mon Sep 17 00:00:00 2001 From: AAkira Date: Mon, 23 Aug 2021 01:45:17 +0900 Subject: [PATCH 34/34] Dev 2.0.0 --- buildSrc/src/main/kotlin/dependencies/Versions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/dependencies/Versions.kt b/buildSrc/src/main/kotlin/dependencies/Versions.kt index a2a65e0..232113f 100644 --- a/buildSrc/src/main/kotlin/dependencies/Versions.kt +++ b/buildSrc/src/main/kotlin/dependencies/Versions.kt @@ -1,8 +1,8 @@ package dependencies object Versions { - const val versionCode = 17 - const val versionName = "2.0.0-alpha2" + const val versionCode = 18 + const val versionName = "2.0.0" // android const val androidVersionCode = 1