Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
minifyEnabled之后的DatabaseException为true_Exception_Kotlin_Firebase Realtime Database_Proguard - Fatal编程技术网

minifyEnabled之后的DatabaseException为true

minifyEnabled之后的DatabaseException为true,exception,kotlin,firebase-realtime-database,proguard,Exception,Kotlin,Firebase Realtime Database,Proguard,该实体正确使用Firebase RealmDataBase,但当我添加 minifyEnabled true 在gradle for build中,我得到了这个-> DatabaseException: Found two getters or fields with conflicting case sensitivity for property: sName p、 如果我更改了导致此异常的字段的名称,那么这些名称将保存在服务器上,我认为问题始于字段的注释 它是我的实体 @IgnoreE

该实体正确使用Firebase RealmDataBase,但当我添加

minifyEnabled true
在gradle for build中,我得到了这个->

DatabaseException: Found two getters or fields with conflicting case sensitivity for property: sName
p、 如果我更改了导致此异常的字段的名称,那么这些名称将保存在服务器上,我认为问题始于字段的注释

它是我的实体

@IgnoreExtraProperties
data class Account(
@get:PropertyName(ACCOUNT_NAME) @set:PropertyName(ACCOUNT_NAME) var name: String,
@get:PropertyName(ACCOUNT_SNAME) @set:PropertyName(ACCOUNT_SNAME) var sName: String,
@get:PropertyName(ACCOUNT_CITY) @set:PropertyName(ACCOUNT_CITY) var city: String,
@get:PropertyName(ACCOUNT_GYM) @set:PropertyName(ACCOUNT_GYM) var gym: String,
@get:PropertyName(ACCOUNT_WEIGHT) @set:PropertyName(ACCOUNT_WEIGHT) var weight: String,
@get:PropertyName(ACCOUNT_HEIGHT) @set:PropertyName(ACCOUNT_HEIGHT) var height: String,
@get:PropertyName(ACCOUNT_URI_PICTURE) @set:PropertyName(ACCOUNT_URI_PICTURE) var imageUrl: String,
@Exclude @set:Exclude @get:Exclude var followers: List<String> = emptyList(),
@Exclude @set:Exclude @get:Exclude var subscribers: List<String> = emptyList(),
@Exclude @set:Exclude @get:Exclude var countAchievements: List<String> = emptyList()
) : AccountListGrouper, Parcelable {

@Exclude
override fun getItemType() = TYPE_ACCOUNT

constructor(source: Parcel) : this(
    source.readString() ?: "",
    source.readString() ?: "",
    source.readString() ?: "",
    source.readString() ?: "",
    source.readString() ?: "",
    source.readString() ?: "",
    source.readString() ?: ""
)

@Exclude
override fun writeToParcel(dest: Parcel, flags: Int) {
    dest.writeString(name)
    dest.writeString(sName)
    dest.writeString(city)
    dest.writeString(gym)
    dest.writeString(weight)
    dest.writeString(height)
    dest.writeString(imageUrl)
}

constructor() : this("", "", "", "", "", "", "")

@Exclude
override fun describeContents() = 0

companion object {
    @JvmField
    val CREATOR: Parcelable.Creator<Account> = object : Parcelable.Creator<Account> {
        override fun createFromParcel(source: Parcel): Account = Account(source)
        override fun newArray(size: Int): Array<Account?> = arrayOfNulls(size)
    }
}
}

这个问题的解决办法是添加

@排除

为了所有人!对于所有变量。我认为这是必要的,因为在将kotlin编译为Java的过程中,会为公共变量创建get()和set():在这种情况下,Firebase不知道使用哪个选项,公共变量或get和set方法 所以我的代码现在可以了

@IgnoreExtraProperties
data class Account(
@Exclude @get:PropertyName(ACCOUNT_NAME) @set:PropertyName(ACCOUNT_NAME) var name: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_SNAME) @set:PropertyName(ACCOUNT_SNAME) var sName: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_CITY) @set:PropertyName(ACCOUNT_CITY) var city: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_GYM) @set:PropertyName(ACCOUNT_GYM) var gym: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_WEIGHT) @set:PropertyName(ACCOUNT_WEIGHT) var 
weight: String = "",
@Exclude @get:PropertyName(ACCOUNT_HEIGHT) @set:PropertyName(ACCOUNT_HEIGHT) var 
height: String = "",
@Exclude @get:PropertyName(ACCOUNT_URI_PICTURE) 
@set:PropertyName(ACCOUNT_URI_PICTURE) var imageUrl: String = "",
@Exclude @set:Exclude @get:Exclude var followers: List<String> = emptyList(),
@Exclude @set:Exclude @get:Exclude var subscribers: List<String> = emptyList(),
@Exclude @set:Exclude @get:Exclude var countAchievements: List<String> = emptyList()
)
@ignoreextroperties
数据类帐户(
@排除@get:PropertyName(帐户名称)@set:PropertyName(帐户名称)变量名称:
字符串=”,
@排除@get:PropertyName(ACCOUNT\u SNAME)@set:PropertyName(ACCOUNT\u SNAME)var SNAME:
字符串=”,
@排除@get:PropertyName(帐户城市)@set:PropertyName(帐户城市)变量城市:
字符串=”,
@排除@get:PropertyName(帐户\健身房)@set:PropertyName(帐户\健身房)变量健身房:
字符串=”,
@排除@get:PropertyName(帐户权重)@set:PropertyName(帐户权重)变量
重量:String=“”,
@排除@get:PropertyName(帐户高度)@set:PropertyName(帐户高度)变量
高度:String=“”,
@排除@get:PropertyName(帐户\u URI\u图片)
@set:PropertyName(帐户\u URI\u图片)var-imageUrl:String=“”,
@Exclude@set:Exclude@get:Exclude var followers:List=emptyList(),
@Exclude@set:Exclude@get:Exclude var订阅者:List=emptyList(),
@Exclude@set:Exclude@get:Exclude-var-countexclude:List=emptyList()
)
但我不知道为什么它没有正确的工作^_^

@IgnoreExtraProperties
data class Account(
@Exclude @get:PropertyName(ACCOUNT_NAME) @set:PropertyName(ACCOUNT_NAME) var name: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_SNAME) @set:PropertyName(ACCOUNT_SNAME) var sName: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_CITY) @set:PropertyName(ACCOUNT_CITY) var city: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_GYM) @set:PropertyName(ACCOUNT_GYM) var gym: 
String = "",
@Exclude @get:PropertyName(ACCOUNT_WEIGHT) @set:PropertyName(ACCOUNT_WEIGHT) var 
weight: String = "",
@Exclude @get:PropertyName(ACCOUNT_HEIGHT) @set:PropertyName(ACCOUNT_HEIGHT) var 
height: String = "",
@Exclude @get:PropertyName(ACCOUNT_URI_PICTURE) 
@set:PropertyName(ACCOUNT_URI_PICTURE) var imageUrl: String = "",
@Exclude @set:Exclude @get:Exclude var followers: List<String> = emptyList(),
@Exclude @set:Exclude @get:Exclude var subscribers: List<String> = emptyList(),
@Exclude @set:Exclude @get:Exclude var countAchievements: List<String> = emptyList()
)