应用程序曾在谷歌Play商店崩溃过一次,但从未在Android Studio上崩溃过

应用程序曾在谷歌Play商店崩溃过一次,但从未在Android Studio上崩溃过,android,google-play,google-console-developer,rushorm,Android,Google Play,Google Console Developer,Rushorm,早上好 我的应用程序一旦在谷歌Play商店上发布,然后从中安装,就会崩溃。如果我从Android Studio安装我的应用程序,它将不会崩溃 当我试图打开一个布局,从一个用RushORM制作的本地数据库中获取信息时,应用程序似乎崩溃了 以下是ANRs在GP控制台上的报告: a.a.a.b.b.c: This is most likely caused by a change in data structure or new RushObject. This issue should be res

早上好

我的应用程序一旦在谷歌Play商店上发布,然后从中安装,就会崩溃。如果我从Android Studio安装我的应用程序,它将不会崩溃

当我试图打开一个布局,从一个用RushORM制作的本地数据库中获取信息时,应用程序似乎崩溃了

以下是ANRs在GP控制台上的报告:

a.a.a.b.b.c: This is most likely caused by a change in data structure or new RushObject.
This issue should be resolved by a database migration.
This can be done by updating db version number in the manifest or setting Rush in debug mode.
To set Rush in debug mode add this to your manifest file - <meta-data android:name="Rush_debug" android:value="true" />
    at a.a.a.a.j.b(Unknown Source)
    at a.a.a.b.n.a(Unknown Source)
    at a.a.a.b.n.a(Unknown Source)
    at a.a.a.b.al.b(Unknown Source)
    at com.avena.avenafit.dashboard.g.L(Unknown Source)
    at com.avena.avenafit.dashboard.g.a(Unknown Source)
    at com.avena.avenafit.dashboard.ad.a(Unknown Source)
    at b.a.a.a.c.a(Unknown Source)
    at com.avena.avenafit.dashboard.ad.a(Unknown Source)
    at android.support.v4.app.af.a(Unknown Source)
    at android.support.v4.app.af.a(Unknown Source)
    at android.support.v4.app.j.run(Unknown Source)
    at android.support.v4.app.af.e(Unknown Source)
    at android.support.v4.app.af.b(Unknown Source)
    at android.support.v4.app.ap.b(Unknown Source)
    at android.support.v4.view.ViewPager.a(Unknown Source)
    at android.support.v4.view.ViewPager.c(Unknown Source)
    at android.support.v4.view.ViewPager.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.support.design.widget.CoordinatorLayout.a(Unknown Source)
    at android.support.design.widget.CoordinatorLayout.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.support.v4.widget.DrawerLayout.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
    at android.support.v7.widget.ContentFrameLayout.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
    at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
    at android.view.Choreographer.doCallbacks(Choreographer.java:670)
    at android.view.Choreographer.doFrame(Choreographer.java:606)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
ANR输入分派超时(等待发送非关键事件,因为触摸窗口尚未完成500.0毫秒前传递给它的某些输入事件的处理。等待队列长度:35。等待队列头时间:5507.1毫秒。)

以下是GP控制台上的崩溃报告:

a.a.a.b.b.c: This is most likely caused by a change in data structure or new RushObject.
This issue should be resolved by a database migration.
This can be done by updating db version number in the manifest or setting Rush in debug mode.
To set Rush in debug mode add this to your manifest file - <meta-data android:name="Rush_debug" android:value="true" />
    at a.a.a.a.j.b(Unknown Source)
    at a.a.a.b.n.a(Unknown Source)
    at a.a.a.b.n.a(Unknown Source)
    at a.a.a.b.al.b(Unknown Source)
    at com.avena.avenafit.dashboard.g.L(Unknown Source)
    at com.avena.avenafit.dashboard.g.a(Unknown Source)
    at com.avena.avenafit.dashboard.ad.a(Unknown Source)
    at b.a.a.a.c.a(Unknown Source)
    at com.avena.avenafit.dashboard.ad.a(Unknown Source)
    at android.support.v4.app.af.a(Unknown Source)
    at android.support.v4.app.af.a(Unknown Source)
    at android.support.v4.app.j.run(Unknown Source)
    at android.support.v4.app.af.e(Unknown Source)
    at android.support.v4.app.af.b(Unknown Source)
    at android.support.v4.app.ap.b(Unknown Source)
    at android.support.v4.view.ViewPager.a(Unknown Source)
    at android.support.v4.view.ViewPager.c(Unknown Source)
    at android.support.v4.view.ViewPager.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.support.design.widget.CoordinatorLayout.a(Unknown Source)
    at android.support.design.widget.CoordinatorLayout.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.support.v4.widget.DrawerLayout.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
    at android.support.v7.widget.ContentFrameLayout.onMeasure(Unknown Source)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
    at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
    at android.view.View.measure(View.java:18794)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
    at android.view.Choreographer.doCallbacks(Choreographer.java:670)
    at android.view.Choreographer.doFrame(Choreographer.java:606)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
