【问题标题】:App crashes on production but not in development应用程序在生产中崩溃,但在开发中没有
【发布时间】:2013-12-28 19:09:16
【问题描述】:

我刚刚在 Google Play 上启动了我的全新应用程序,但是当我尝试打开它时它崩溃了。问题是,它曾经在开发中运行良好。

我启用了 ProGuard,我尝试禁用它,生成签名的 apk 并在设备上手动安装它。但我的应用仍然无法打开。

由于我启用了 Crittercism,经过几次尝试,我终于得到了一个崩溃报告给网站,它说:

无法启动活动 ComponentInfo{com.pizzapp.android/com.pizzapp.android.login.PAWelcomeActivity}: java.lang.RuntimeException: java.lang.NoSuchMethodException: a(Activity,int)

PAWelcomeActivity 是我的主要活动!

我的 proguard-project.txt 是这样的:

-keepattributes SourceFile, LineNumberTable, Exceptions, Signature, InnerClasses

-keep class com.newrelic.** { *; }
-keep class com.facebook.** { *; }
-keep class com.parse.** { *; }

-dontwarn com.newrelic.**

有人知道这是什么崩溃吗?

谢谢, 牛顿

更新 1:

在这里你可以看到我的包裹是如何组织的:

【问题讨论】:

    标签: android proguard


    【解决方案1】:

    您可能混淆了 Activity 生命周期方法名称。确保不要这样做。

    【讨论】:

    • 我该怎么做?我已经用我的包组织更新了我的答案..这是我的第一个 android 应用程序..所以我是 proguard 和东西的新手:/
    • 那么不要使用proguard,或者将你的proguard文件的内容复制到一个临时文件夹然后运行android update project -p <path-to-your-project>,然后将你额外的东西添加到生成的proguard文件中
    • 我不知道那是做什么的.. 但我只是尝试添加代码:-keep class com.pizzapp.android.** { *; } 到我的 proguard,它仍然崩溃..
    • 嗯?你不知道它做了什么,所以你只是没有这样做?把proguard关掉就行了,如果你不知道怎么用,我怀疑你不需要它
    • 是的..我不会运行一个我不知道它做什么的命令..我在谷歌上没有找到任何关于它的东西..但我确实需要有 proguard启用了,我只是没用过!
    【解决方案2】:

    我终于解决了……问题是我忘了添加 ActionBarSherlock 代码让 proguard 使用它..

    -keep class android.support.v4.app.** { *; }
    -keep interface android.support.v4.app.** { *; }
    -keep class com.actionbarsherlock.** { *; }
    -keep interface com.actionbarsherlock.** { *; }
    -keepattributes *Annotation*
    

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2020-02-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多