Skip to content

Commit 2006ba7

Browse files
committed
#2 remove linkage of static libs into kotlin lib
1 parent 3d60714 commit 2006ba7

File tree

10 files changed

+161
-122
lines changed

10 files changed

+161
-122
lines changed

MCRCDynamicProxy.podspec

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Pod::Spec.new do |spec|
2+
spec.name = 'MCRCDynamicProxy'
3+
spec.version = '0.1.0'
4+
spec.homepage = 'https://github.com/icerockdev/moko-crash-reporting'
5+
spec.source = { :git => "https://github.com/icerockdev/moko-crash-reporting.git", :tag => "release/#{spec.version}" }
6+
spec.authors = 'IceRock Development'
7+
spec.license = { :type => 'Apache 2', :file => 'LICENSE.md' }
8+
spec.summary = 'summary'
9+
spec.module_name = "#{spec.name}"
10+
11+
spec.ios.deployment_target = '11.0'
12+
spec.swift_version = '5'
13+
14+
spec.source_files = "crash-reporting-crashlytics/src/iosMain/swift/DynamicProxy/**/*.{h,m,swift}"
15+
end

MCRCStaticReporter.podspec

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Pod::Spec.new do |spec|
2+
spec.name = 'MCRCStaticReporter'
3+
spec.version = '0.1.0'
4+
spec.homepage = 'https://github.com/icerockdev/moko-crash-reporting'
5+
spec.source = { :git => "https://github.com/icerockdev/moko-crash-reporting.git", :tag => "release/#{spec.version}" }
6+
spec.authors = 'IceRock Development'
7+
spec.license = { :type => 'Apache 2', :file => 'LICENSE.md' }
8+
spec.summary = 'summary'
9+
spec.module_name = "#{spec.name}"
10+
11+
spec.ios.deployment_target = '11.0'
12+
spec.swift_version = '5'
13+
spec.static_framework = true
14+
15+
spec.dependency 'FirebaseCrashlytics', '~> 7.3'
16+
spec.dependency 'MCRCDynamicProxy'
17+
18+
spec.source_files = "crash-reporting-crashlytics/src/iosMain/swift/StaticReporter/**/*.{h,m,swift}"
19+
end

buildSrc/src/main/kotlin/Deps.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
*/
44

