如何为 Android 上的 Room 库设置 proguard 规则
How to set proguard rule for Room library on Android
在我的应用程序中,我想使用 Room
库来使用 数据库 ,最后 生成 APK 我启用 minify 选项 (proguard) 在 Build.Gradle
.
我使用以下版本的 Room 库:
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
我在 proguard-rules 中写了下面的代码:
-dontwarn class android.arch.persistence.room.paging.LimitOffsetDataSource
-dontwarn interface android.arch.persistence.room.paging.LimitOffsetDataSource
-dontwarn class android.arch.util.paging.CountedDataSource
-dontwarn interface android.arch.util.paging.CountedDataSource
但是当生成 APK 时,在 Build
选项卡中显示以下错误:
Unknown option 'android.arch.persistence.room.paging.LimitOffsetDataSource' in line 39 of file '/Volumes/M/Test Projects/MyApp/app/proguard-rules.pro'
显示此行的错误:
-dontwarn class android.arch.persistence.room.paging.LimitOffsetDataSource
如何解决这个问题?
在混淆文件中为 keep
部分添加以下行。
-dontwarn android.arch.util.paging.CountedDataSource
-dontwarn android.arch.persistence.room.paging.LimitOffsetDataSource
如果你使用androidx
-keep class * extends androidx.room.RoomDatabase
-keep @androidx.room.Entity class *
-dontwarn androidx.room.paging.**
您需要在混淆文件中添加这一行
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
你的模型实体应该是这样的 add SerializedName("key")
@Entity
data class ListElement(
@NonNull
@PrimaryKey
@SerializedName("id")
@Expose
val id: Int,
@SerializedName("userId")
@Expose
val userId: Int,
@SerializedName("title")
@Expose
val title: String,
@SerializedName("completed")
@Expose
val completed: Boolean
)
在我的应用程序中,我想使用 Room
库来使用 数据库 ,最后 生成 APK 我启用 minify 选项 (proguard) 在 Build.Gradle
.
我使用以下版本的 Room 库:
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
我在 proguard-rules 中写了下面的代码:
-dontwarn class android.arch.persistence.room.paging.LimitOffsetDataSource
-dontwarn interface android.arch.persistence.room.paging.LimitOffsetDataSource
-dontwarn class android.arch.util.paging.CountedDataSource
-dontwarn interface android.arch.util.paging.CountedDataSource
但是当生成 APK 时,在 Build
选项卡中显示以下错误:
Unknown option 'android.arch.persistence.room.paging.LimitOffsetDataSource' in line 39 of file '/Volumes/M/Test Projects/MyApp/app/proguard-rules.pro'
显示此行的错误:
-dontwarn class android.arch.persistence.room.paging.LimitOffsetDataSource
如何解决这个问题?
在混淆文件中为 keep
部分添加以下行。
-dontwarn android.arch.util.paging.CountedDataSource
-dontwarn android.arch.persistence.room.paging.LimitOffsetDataSource
如果你使用androidx
-keep class * extends androidx.room.RoomDatabase
-keep @androidx.room.Entity class *
-dontwarn androidx.room.paging.**
您需要在混淆文件中添加这一行
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
你的模型实体应该是这样的 add SerializedName("key")
@Entity
data class ListElement(
@NonNull
@PrimaryKey
@SerializedName("id")
@Expose
val id: Int,
@SerializedName("userId")
@Expose
val userId: Int,
@SerializedName("title")
@Expose
val title: String,
@SerializedName("completed")
@Expose
val completed: Boolean
)