Skip to content

Commit edb3b91

Browse files
authored
Merge pull request #15 from pmu-tech/fix-android-compilation-errors
fix: android compilation errors
2 parents 24db9e5 + b257664 commit edb3b91

File tree

11 files changed

+88
-37
lines changed

11 files changed

+88
-37
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.7.5 (2025/10/28)
2+
3+
- fix android compilation errors when new architecture is enabled,
4+
15
## 0.7.4 (2025/02/18)
26

37
- fix code generation when new architecture is enabled,

android/build.gradle

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,19 @@ def supportsNamespace() {
4949
android {
5050
if (supportsNamespace()) {
5151
namespace "com.reactnative.pianoanalytics"
52-
} else {
52+
53+
buildFeatures {
54+
buildConfig = true
55+
}
5356
sourceSets {
5457
main {
55-
manifest.srcFile "src/main/AndroidManifestDeprecated.xml"
58+
manifest.srcFile "src/main/AndroidManifestNew.xml"
5659
}
5760
}
5861
}
5962

6063
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
6164

62-
buildFeatures {
63-
buildConfig = true
64-
}
65-
6665
defaultConfig {
6766
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
6867
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")

android/gradle.properties

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,12 @@ PianoAnalytics_targetSdkVersion=31
44
PianoAnalytics_compileSdkVersion=31
55
PianoAnalytics_ndkversion=21.4.7075529
66
android.useAndroidX=true
7+
8+
# Gradle JVM settings - increase heap size for larger projects and CI environments
9+
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
10+
11+
# Performance optimizations
12+
org.gradle.parallel=true
13+
org.gradle.daemon=true
14+
org.gradle.configureondemand=true
15+
org.gradle.caching=true
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.reactnative.pianoanalytics">
22
</manifest>
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2-
package="com.reactnative.pianoanalytics">
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
32
</manifest>

android/src/main/java/com/reactnative/pianoanalytics/PianoAnalyticsModule.kt

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.facebook.react.bridge.*
44
import com.facebook.react.module.annotations.ReactModule
55
import io.piano.android.analytics.Configuration
66
import io.piano.android.analytics.PianoAnalytics
7-
import io.piano.android.analytics.PrivacyModesStorage
87
import io.piano.android.analytics.model.Event
98
import io.piano.android.analytics.model.PrivacyMode
109
import io.piano.android.analytics.model.Property
@@ -16,14 +15,11 @@ import io.piano.android.analytics.model.VisitorIDType
1615
class RNPianoAnalyticsModule(reactContext: ReactApplicationContext) :
1716
RNPianoAnalyticsSpec(reactContext) {
1817

19-
override fun getName(): String {
20-
return NAME
21-
}
22-
2318
@ReactMethod
24-
override fun sendEvent(eventName: String, params: ReadableMap) {
19+
override fun sendEvent(eventName: String?, params: ReadableMap?, promise: Promise?) {
2520
val properties = mutableListOf<Property>()
26-
val iterator = params.keySetIterator()
21+
params?.let {
22+
val iterator = params.keySetIterator()
2723
while (iterator.hasNextKey()) {
2824
val key = iterator.nextKey()
2925
when (params.getType(key)) {
@@ -39,20 +35,44 @@ class RNPianoAnalyticsModule(reactContext: ReactApplicationContext) :
3935
else -> {}
4036
}
4137
}
42-
val event = Event.Builder(eventName).properties(properties).build()
43-
PianoAnalytics.getInstance().sendEvents(event)
38+
val event = eventName?.let { evtName -> Event.Builder(evtName).properties(properties).build() }
39+
event?.let { e -> PianoAnalytics.getInstance().sendEvents(e) }
40+
41+
promise?.resolve("event sent successfully")
42+
} ?: {
43+
promise?.reject(RNPianoAnalyticsModule.NAME,"params are not defined")
44+
}
4445
}
4546

4647
@ReactMethod
47-
override fun setUser(id: String, category: String?, enableStorage: Boolean) {
48+
override fun setUser(
49+
userId: String?,
50+
category: String?,
51+
enableStorage: Boolean,
52+
promise: Promise?
53+
) {
4854
val userStorage = PianoAnalytics.getInstance().userStorage
49-
userStorage.currentUser = User(id, category, enableStorage)
55+
userId?.let {
56+
userStorage.currentUser = User(userId, category, enableStorage)
57+
promise?.resolve("userId set successfully")
58+
} ?: {
59+
promise?.reject(RNPianoAnalyticsModule.NAME,"userId not defined")
60+
}
61+
}
62+
63+
override fun deleteUser(promise: Promise?) {
64+
PianoAnalytics.getInstance().userStorage.currentUser = null
5065
}
5166

5267
@ReactMethod
53-
override fun privacySetMode(mode: String) {
54-
val privacyMode = getPrivacyMode(mode) ?: return
55-
PianoAnalytics.getInstance().privacyModesStorage.currentMode = privacyMode
68+
override fun privacySetMode(mode: String?, promise: Promise?) {
69+
mode?.let {
70+
val privacyMode = getPrivacyMode(mode) ?: return
71+
PianoAnalytics.getInstance().privacyModesStorage.currentMode = privacyMode
72+
promise?.resolve("privacy mode set successfully")
73+
} ?: {
74+
promise?.reject(RNPianoAnalyticsModule.NAME,"mode is not defined")
75+
}
5676
}
5777

5878
@ReactMethod
@@ -62,7 +82,7 @@ class RNPianoAnalyticsModule(reactContext: ReactApplicationContext) :
6282
}
6383

6484
@ReactMethod
65-
override fun setVisitorId(visitorId: String) {
85+
override fun setVisitorId(visitorId: String?, promise: Promise?) {
6686
PianoAnalytics.getInstance().customVisitorId = visitorId
6787
}
6888

@@ -77,13 +97,18 @@ class RNPianoAnalyticsModule(reactContext: ReactApplicationContext) :
7797
}
7898

7999
@ReactMethod
80-
override fun setConfiguration(collectDomain: String, siteId: Int) {
81-
val config = Configuration.Builder(
82-
collectDomain = collectDomain,
83-
site = siteId.toInt(),
84-
visitorIDType = VisitorIDType.UUID,
85-
).build()
86-
PianoAnalytics.init(reactApplicationContext, config)
100+
override fun setConfiguration(collectionName: String?, siteId: Double, promise: Promise?) {
101+
collectionName?.let {
102+
val config = Configuration.Builder(
103+
collectDomain = collectionName,
104+
site = siteId.toInt(),
105+
visitorIDType = VisitorIDType.UUID,
106+
).build()
107+
PianoAnalytics.init(reactApplicationContext, config)
108+
promise?.resolve("config initialized successfully")
109+
} ?: {
110+
promise?.reject(RNPianoAnalyticsModule.NAME,"collectionName is not defined")
111+
}
87112
}
88113

89114
// PRIVACY INCLUDE PROPERTY

android/src/main/java/com/reactnative/pianoanalytics/PianoAnalyticsPackage.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.facebook.react.bridge.ReactApplicationContext
55
import com.facebook.react.bridge.NativeModule
66
import com.facebook.react.module.model.ReactModuleInfoProvider
77
import com.facebook.react.module.model.ReactModuleInfo
8-
import com.reactnative.pianoanalytics.RNPianoAnalyticsModule
98
import java.util.HashMap
109

1110
class RNPianoAnalyticsPackage : TurboReactPackage() {

android/src/oldarch/PianoAnalyticsSpec.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ abstract class RNPianoAnalyticsSpec internal constructor(context: ReactApplicati
1313

1414
abstract fun setUser(id: String, category: String?, enableStorage: Boolean)
1515

16+
abstract fun deleteUser()
17+
1618
abstract fun privacySetMode(mode: String)
1719

1820
abstract fun privacyGetMode(promise: Promise)
19-
21+
2022
abstract fun setVisitorId(visitorId: String)
2123

2224
abstract fun getVisitorId(promise: Promise)

example/android/gradle.properties

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,22 @@
1010
# Specifies the JVM arguments used for the daemon process.
1111
# The setting is particularly useful for tweaking memory settings.
1212
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
13-
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
13+
# Increased heap size for CI environments and Hermes transforms
14+
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
1415

1516
# When configured, Gradle will run in incubating parallel mode.
1617
# This option should only be used with decoupled projects. More details, visit
1718
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18-
# org.gradle.parallel=true
19+
org.gradle.parallel=true
20+
21+
# Enable Gradle Daemon for faster builds
22+
org.gradle.daemon=true
23+
24+
# Enable configuration cache for faster builds
25+
org.gradle.configureondemand=true
26+
27+
# Enable caching for better performance
28+
org.gradle.caching=true
1929

2030
# AndroidX package structure to make it clearer which packages are bundled with the
2131
# Android operating system, and which are packaged with your app's APK

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pmu-tech/react-native-piano-analytics",
3-
"version": "0.7.4",
3+
"version": "0.7.5",
44
"description": "Piano Analytics",
55
"main": "lib/commonjs/index",
66
"module": "lib/module/index",

0 commit comments

Comments
 (0)