com.android.application 8.1.1 -> 8.8.0
org.jetbrains.kotlin.android 1.9.10 -> 2.1.0
com.google.devtools.ksp 1.9.10-1.0.13 -> 2.1.0-1.0.29
< /code>
и < /p>
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
to
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
< /code>
У меня есть ошибка < /p>
Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in MyApp/app/build/outputs/mapping/prodRelease/missing_rules.txt.
< /code>
Но в этом файле я получаю больше классов с @serializable < /code> и классами, зачем использовать его
semple: < /p>
-dontwarn com.my.app.services.address.AddressUtilApiService
-dontwarn com.my.app.services.address.di.ModulesKt
-dontwarn com.my.app.services.address.model.AddressElementResponse
-dontwarn com.my.app.services.address.model.CityRequest
...
< /code>
Пример: < /p>
@Serializable
data class AddressElementResponse(
@SerialName("id")
val id: Int,
@SerialName("name")
val name: String
)
< /code>
Я использую Proguard-rules.pro в моем модуле приложения: < /p>
#---------------Begin: proguard configuration for kotlinx-serialization ----------
# 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 {
static $Companion Companion;
}
# Keep `serializer()` on companion objects (both default and named) of serializable classes.
-if @kotlinx.serialization.Serializable class ** {
static **$* *;
}
-keepclassmembers class $ {
kotlinx.serialization.KSerializer serializer(...);
}
# Keep `INSTANCE.serializer()` of serializable objects.
-if @kotlinx.serialization.Serializable class ** {
public static ** INSTANCE;
}
-keepclassmembers class {
public static INSTANCE;
kotlinx.serialization.KSerializer serializer(...);
}
# @Serializable and @Polymorphic are used at runtime for polymorphic serialization.
-keepattributes RuntimeVisibleAnnotations,AnnotationDefault
#---------------End: proguard configuration for kotlinx-serialization ----------
#---------------Begin: proguard configuration for SqlCipher ----------
-keep,includedescriptorclasses class net.sqlcipher.** { *; }
-keep,includedescriptorclasses interface net.sqlcipher.** { *; }
#---------------End: proguard configuration for SqlCipher ----------
< /code>
Все также работает, если вы переключитесь на ветвь, в которой нет обновленных < /p>
upd:
Если я добавил < /p>
-keep class com.my.app.address.AddressUtilApiService { *; }
-keep class com.my.app.address.di.ModulesKt { *; }
-keep class com.my.app.services.address.model.** { *; }
-dontwarn java.lang.invoke.StringConcatFactory
< /code>
to proguard-rules.pro в моем адресном модуле
я получу ошибку: < /p>
Type a.a is defined multiple times: MyApp/services/address/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar:a/a.class, MyApp/services/balance/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar:a/a.class
После обновления плагинов: < /p> [code]com.android.application 8.1.1 -> 8.8.0 org.jetbrains.kotlin.android 1.9.10 -> 2.1.0 com.google.devtools.ksp 1.9.10-1.0.13 -> 2.1.0-1.0.29 < /code> и < /p> distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip to distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip < /code> У меня есть ошибка < /p> Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in MyApp/app/build/outputs/mapping/prodRelease/missing_rules.txt. < /code> Но в этом файле я получаю больше классов с @serializable < /code> и классами, зачем использовать его semple: < /p> -dontwarn com.my.app.services.address.AddressUtilApiService -dontwarn com.my.app.services.address.di.ModulesKt -dontwarn com.my.app.services.address.model.AddressElementResponse -dontwarn com.my.app.services.address.model.CityRequest ... < /code> Пример: < /p> @Serializable data class AddressElementResponse( @SerialName("id") val id: Int, @SerialName("name") val name: String ) < /code> Я использую Proguard-rules.pro в моем модуле приложения: < /p> #---------------Begin: proguard configuration for kotlinx-serialization ---------- # 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 { static $Companion Companion; }
# Keep `serializer()` on companion objects (both default and named) of serializable classes. -if @kotlinx.serialization.Serializable class ** { static **$* *; } -keepclassmembers class $ { kotlinx.serialization.KSerializer serializer(...); }
# Keep `INSTANCE.serializer()` of serializable objects. -if @kotlinx.serialization.Serializable class ** { public static ** INSTANCE; } -keepclassmembers class { public static INSTANCE; kotlinx.serialization.KSerializer serializer(...); }
# @Serializable and @Polymorphic are used at runtime for polymorphic serialization. -keepattributes RuntimeVisibleAnnotations,AnnotationDefault #---------------End: proguard configuration for kotlinx-serialization ----------
#---------------Begin: proguard configuration for SqlCipher ---------- -keep,includedescriptorclasses class net.sqlcipher.** { *; } -keep,includedescriptorclasses interface net.sqlcipher.** { *; } #---------------End: proguard configuration for SqlCipher ---------- < /code> Все также работает, если вы переключитесь на ветвь, в которой нет обновленных < /p> upd: Если я добавил < /p> -keep class com.my.app.address.AddressUtilApiService { *; } -keep class com.my.app.address.di.ModulesKt { *; } -keep class com.my.app.services.address.model.** { *; }
-dontwarn java.lang.invoke.StringConcatFactory < /code> to proguard-rules.pro в моем адресном модуле я получу ошибку: < /p> Type a.a is defined multiple times: MyApp/services/address/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar:a/a.class, MyApp/services/balance/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar:a/a.class [/code] Нет объяснимых причин для этой ошибки.