Проблема с Proguard после обновления плагиновAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с Proguard после обновления плагинов

Сообщение Anonymous »

После обновления плагинов: < /p>

Код: Выделить всё

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
Нет объяснимых причин для этой ошибки.

Подробнее здесь: https://stackoverflow.com/questions/795 ... te-plugins
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»