【问题标题】:FragmentTransaction.replace() crashes - but only in release buildFragmentTransaction.replace() 崩溃 - 但仅在发布版本中
【发布时间】:2019-07-24 17:22:40
【问题描述】:

当我在调试(通过 USB 的 ADB)中执行以下代码时,它可以工作,但是当我安装生成的版本 .apk 时,它会崩溃。更准确地说,以下代码崩溃了。

.replace(R.id.settings, new SettingsFragment())

这里是代码的完整版本。

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.settings, new SettingsFragment())
                .commit();
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    static class SettingsFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.root_preferences, rootKey);
        }
    }
}

我从 Google Play 中发现了一个错误,它说它抛出了一个 IllegalStateExcetion。我不知道任何其他检索错误消息的方法,因为它在调试模式下工作得非常好。

这是对应的 XML 文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/settings"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

【问题讨论】:

  • 请添加LogCat中显示的消息。
  • 使用 Fabric Crashlytics(现在为 Firebase Crashlytics)或其他一些 crashlytics api 在发布版本中获取 ccrash 报告。
  • 请禁用即时运行,然后重试。是的,如果这不起作用,请发布您的 proguard-rules.pro 文件。
  • @ReazMurshed 即时运行已禁用,现在出现异常。我的 proguard-rules.pro 文件都被注释掉了。
  • 如果您的问题没有专门针对 IDE 本身,请不要使用android-studio 标签

标签: java android


【解决方案1】:

我相信禁用 Instant run 可能会解决此问题。看看这个线程:

Android App Crashes on Real Device If apk is manually installed

【讨论】:

    【解决方案2】:

    必须将 SettingsFragment 公开,现在看起来可以了。

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多