【问题标题】:Xamarin android. Works in debug. Doesn't work in release (createSubDecor null reference)Xamarin 安卓。在调试中工作。在发布时不起作用(createSubDecor 空引用)
【发布时间】:2016-09-17 18:35:53
【问题描述】:

应用程序在没有shared runtime 选项和link sdk and user assemblies 的调试模式下工作 在发布模式下它不起作用。尝试了不同的链接选项并启用shared runtime

我正在使用 23.4.0.1 android.support 库

这里是日志:

java.lang.NullPointerException 09-17 21:25:33.987 I/MonoDroid(3557): 在 android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:491) 09-17 21:25:33.987 I/MonoDroid(3557):在 android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312) 09-17 21:25:33.987 I/MonoDroid(3557):在 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277) 09-17 21:25:33.991 I/MonoDroid(3557):在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 09-17 21:25:33.991 I/MonoDroid(3557):在 md5cc34a7196a93e5e13d1bb5964f64c350.MainActivity.n_onCreate(Native 方法)09-17 21:25:33.991 I/MonoDroid(3557):在 md5cc34a7196a93e5e13d1bb5964f64c350.MainActivity.onCreate(MainActivity.java:30) 09-17 21:25:33.991 I/MonoDroid(3557):在 android.app.Activity.performCreate(Activity.java:5231) 09-17 21:25:33.995 I/MonoDroid(3557):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 09-17 21:25:33.995 I/MonoDroid(3557):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 09-17 21:25:33.995 I/MonoDroid(3557):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 09-17 21:25:33.995 I/MonoDroid(3557):在 android.app.ActivityThread.access$800(ActivityThread.java:135) 09-17 21:25:33.995 I/MonoDroid(3557):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 09-17 21:25:33.995 I/MonoDroid(3557):在 android.os.Handler.dispatchMessage(Handler.java:102) 09-17 21:25:33.999 I/MonoDroid(3557):在 android.os.Looper.loop(Looper.java:136) 09-17 21:25:33.999 I/MonoDroid(3557):在 android.app.ActivityThread.main(ActivityThread.java:5017) 09-17 21:25:33.999 I/MonoDroid(3557):在 java.lang.reflect.Method.invokeNative(Native Method) 09-17 21:25:33.999 I/MonoDroid(3557):在 java.lang.reflect.Method.invoke(Method.java:515) 09-17 21:25:33.999 I/MonoDroid(3557):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 09-17 21:25:33.999 I/MonoDroid(3557):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 09-17 21:25:33.999 I/MonoDroid(3557):在 dalvik.system.NativeStart.main(Native Method)

致命异常:主要 09-17 21:25:34.011 E/AndroidRuntime(3557): 进程:com.SlaveryGames.PhoneChecker,PID:3557 09-17 21:25:34.011 E/AndroidRuntime(3557):java.lang.RuntimeException:无法启动 活动 组件信息{com.SlaveryGames.PhoneChecker/md5cc34a7196a93e5e13d1bb5964f64c350.MainActivity}: java.lang.NullPointerException 09-17 21:25:34.011 E/AndroidRuntime( 第3557章 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.ActivityThread.access$800(ActivityThread.java:135) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.os.Handler.dispatchMessage(Handler.java:102) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.os.Looper.loop(Looper.java:136) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.ActivityThread.main(ActivityThread.java:5017) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 java.lang.reflect.Method.invokeNative(Native Method) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 java.lang.reflect.Method.invoke(Method.java:515) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 dalvik.system.NativeStart.main(Native Method) 09-17 21:25:34.011 E/AndroidRuntime(3557):由:java.lang.NullPointerException引起 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:491) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 md5cc34a7196a93e5e13d1bb5964f64c350.MainActivity.n_onCreate(Native 方法)09-17 21:25:34.011 E/AndroidRuntime(3557):在 md5cc34a7196a93e5e13d1bb5964f64c350.MainActivity.onCreate(MainActivity.java:30) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.Activity.performCreate(Activity.java:5231) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 09-17 21:25:34.011 E/AndroidRuntime(3557):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

【问题讨论】:

  • 发布您的OnCreate 方法为您的MainActivity 以及您使用的是哪个版本的Xamarin.Android.Support.v7.AppCompat
  • 我添加了支持库的版本。关于 onCreate - 没有什么特别的。我试图从中删除所有内容,但仍然崩溃

标签: android xamarin xamarin.android


【解决方案1】:

Android 错误:https://code.google.com/p/android/issues/detail?id=207638

  • 兼容 23.1.1、23.3.0、23.2.1、23.3.0

解决方法(在调用base.OnCreate 之前访问Window.DecorView):

    protected override void OnCreate(Bundle savedInstanceState)
    {
        // https://code.google.com/p/android/issues/detail?id=207638
        #pragma warning disable CS0219
        var bugWorkAround = Window.DecorView.Handle;
        #pragma warning restore CS0219
        base.OnCreate(savedInstanceState);
        ~~~~~

在 23.4.0.1+ 中修复(?):

注意:我仍在使用此版本中的解决方法...

<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v4" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid70" />

注意:请参阅此SO,因为这是我在收到 CreateSubDecor 空引用崩溃时第一次发现 Android 错误号的地方。

【讨论】:

  • @Vorotnyak_Nazar 很高兴听到... Android 问题在该领域给客户带来了很多问题。
【解决方案2】:

对我来说,降级支持库对我有用。也许重新安装新的可能会起作用,还没有尝试过。花了我 6 个小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多