diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index 67b6c7e..ec18432 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -24,16 +24,24 @@ jobs:
run: ./gradlew :napier:test --stacktrace
- name: Run android tests
run: ./gradlew :napier:testReleaseUnitTest --stacktrace
- - name: Run ios tests
- run: ./gradlew :napier:iosX64Test --stacktrace
- name: Run jvm tests
run: ./gradlew :napier:jvmTest --stacktrace
- - name: Run macos tests
+ - name: Run ios(intel) tests
+ run: ./gradlew :napier:iosX64Test --stacktrace
+ - name: Run ios(apple silicon) tests
+ run: ./gradlew :napier:iosSimulatorArm64Test --stacktrace
+ - name: Run macos(intel) tests
run: ./gradlew :napier:macosX64Test --stacktrace
- - name: Run watchos tests
+ - name: Run macos(apple silicon) tests
+ run: ./gradlew :napier:macosArm64Test --stacktrace
+ - name: Run watchos(intel) tests
run: ./gradlew :napier:watchosX64Test --stacktrace
- - name: Run tvos tests
+ - name: Run watchos(apple silicon) tests
+ run: ./gradlew :napier:watchosSimulatorArm64Test --stacktrace
+ - name: Run tvos(intel) tests
run: ./gradlew :napier:tvosX64Test --stacktrace
+ - name: Run tvos(apple silicon) tests
+ run: ./gradlew :napier:tvosSimulatorArm64Test --stacktrace
- name: Bundle the build report
if: failure()
diff --git a/README.md b/README.md
index c469fbc..5cfc5bb 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ uses the `android.util.Log`(Logcat)
![preview-android][preview-android]
-### Darwin(iOS, macOS, watchOS, tvOS)
+### Darwin(iOS, macOS, watchOS, tvOS)[Intel/Apple silicon]
format: `[Date time][Symbol][Log level][Class name].[Method name] - [Your log]`
diff --git a/build.gradle b/build.gradle
index 5574cea..e0b739c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,5 @@
// Can't read dependencies.Dep when using kts
+// https://github.com/gradle/gradle/issues/9270
import dependencies.Dep
buildscript {
diff --git a/buildSrc/src/main/kotlin/Variables.kt b/buildSrc/src/main/kotlin/Variables.kt
new file mode 100644
index 0000000..86cee30
--- /dev/null
+++ b/buildSrc/src/main/kotlin/Variables.kt
@@ -0,0 +1,5 @@
+// Run on IntelliJ
+val ideaActive = System.getProperty("idea.active") == "true"
+
+// Run on apple silicon
+val isAppleSilicon = System.getProperty("os.arch") == "aarch64"
diff --git a/buildSrc/src/main/kotlin/dependencies/Dep.kt b/buildSrc/src/main/kotlin/dependencies/Dep.kt
index 413c6b7..fac32c7 100644
--- a/buildSrc/src/main/kotlin/dependencies/Dep.kt
+++ b/buildSrc/src/main/kotlin/dependencies/Dep.kt
@@ -2,12 +2,12 @@ package dependencies
object Dep {
- private const val kotlin = "1.5.21"
+ private const val kotlin = "1.5.30"
object GradlePlugin {
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Dep.kotlin}"
- const val android = "com.android.tools.build:gradle:4.1.3"
+ const val android = "com.android.tools.build:gradle:4.2.1"
const val crashlytics = "com.google.firebase:firebase-crashlytics-gradle:2.5.2"
const val googleService = "com.google.gms:google-services:4.3.5"
@@ -33,8 +33,8 @@ object Dep {
}
object Android {
- const val appCompat = "androidx.appcompat:appcompat:1.2.0"
- const val constraintLayout = "androidx.constraintlayout:constraintlayout:2.0.4"
+ const val appCompat = "androidx.appcompat:appcompat:1.3.1"
+ const val constraintLayout = "androidx.constraintlayout:constraintlayout:2.1.0"
}
object Firebase {
diff --git a/buildSrc/src/main/kotlin/dependencies/Versions.kt b/buildSrc/src/main/kotlin/dependencies/Versions.kt
index 232113f..d4f5e1f 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 = 18
- const val versionName = "2.0.0"
+ const val versionCode = 19
+ const val versionName = "2.1.0"
// android
const val androidVersionCode = 1
diff --git a/gradle.properties b/gradle.properties
index 09b37b8..05ec979 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,6 +7,10 @@ kotlin.native.enableDependencyPropagation=false
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.mpp.enableCompatibilityMetadataVariant=true
+# Android
+android.useAndroidX=true
+android.enableJetifier=true
+
# Snatype
GROUP=aakira
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index cba3202..abb8619 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index f18b89b..804c75d 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -76,4 +76,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 441ae05d1695723ea9a68d3223ef8b6460bbec0f
-COCOAPODS: 1.10.1
+COCOAPODS: 1.10.2
diff --git a/macOS/Pods/Pods.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist b/macOS/Pods/Pods.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..3df5044
--- /dev/null
+++ b/macOS/Pods/Pods.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,19 @@
+
+
+
+
+ SchemeUserState
+
+ Pods-macOS (macOS).xcscheme_^#shared#^_
+
+ orderHint
+ 1
+
+ mpp_sample.xcscheme_^#shared#^_
+
+ orderHint
+ 3
+
+
+
+
diff --git a/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist b/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist
index 9b18e6f..f2282f1 100644
--- a/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/macOS/macOS.xcodeproj/xcuserdata/akira.aratani.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -7,12 +7,12 @@
macOS (iOS).xcscheme_^#shared#^_
orderHint
- 0
+ 2
macOS (macOS).xcscheme_^#shared#^_
orderHint
- 1
+ 0
diff --git a/macOS/macOS.xcworkspace/xcuserdata/akira.aratani.xcuserdatad/UserInterfaceState.xcuserstate b/macOS/macOS.xcworkspace/xcuserdata/akira.aratani.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000..4b6f495
Binary files /dev/null and b/macOS/macOS.xcworkspace/xcuserdata/akira.aratani.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/mpp-sample/build.gradle.kts b/mpp-sample/build.gradle.kts
index 6672a1e..1267d91 100644
--- a/mpp-sample/build.gradle.kts
+++ b/mpp-sample/build.gradle.kts
@@ -9,8 +9,6 @@ plugins {
version = "1.0.0"
-val ideaActive = System.getProperty("idea.active") == "true"
-
kotlin {
android()
js {
@@ -19,11 +17,14 @@ kotlin {
jvm()
// darwin
- macosX64()
- if (ideaActive.not()) {
- ios()
- watchos()
+ if (isAppleSilicon) {
+ // apple silicon
+ macosArm64()
+ iosSimulatorArm64()
+ watchosSimulatorArm64()
} else {
+ // intel
+ macosX64()
iosX64()
watchosX64()
}
@@ -53,21 +54,26 @@ kotlin {
}
}
- // apple
+ // darwin
val darwinMain by creating {
dependsOn(commonMain)
}
- val macosX64Main by getting {
- dependsOn(darwinMain)
- }
- if (ideaActive.not()) {
- val iosMain by getting {
+ if (isAppleSilicon) {
+ // apple silicon
+ val macosArm64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val iosSimulatorArm64Main by getting {
dependsOn(darwinMain)
}
- val watchosMain by getting {
+ val watchosSimulatorArm64Main by getting {
dependsOn(darwinMain)
}
} else {
+ // intel
+ val macosX64Main by getting {
+ dependsOn(darwinMain)
+ }
val iosX64Main by getting {
dependsOn(darwinMain)
}
diff --git a/mpp-sample/mpp_sample.podspec b/mpp-sample/mpp_sample.podspec
index c0114f1..ebfbb89 100644
--- a/mpp-sample/mpp_sample.podspec
+++ b/mpp-sample/mpp_sample.podspec
@@ -7,7 +7,6 @@ Pod::Spec.new do |spec|
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"
@@ -17,13 +16,8 @@ Pod::Spec.new do |spec|
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'
+ 'KOTLIN_PROJECT_PATH' => ':mpp-sample',
+ 'PRODUCT_MODULE_NAME' => 'mpp_sample',
}
spec.script_phases = [
@@ -32,10 +26,15 @@ Pod::Spec.new do |spec|
:execution_position => :before_compile,
:shell_path => '/bin/sh',
:script => <<-SCRIPT
+ if [ "YES" = "$COCOAPODS_SKIP_KOTLIN_BUILD" ]; then
+ echo "Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\""
+ exit 0
+ fi
set -ev
REPO_ROOT="$PODS_TARGET_SRCROOT"
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" :mpp-sample:syncFramework \
- -Pkotlin.native.cocoapods.target=$KOTLIN_TARGET \
+ "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
+ -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
+ -Pkotlin.native.cocoapods.archs="$ARCHS" \
-Pkotlin.native.cocoapods.configuration=$CONFIGURATION \
-Pkotlin.native.cocoapods.cflags="$OTHER_CFLAGS" \
-Pkotlin.native.cocoapods.paths.headers="$HEADER_SEARCH_PATHS" \
diff --git a/napier/build.gradle.kts b/napier/build.gradle.kts
index 8dd3221..2dde2b8 100644
--- a/napier/build.gradle.kts
+++ b/napier/build.gradle.kts
@@ -8,8 +8,6 @@ plugins {
apply(from = rootProject.file("./gradle/publish.gradle.kts"))
-val ideaActive = System.getProperty("idea.active") == "true"
-
kotlin {
android {
publishAllLibraryVariants()
@@ -21,40 +19,31 @@ kotlin {
jvm()
// darwin
- macosX64()
if (ideaActive.not()) {
- // darwin
- ios {
- binaries {
- framework()
- }
- }
- watchos {
- binaries {
- framework()
- }
- }
- tvos {
- binaries {
- framework()
- }
- }
+ // intel
+ macosX64()
+ ios()
+ watchos()
+ tvos()
+
+ // apple silicon
+ macosArm64()
+ iosSimulatorArm64()
+ watchosSimulatorArm64()
+ tvosSimulatorArm64()
} else {
- // darwin
- iosX64 {
- binaries {
- framework()
- }
- }
- watchosX64 {
- binaries {
- framework()
- }
- }
- tvosX64 {
- binaries {
- framework()
- }
+ if (isAppleSilicon) {
+ // apple silicon
+ macosArm64()
+ iosSimulatorArm64()
+ watchosSimulatorArm64()
+ tvosSimulatorArm64()
+ } else {
+ // intel
+ macosX64()
+ iosX64()
+ watchosX64()
+ tvosX64()
}
}
@@ -109,14 +98,16 @@ kotlin {
val darwinTest by creating {
dependsOn(commonTest)
}
- val macosX64Main by getting {
- dependsOn(darwinMain)
- }
- val macosX64Test by getting {
- dependsOn(darwinMain)
- }
+
+ // darwin
if (ideaActive.not()) {
- // apple
+ // intel
+ val macosX64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val macosX64Test by getting {
+ dependsOn(darwinTest)
+ }
val iosMain by getting {
dependsOn(darwinMain)
}
@@ -135,26 +126,86 @@ kotlin {
val tvosTest by getting {
dependsOn(darwinTest)
}
- } else {
- // apple
- val iosX64Main by getting {
+
+ // apple silicon
+ val macosArm64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val macosArm64Test by getting {
+ dependsOn(darwinTest)
+ }
+ val iosSimulatorArm64Main by getting {
dependsOn(darwinMain)
}
- val iosX64Test by getting {
+ val iosSimulatorArm64Test by getting {
dependsOn(darwinTest)
}
- val watchosX64Main by getting {
+ val watchosSimulatorArm64Main by getting {
dependsOn(darwinMain)
}
- val watchosX64Test by getting {
+ val watchosSimulatorArm64Test by getting {
dependsOn(darwinTest)
}
- val tvosX64Main by getting {
+ val tvosSimulatorArm64Main by getting {
dependsOn(darwinMain)
}
- val tvosX64Test by getting {
+ val tvosSimulatorArm64Test by getting {
dependsOn(darwinTest)
}
+ } else {
+ if (isAppleSilicon) {
+ // apple silicon
+ val macosArm64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val macosArm64Text by getting {
+ dependsOn(darwinTest)
+ }
+ val iosSimulatorArm64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val iosSimulatorArm64Test by getting {
+ dependsOn(darwinTest)
+ }
+ val watchosSimulatorArm64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val watchosSimulatorArm64Test by getting {
+ dependsOn(darwinTest)
+ }
+ val tvosSimulatorArm64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val tvosSimulatorArm64Test by getting {
+ dependsOn(darwinTest)
+ }
+ } else {
+ // intel
+ val macosX64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val macosX64Test by getting {
+ dependsOn(darwinTest)
+ }
+ val iosX64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val iosX64Test by getting {
+ dependsOn(darwinTest)
+ }
+ val watchosX64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val watchosX64Test by getting {
+ dependsOn(darwinTest)
+ }
+ val tvosX64Main by getting {
+ dependsOn(darwinMain)
+ }
+ val tvosX64Test by getting {
+ dependsOn(darwinTest)
+ }
+ }
}
}
}
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 d09668b..e4d5f7e 100644
--- a/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt
+++ b/napier/src/androidMain/kotlin/io/github/aakira/napier/DebugAntilog.kt
@@ -5,6 +5,7 @@ import android.util.Log
import java.io.PrintWriter
import java.io.StringWriter
import java.util.regex.Pattern
+import kotlin.math.min
actual class DebugAntilog actual constructor(private val defaultTag: String) : Antilog() {
@@ -51,7 +52,7 @@ actual class DebugAntilog actual constructor(private val defaultTag: String) : A
var newline = fullMessage.indexOf('\n', i)
newline = if (newline != -1) newline else length
do {
- val end = Math.min(newline, i + MAX_LOG_LENGTH)
+ val end = min(newline, i + MAX_LOG_LENGTH)
val part = fullMessage.substring(i, end)
if (priority.toValue() == Log.ASSERT) {
Log.wtf(debugTag, part)
@@ -67,7 +68,7 @@ actual class DebugAntilog actual constructor(private val defaultTag: String) : A
private fun performTag(tag: String): String {
val thread = Thread.currentThread().stackTrace
- return if (thread != null && thread.size >= CALL_STACK_INDEX) {
+ return if (thread.size >= CALL_STACK_INDEX) {
thread[CALL_STACK_INDEX].run {
"${createStackElementTag(className)}\$$methodName"
}
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 41f66dd..aeeff44 100644
--- a/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt
+++ b/napier/src/jvmMain/kotlin/io/github/aakira/napier/DebugAntilog.kt
@@ -2,11 +2,7 @@ package io.github.aakira.napier
import java.io.PrintWriter
import java.io.StringWriter
-import java.util.logging.ConsoleHandler
-import java.util.logging.Handler
-import java.util.logging.Level
-import java.util.logging.Logger
-import java.util.logging.SimpleFormatter
+import java.util.logging.*
import java.util.regex.Pattern
actual class DebugAntilog(
@@ -19,7 +15,7 @@ actual class DebugAntilog(
private const val CALL_STACK_INDEX = 8
}
- val consoleHandler: ConsoleHandler = ConsoleHandler().apply {
+ private val consoleHandler: ConsoleHandler = ConsoleHandler().apply {
level = Level.ALL
formatter = SimpleFormatter()
}
@@ -81,7 +77,7 @@ actual class DebugAntilog(
private fun performTag(defaultTag: String): String {
val thread = Thread.currentThread().stackTrace
- return if (thread != null && thread.size >= CALL_STACK_INDEX) {
+ return if (thread.size >= CALL_STACK_INDEX) {
thread[CALL_STACK_INDEX].run {
"${createStackElementTag(className)}\$$methodName"
}