🐛 fix: Fix GitHub workflow build failures

- Fixed compileSdk syntax error in build.gradle.kts (was using incorrect 'compileSdk { version = release(36) }' instead of 'compileSdk = 36')
- Moved splits configuration out of defaultConfig to correct location
- Added comprehensive ProGuard rules to handle OkHttp's optional dependencies (BouncyCastle, Conscrypt, OpenJSSE)
- Added ProGuard rules for Sardine WebDAV, Coroutines, and Gson
- Build now completes successfully both locally and in CI/CD
This commit is contained in:
inventory69
2025-12-21 11:30:34 +01:00
parent 8bc4828246
commit 86c5e62fd6
2 changed files with 53 additions and 13 deletions

View File

@@ -8,9 +8,7 @@ import java.io.FileInputStream
android { android {
namespace = "dev.dettmer.simplenotes" namespace = "dev.dettmer.simplenotes"
compileSdk { compileSdk = 36
version = release(36)
}
defaultConfig { defaultConfig {
applicationId = "dev.dettmer.simplenotes" applicationId = "dev.dettmer.simplenotes"
@@ -20,15 +18,15 @@ android {
versionName = "1.0" versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
// Enable multiple APKs per ABI for smaller downloads // Enable multiple APKs per ABI for smaller downloads
splits { splits {
abi { abi {
isEnable = true isEnable = true
reset() reset()
include("armeabi-v7a", "arm64-v8a") include("armeabi-v7a", "arm64-v8a")
isUniversalApk = true // Also generate universal APK isUniversalApk = true // Also generate universal APK
}
} }
} }

View File

@@ -19,3 +19,45 @@
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
# OkHttp platform-specific SSL classes (optional dependencies)
# These are platform-specific implementations that OkHttp uses optionally
# We don't need them for Android, so we ignore warnings about missing classes
-dontwarn org.bouncycastle.jsse.BCSSLParameters
-dontwarn org.bouncycastle.jsse.BCSSLSocket
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
-dontwarn org.conscrypt.Conscrypt$Version
-dontwarn org.conscrypt.Conscrypt
-dontwarn org.conscrypt.ConscryptHostnameVerifier
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
-dontwarn org.openjsse.net.ssl.OpenJSSE
# Sardine WebDAV library
-keep class com.thegrizzlylabs.sardineandroid.** { *; }
-dontwarn org.w3c.dom.ElementTraversal
# Keep WebDAV related classes
-keepclassmembers class * {
@com.thegrizzlylabs.sardineandroid.* *;
}
# Coroutines
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepclassmembers class kotlinx.** {
volatile <fields>;
}
# Gson
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.** { *; }
-keep class * implements com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Keep your app's data classes
-keep class dev.dettmer.simplenotes.** { *; }