键入\ of \检查我的一个db结构上是否有一个字段(如我所提到的,由RushORM生成)。作为参考,以下是我的课程:

package com.avena.avenafit.dbb;

import co.uk.rushorm.core.RushObject;

public class UserCheck extends RushObject {

private String type_of_check;
private String check_date;
private String hour_checked;

/* Classes must include an empty constructor */
public UserCheck() {}

    public String getType_of_check() {
      return type_of_check;
    }
    public void setType_of_check(String type_of_check) {
      this.type_of_check = type_of_check;
    }

    public String getCheck_date() {
      return check_date;
    }
    public void setCheck_date(String check_date) {
      this.check_date = check_date;
    }

    public String getHour_checked() {
      return hour_checked;
    }
    public void setHour_checked(String hour_checked) {
      this.hour_checked = hour_checked;
    }

}
下面是一个例子,我设置了检查的类型:

breakfast.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {

                String time =
                        new SimpleDateFormat("HH:mm", Locale.getDefault()).format(date);

                sendCheck("check_breakfast");
                breakfast.setColorFilter(color_green);

                UserCheck check1 = new UserCheck();
                check1.setType_of_check("1");
                check1.setCheck_date(currentDate);
                check1.setHour_checked(time.toString());
                check1.save();

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    });

有人看到我在这里遗漏了什么吗?

RushOrm只需要这一行就可以与ProGuard一起工作

 -keep public class * implements co.uk.rushorm.core.Rush { *; }
之所以使用implements Rush,是因为您扩展的RushObject本身实现了Rush

类可以通过直接实现Rush而不是扩展RushObject来使用RushOrm,这就是为什么这是与ProGuard一起使用它的最佳方式


谢谢

RushOrm只需要这一行就可以与ProGuard一起工作

 -keep public class * implements co.uk.rushorm.core.Rush { *; }
之所以使用implements Rush,是因为您扩展的RushObject本身实现了Rush

类可以通过直接实现Rush而不是扩展RushObject来使用RushOrm,这就是为什么这是与ProGuard一起使用它的最佳方式


谢谢

您的实际迁移代码在哪里?您是否在使用proguard?如果您使用的是Proguard。看起来你在根据错误日志缩小你的发布apk了吗?如果是,请尝试缩小调试版本,并在手机上运行它,以查看是否正确logs@mastrgamr它不起作用了。这行代码说
-keep public class*implements co.uk.rushorm.core.Rush{*;}
,但我没有使用implements,而是使用extensed。听起来很傻,但我想尝试一下切换这些词。您的实际迁移代码在哪里,似乎在向表中添加列?您使用的是proguard吗?如果您使用的是Proguard。看起来你在根据错误日志缩小你的发布apk了吗?如果是,请尝试缩小调试版本,并在手机上运行它,以查看是否正确logs@mastrgamr它不起作用了。这行代码说
-keep public class*implements co.uk.rushorm.core.Rush{*;}
,但我没有使用implements,而是使用extensed。听起来很傻,但我要试着换一下这些词。非常感谢你帮我修理这个人。这是一个很好的解释。如果我可以建议的话,这个解释在官方文件上会很好。非常感谢你帮助我修复这个人。这是一个很好的解释。如果我可以建议的话,这个解释在官方文件上会很好。