55
object Deps {
6-
7-
private const val kotlinVersion = "1.4.10"
86
private const val detektVersion = "1.7.4"
97

108
private const val androidAppCompatVersion = "1.1.0"
@@ -16,7 +14,7 @@ object Deps {
1614
private const val firebaseCoreVersion = "17.4.3"
1715
private const val firebaseCrashlyticsVersion = "17.1.0"
1816

19-
const val mokoCrashReportingVersion = "0.1.0"
17+
const val mokoCrashReportingVersion = "0.1.1"
2018

2119

2220
object Android {

crash-reporting-crashlytics/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ publishing {
3535
cocoaPods {
3636
podsProject = file("../sample/ios-app/Pods/Pods.xcodeproj")
3737

38-
pod("FirebaseCrashlytics", onlyLink = false)
38+
pod("MCRCDynamicProxy")
3939
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Copyright 2020 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
import Foundation
6+
7+
@objc
8+
public class FirebaseDynamicProxy: NSObject {
9+
@objc
10+
public static var reporter: FirebaseCrashlyticsReporter? = nil
11+
}
12+
13+
@objc
14+
public protocol FirebaseCrashlyticsReporter {
15+
func setUserId(userId: String)
16+
func setCustomValue(value: String, forKey: String)
17+
func recordException(name: String, reason: String, stackTrace: [UInt])
18+
func log(message: String)
19+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright 2020 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
import FirebaseCrashlytics
6+
import MCRCDynamicProxy
7+
8+
public class MokoFirebaseCrashlytics: FirebaseCrashlyticsReporter {
9+
public func setUserId(userId: String) {
10+
Crashlytics.crashlytics().setUserID(userId)
11+
}
12+
13+
public func setCustomValue(value: String, forKey: String) {
14+
Crashlytics.crashlytics().setCustomValue(value, forKey: forKey)
15+
}
16+
17+
public func recordException(name: String, reason: String, stackTrace: [UInt]) {
18+
let exceptionModel = ExceptionModel(
19+
name: name,
20+
reason: reason
21+
)
22+
let stackFrames = stackTrace.map {
23+
StackFrame(address: $0)
24+
}
25+
26+
exceptionModel.stackTrace = stackFrames
27+
28+
Crashlytics.crashlytics().record(exceptionModel: exceptionModel)
29+
}
30+
31+
public func log(message: String) {
32+
Crashlytics.crashlytics().log(message)
33+
}
34+
35+
public static func setup() {
36+
FirebaseDynamicProxy.reporter = MokoFirebaseCrashlytics()
37+
}
38+
}
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
11
package dev.icerock.moko.crashreporting.crashlytics
22

3-
import cocoapods.FirebaseCrashlytics.FIRCrashlytics
4-
import cocoapods.FirebaseCrashlytics.FIRExceptionModel
5-
import cocoapods.FirebaseCrashlytics.FIRStackFrame
3+
import cocoapods.MCRCDynamicProxy.FirebaseCrashlyticsReporterProtocol
4+
import cocoapods.MCRCDynamicProxy.FirebaseDynamicProxy
65
import dev.icerock.moko.crashreporting.core.CrashReportingCore
76
import dev.icerock.moko.crashreporting.core.ExceptionLogger
87
import dev.icerock.moko.crashreporting.core.getStackTrace
98

109
actual class CrashlyticsLogger actual constructor() : ExceptionLogger {
10+
private val reporter: FirebaseCrashlyticsReporterProtocol = FirebaseDynamicProxy.reporter()
11+
?: throw IllegalStateException("MokoFirebaseCrashlytics.setup() should be called in swift before creating CrashlyticsLogger")
12+
1113
override fun log(message: String) {
12-
FIRCrashlytics.crashlytics().log(message)
14+
reporter.logWithMessage(message)
1315
}
1416

1517
@ExperimentalUnsignedTypes
1618
override fun recordException(throwable: Throwable) {
1719
val crashReportingCore = CrashReportingCore
1820
val name = crashReportingCore.getExceptionName(throwable)
1921
val stackTrace = crashReportingCore.getStackTrace(throwable)
20-
val exceptionModel = FIRExceptionModel.exceptionModelWithName(
22+
23+
reporter.recordExceptionWithName(
2124
name = name,
22-
reason = throwable.message.orEmpty()
25+
reason = throwable.message.orEmpty(),
26+
stackTrace = stackTrace
2327
)
24-
val stackFrames = stackTrace.map {
25-
FIRStackFrame.stackFrameWithAddress(address = it.toULong())
26-
}
27-
28-
exceptionModel.stackTrace = stackFrames
29-
30-
FIRCrashlytics.crashlytics().recordExceptionModel(exceptionModel)
3128
}
3229

3330
override fun setCustomValue(value: String, forKey: String) {
34-
FIRCrashlytics.crashlytics().setCustomValue(value = value, forKey = forKey)
31+
reporter.setCustomValueWithValue(
32+
value = value,
33+
forKey = forKey
34+
)
3535
}
3636

3737
override fun setUserId(userId: String) {
38-
FIRCrashlytics.crashlytics().setUserID(userId)
38+
reporter.setUserIdWithUserId(userId)
3939
}
4040
}

sample/ios-app/Podfile

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,7 @@ install! 'cocoapods', :disable_input_output_paths => true
1212

1313
target 'TestProj' do
1414
pod 'MultiPlatformLibrary', :path => '../mpp-library'
15-
pod 'Firebase', '6.33.0'
16-
pod 'FirebaseCrashlytics', '4.6.1'
17-
18-
# Firebase libraries already linked in moko-crash-reporting. Remove duplicated linking.
19-
post_install do |installer|
20-
host_targets = installer.aggregate_targets.select { |aggregate_target|
21-
aggregate_target.name.include? "Pods-"
22-
}
23-
24-
host_targets.each do |host_target|
25-
host_target.xcconfigs.each do |config_name, config_file|
26-
config_file.frameworks.delete("FirebaseCore")
27-
config_file.frameworks.delete("FirebaseCrashlytics")
28-
config_file.frameworks.delete("FirebaseInstallations")
29-
config_file.frameworks.delete("GoogleDataTransport")
30-
31-
xcconfig_path = host_target.xcconfig_path(config_name)
32-
config_file.save_as(xcconfig_path)
33-
end
34-
end
35-
end
15+
16+
pod 'MCRCDynamicProxy', :path => '../..'
17+
pod 'MCRCStaticReporter', :path => '../..'
3618
end

sample/ios-app/Podfile.lock

Lines changed: 49 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,81 @@
11
PODS:
2-
- Firebase (6.33.0):
3-
- Firebase/Core (= 6.33.0)
4-
- Firebase/Core (6.33.0):
5-
- Firebase/CoreOnly
6-
- FirebaseAnalytics (= 6.8.3)
7-
- Firebase/CoreOnly (6.33.0):
8-
- FirebaseCore (= 6.10.3)
9-
- FirebaseAnalytics (6.8.3):
10-
- FirebaseCore (~> 6.10)
11-
- FirebaseInstallations (~> 1.6)
12-
- GoogleAppMeasurement (= 6.8.3)
13-
- GoogleUtilities/AppDelegateSwizzler (~> 6.7)
14-
- GoogleUtilities/MethodSwizzler (~> 6.7)
15-
- GoogleUtilities/Network (~> 6.7)
16-
- "GoogleUtilities/NSData+zlib (~> 6.7)"
17-
- nanopb (~> 1.30906.0)
18-
- FirebaseCore (6.10.3):
19-
- FirebaseCoreDiagnostics (~> 1.6)
20-
- GoogleUtilities/Environment (~> 6.7)
21-
- GoogleUtilities/Logger (~> 6.7)
22-
- FirebaseCoreDiagnostics (1.7.0):
23-
- GoogleDataTransport (~> 7.4)
24-
- GoogleUtilities/Environment (~> 6.7)
25-
- GoogleUtilities/Logger (~> 6.7)
26-
- nanopb (~> 1.30906.0)
27-
- FirebaseCrashlytics (4.6.1):
28-
- FirebaseCore (~> 6.10)
29-
- FirebaseInstallations (~> 1.6)
30-
- GoogleDataTransport (~> 7.2)
31-
- nanopb (~> 1.30906.0)
2+
- FirebaseCore (7.3.0):
3+
- FirebaseCoreDiagnostics (~> 7.0)
4+
- GoogleUtilities/Environment (~> 7.0)
5+
- GoogleUtilities/Logger (~> 7.0)
6+
- FirebaseCoreDiagnostics (7.3.0):
7+
- GoogleDataTransport (~> 8.0)
8+
- GoogleUtilities/Environment (~> 7.0)
9+
- GoogleUtilities/Logger (~> 7.0)
10+
- nanopb (~> 2.30906.0)
11+
- FirebaseCrashlytics (7.3.0):
12+
- FirebaseCore (~> 7.0)
13+
- FirebaseInstallations (~> 7.0)
14+
- GoogleDataTransport (~> 8.0)
15+
- nanopb (~> 2.30906.0)
3216
- PromisesObjC (~> 1.2)
33-
- FirebaseInstallations (1.7.0):
34-
- FirebaseCore (~> 6.10)
35-
- GoogleUtilities/Environment (~> 6.7)
36-
- GoogleUtilities/UserDefaults (~> 6.7)
17+
- FirebaseInstallations (7.3.0):
18+
- FirebaseCore (~> 7.0)
19+
- GoogleUtilities/Environment (~> 7.0)
20+
- GoogleUtilities/UserDefaults (~> 7.0)
3721
- PromisesObjC (~> 1.2)
38-
- GoogleAppMeasurement (6.8.3):
39-
- GoogleUtilities/AppDelegateSwizzler (~> 6.7)
40-
- GoogleUtilities/MethodSwizzler (~> 6.7)
41-
- GoogleUtilities/Network (~> 6.7)
42-
- "GoogleUtilities/NSData+zlib (~> 6.7)"
43-
- nanopb (~> 1.30906.0)
44-
- GoogleDataTransport (7.5.1):
45-
- nanopb (~> 1.30906.0)
46-
- GoogleUtilities/AppDelegateSwizzler (6.7.2):
47-
- GoogleUtilities/Environment
48-
- GoogleUtilities/Logger
49-
- GoogleUtilities/Network
50-
- GoogleUtilities/Environment (6.7.2):
22+
- GoogleDataTransport (8.1.0):
23+
- nanopb (~> 2.30906.0)
24+
- GoogleUtilities/Environment (7.1.1):
5125
- PromisesObjC (~> 1.2)
52-
- GoogleUtilities/Logger (6.7.2):
26+
- GoogleUtilities/Logger (7.1.1):
5327
- GoogleUtilities/Environment
54-
- GoogleUtilities/MethodSwizzler (6.7.2):
55-
- GoogleUtilities/Logger
56-
- GoogleUtilities/Network (6.7.2):
57-
- GoogleUtilities/Logger
58-
- "GoogleUtilities/NSData+zlib"
59-
- GoogleUtilities/Reachability
60-
- "GoogleUtilities/NSData+zlib (6.7.2)"
61-
- GoogleUtilities/Reachability (6.7.2):
62-
- GoogleUtilities/Logger
63-
- GoogleUtilities/UserDefaults (6.7.2):
28+
- GoogleUtilities/UserDefaults (7.1.1):
6429
- GoogleUtilities/Logger
30+
- MCRCDynamicProxy (0.1.0)
31+
- MCRCStaticReporter (0.1.0):
32+
- FirebaseCrashlytics (~> 7.3)
33+
- MCRCDynamicProxy
6534
- MultiPlatformLibrary (0.1.0)
66-
- nanopb (1.30906.0):
67-
- nanopb/decode (= 1.30906.0)
68-
- nanopb/encode (= 1.30906.0)
69-
- nanopb/decode (1.30906.0)
70-
- nanopb/encode (1.30906.0)
35+
- nanopb (2.30906.0):
36+
- nanopb/decode (= 2.30906.0)
37+
- nanopb/encode (= 2.30906.0)
38+
- nanopb/decode (2.30906.0)
39+
- nanopb/encode (2.30906.0)
7140
- PromisesObjC (1.2.11)
7241

7342
DEPENDENCIES:
74-
- Firebase (= 6.33.0)
75-
- FirebaseCrashlytics (= 4.6.1)
43+
- MCRCDynamicProxy (from `../..`)
44+
- MCRCStaticReporter (from `../..`)
7645
- MultiPlatformLibrary (from `../mpp-library`)
7746

7847
SPEC REPOS:
7948
trunk:
80-
- Firebase
81-
- FirebaseAnalytics
8249
- FirebaseCore
8350
- FirebaseCoreDiagnostics
8451
- FirebaseCrashlytics
8552
- FirebaseInstallations
86-
- GoogleAppMeasurement
8753
- GoogleDataTransport
8854
- GoogleUtilities
8955
- nanopb
9056
- PromisesObjC
9157

9258
EXTERNAL SOURCES:
59+
MCRCDynamicProxy:
60+
:path: "../.."
61+
MCRCStaticReporter:
62+
:path: "../.."
9363
MultiPlatformLibrary:
9464
:path: "../mpp-library"
9565

9666
SPEC CHECKSUMS:
97-
Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
98-
FirebaseAnalytics: 5dd088bd2e67bb9d13dbf792d1164ceaf3052193
99-
FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
100-
FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1
101-
FirebaseCrashlytics: 5777d3462fb8c3ab9e80a2473bd7d667a2e8411c
102-
FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2
103-
GoogleAppMeasurement: 966e88df9d19c15715137bb2ddaf52373f111436
104-
GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
105-
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
67+
FirebaseCore: 4d3c72622ce0e2106aaa07bb4b2935ba2c370972
68+
FirebaseCoreDiagnostics: d50e11039e5984d92c8a512be2395f13df747350
69+
FirebaseCrashlytics: d31325312c92e2cb2f0386d589b9aa44e303d99b
70+
FirebaseInstallations: 971df89b48ae5ee4cc2bf6935f3857a525d28550
71+
GoogleDataTransport: 116c84c4bdeb76be2a7a46de51244368f9794eab
72+
GoogleUtilities: 3dc4ff0d5e4840e2fa8eef0889620e8c33d4218c
73+
MCRCDynamicProxy: 973f00896869b2a42b627e25e1273637144e0458
74+
MCRCStaticReporter: cd86088a80da448449d07eb8d1f7c63420570ca2
10675
MultiPlatformLibrary: 176fb8ade516666cd47e93de1b71ba0441a541bb
107-
nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
76+
nanopb: 1bf24dd71191072e120b83dd02d08f3da0d65e53
10877
PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f
10978

110-
PODFILE CHECKSUM: 2970c0b3f8e435e7af3f0ed0ce420e36de247e27
79+
PODFILE CHECKSUM: 9c08445bae18c42fcf489e55c88ebb7626bc02b8
11180

112-
COCOAPODS: 1.9.3
81+
COCOAPODS: 1.10.0

sample/mpp-library/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,5 @@ framework {
2525
cocoaPods {
2626
podsProject = file("../ios-app/Pods/Pods.xcodeproj")
2727

28-
pod("GoogleUtilities", onlyLink = false)
29-
pod("FirebaseCrashlytics", onlyLink = true)
28+
pod("MCRCDynamicProxy", onlyLink = true)
3029
}

0 commit comments

Comments
 (0)