Skip to content

Commit

Permalink
Fix JNA issues and reduce minSDK requirement of dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
ianrumac committed Dec 19, 2024
1 parent a0e5563 commit 37ef33e
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 2 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

The changelog for `Superwall`. Also see the [releases](https://github.com/superwall/Superwall-Android/releases) on GitHub.

## 1.5.1

### Enhancements
- Updates superscript dependencies to reduce minSDK version

### Fixes
- Adds consumer proguard rules to avoid minifying JNA classes during minification

## 1.5.0

### Enhancements
Expand Down
73 changes: 73 additions & 0 deletions consumer-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

-keep class com.superwall.** { *; }
-keep class androidx.lifecycle.DefaultLifecycleObserver
-keep class com.google.gson.reflect.TypeToken
-keep class * extends com.google.gson.reflect.TypeToken
-keep public class * implements java.lang.reflect.Type

# Keep `Companion` object fields of serializable classes.
# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects.
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
static <1>$Companion Companion;
}
-keep class com.sun.jna.** { *; }

-keep class org.libusb.** { *; }
-keep class com.superwall.supercel.** { *; }
-keepclassmembers class * extends com.sun.jna.** {
<fields>;
<methods>;
}
-keep class * implements com.sun.jna.** { *; }

# Keep `serializer()` on companion objects (both default and named) of serializable classes.
-if @kotlinx.serialization.Serializable class ** {
static **$* *;
}
-keepclassmembers class <2>$<3> {
kotlinx.serialization.KSerializer serializer(...);
}

# Keep `INSTANCE.serializer()` of serializable objects.
-if @kotlinx.serialization.Serializable class ** {
public static ** INSTANCE;
}
-keepclassmembers class <1> {
public static <1> INSTANCE;
kotlinx.serialization.KSerializer serializer(...);
}

# @Serializable and @Polymorphic are used at runtime for polymorphic serialization.
-keepattributes RuntimeVisibleAnnotations,AnnotationDefault

# Don't print notes about potential mistakes or omissions in the configuration for kotlinx-serialization classes
# See also https://github.com/Kotlin/kotlinx.serialization/issues/1900
-dontnote kotlinx.serialization.**

# Serialization core uses `java.lang.ClassValue` for caching inside these specified classes.
# If kotlinx-serialization-cbor is in the classpath, it gets picked as a serialization strategy.
# Don't warn about these two things.
-dontwarn java.lang.ClassValue
-dontwarn org.jetbrains.annotations.ReadOnly
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ lifecycle_runtime_ktx_version = "2.8.1"
junit_version = "4.13.2"
kotlinx_coroutines_test_version = "1.8.1"
room_runtime_version = "2.6.1"
supercel_version = "0.1.16"
supercel_version = "0.1.17"
test_ext_junit_version = "1.2.1"
espresso_core_version = "3.6.1"
test_runner_version = "1.6.1"
Expand Down
3 changes: 2 additions & 1 deletion superwall/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ plugins {
id("signing")
}

version = "1.5.0"
version = "1.5.1"

android {
compileSdk = 34
Expand Down Expand Up @@ -61,6 +61,7 @@ android {
getByName("release") {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
consumerProguardFile("../consumer-rules.pro")
}
}

Expand Down

0 comments on commit 37ef33e

Please sign in to comment.