Firebase 实时数据库不在发布 apk [Android] 中检索数据
Firebase realtime database does not retrieving data in release apk [Android]
在设备或模拟器上 运行 应用程序时,数据检索完美,但在生成发布 apk 时不显示图像
我认为问题出在混淆器上,所以我尝试了这个答案
但它不起作用。
这是我的proguard_rules.pro
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**
-dontwarn com.firebase.**
-dontnote com.firebase.client.core.GaePlatform
-keepattributes Signature
-keepattributes *Annotation*
-keepattributes InnerClasses,EnclosingMethod
-keep class com.images.backgrounds.** { *; }
-keep class com.firebase.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.apache.**
-dontwarn org.w3c.dom.**
-dontwarn javax.annotation.**
#
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**
-keep class javamail.** {*;}
-keep class javax.mail.** {*;}
-keep class javax.activation.** {*;}
-keep class com.sun.mail.dsn.** {*;}
-keep class com.sun.mail.handlers.** {*;}
-keep class com.sun.mail.smtp.** {*;}
-keep class com.sun.mail.util.** {*;}
-keep class mailcap.** {*;}
-keep class mimetypes.** {*;}
-keep class myjava.awt.datatransfer.** {*;}
-keep class org.apache.harmony.awt.** {*;}
-keep class org.apache.harmony.misc.** {*;}
此外,我在模型中添加了@Keep
class
我在 bulid gradle 文件中设置 minifyEnabled = true:
release {
useProguard true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
但是 POJO 中的图像仍然没有在 APK 中显示
请帮帮我
Proguard 很可能是 hiding/stripping 那些处于发布模式的 class,这使得 Firebase 不可能 serialize/deserialize 它们。
您可以包含注释“@Keep”,这样混淆器就不会删除此 class.
中的任何方法
例如:
...
@IgnoreExtraProperties
@Keep
public class Posto {
public String uid;
public String nome;
...
在 build.gradle 中包含此依赖项:
compile 'com.android.support:support-annotations:25.2.0'
检查此以获取更多信息:https://developer.android.com/studio/build/shrink-code.html
此答案基于我自己的问题,已在 Encapsulated getters refurn null from firebase database only in release. Works fine in debug mode
上报告并解决
我遇到了类似的问题,我已经为我的项目构建了一个签名的 Apk 和应用程序包,这就是我在 Kotlin 中解决它的方法,你只需将以下注释添加到你的模型或 class 包含 firebase 凭据说 uid、姓名、电子邮件、照片和其他:
@IgnoreExtraProperties
@Keep
there is my full class with my model directory:
@IgnoreExtraProperties
@Keep
@Parcelize
class Post(val uid: String, val title:String, val description:String, val imageUri: String, val likes:Int, val timeStamp:Long) :
Parcelable {
constructor() : this("" , "", "", "", 1, -1)
}
注意:虽然 Google Play 商店需要应用程序包,但我建议您也使用相同的海证书登录来构建 apk。然后 运行 在您的 phone 本地安装 apk,如果一切正常,您可以继续上传您生成的应用程序包。
在设备或模拟器上 运行 应用程序时,数据检索完美,但在生成发布 apk 时不显示图像
我认为问题出在混淆器上,所以我尝试了这个答案
但它不起作用。
这是我的proguard_rules.pro
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**
-dontwarn com.firebase.**
-dontnote com.firebase.client.core.GaePlatform
-keepattributes Signature
-keepattributes *Annotation*
-keepattributes InnerClasses,EnclosingMethod
-keep class com.images.backgrounds.** { *; }
-keep class com.firebase.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.apache.**
-dontwarn org.w3c.dom.**
-dontwarn javax.annotation.**
#
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**
-keep class javamail.** {*;}
-keep class javax.mail.** {*;}
-keep class javax.activation.** {*;}
-keep class com.sun.mail.dsn.** {*;}
-keep class com.sun.mail.handlers.** {*;}
-keep class com.sun.mail.smtp.** {*;}
-keep class com.sun.mail.util.** {*;}
-keep class mailcap.** {*;}
-keep class mimetypes.** {*;}
-keep class myjava.awt.datatransfer.** {*;}
-keep class org.apache.harmony.awt.** {*;}
-keep class org.apache.harmony.misc.** {*;}
此外,我在模型中添加了@Keep
class
我在 bulid gradle 文件中设置 minifyEnabled = true:
release {
useProguard true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
但是 POJO 中的图像仍然没有在 APK 中显示
请帮帮我
Proguard 很可能是 hiding/stripping 那些处于发布模式的 class,这使得 Firebase 不可能 serialize/deserialize 它们。 您可以包含注释“@Keep”,这样混淆器就不会删除此 class.
中的任何方法例如:
...
@IgnoreExtraProperties
@Keep
public class Posto {
public String uid;
public String nome;
...
在 build.gradle 中包含此依赖项:
compile 'com.android.support:support-annotations:25.2.0'
检查此以获取更多信息:https://developer.android.com/studio/build/shrink-code.html
此答案基于我自己的问题,已在 Encapsulated getters refurn null from firebase database only in release. Works fine in debug mode
上报告并解决我遇到了类似的问题,我已经为我的项目构建了一个签名的 Apk 和应用程序包,这就是我在 Kotlin 中解决它的方法,你只需将以下注释添加到你的模型或 class 包含 firebase 凭据说 uid、姓名、电子邮件、照片和其他:
@IgnoreExtraProperties
@Keep
there is my full class with my model directory:
@IgnoreExtraProperties
@Keep
@Parcelize
class Post(val uid: String, val title:String, val description:String, val imageUri: String, val likes:Int, val timeStamp:Long) :
Parcelable {
constructor() : this("" , "", "", "", 1, -1)
}
注意:虽然 Google Play 商店需要应用程序包,但我建议您也使用相同的海证书登录来构建 apk。然后 运行 在您的 phone 本地安装 apk,如果一切正常,您可以继续上传您生成的应用程序包。