首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamain.Forms (安卓)- APK在5.1版上崩溃(API 22)

Xamain.Forms (安卓)- APK在5.1版上崩溃(API 22)
EN

Stack Overflow用户
提问于 2018-06-20 03:18:52
回答 1查看 1.3K关注 0票数 2

我正在创建一个简单的android应用程序,其中包含像Label, Entry and Buttons这样的简单控件/视图

  • 目标框架:Android8.1
  • Android目标版本:Android8.1
  • 最低安卓版本:Android4.4

在存档和生成APK文件之后,我成功地将它安装在我的MEmu模拟器中(Android : 5.1)。但当我试图打开它时,应用程序崩溃了。

这是我从设备日志工具获得的错误:

代码语言:javascript
运行
复制
System.NullReferenceException: Object reference not set to an instance of an object
  at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.Page page) [0x0006f] in <99988d4ab8d144898ef5bc7586876d75>:0 
  at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x0000c] in <99988d4ab8d144898ef5bc7586876d75>:0 
  at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication (Xamarin.Forms.Application application) [0x0026f] in <99988d4ab8d144898ef5bc7586876d75>:0 
  at SampleApp.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x00028] in <eaa39f9ef27d400ebfed424165f990c2>:0 
  at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x0000f] in <818821ea7e204c78a45bc29cdc69e744>:0 
  at (wrapper dynamic-method) System.Object.fe8f1617-954f-4716-901a-433b7f8b44bf(intptr,intptr,intptr)

我怀疑这是Xamarin.Forms.Platform.Android.FormsAppCompatActivity的问题。因为当我将MainActivity父类更改为Xamarin.Forms.Platform.Android.FormsApplicationActivity 时,它将无错误地运行

但是,如何在不切换到FormsApplicationActivity的情况下修复此错误??

编辑:当我在“打包属性”中禁用ProGuard时,应用程序运行平稳。(为什么?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-20 06:09:54

对于Forms‘3.0 (至少是版本3.0.0.561731)来说,这是一个bug/问题,因为Java名称空间中有一些东西正在被删除,而Xamarin没有生成一个正确的程序保护配置来自动防止问题的发生。

我不确定是哪些实际的Java类和/或字段导致了这个问题,但是您可以这样做来解决这个问题:

在您的Xamarin.Android应用程序项目中创建一个基于文本的配置文件,并为它分配一个构建类型的ProguardConfiguration,即:

代码语言:javascript
运行
复制
<ItemGroup>
   <ProguardConfiguration Include="Proguard.txt" />
</ItemGroup>

并包括以下内容:

代码语言:javascript
运行
复制
# Proguard issue in Forms' version 3.0.0.561731
# MonoDroid: System.NullReferenceException: Object reference not set to an instance of an object
# MonoDroid:   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.Page page) [0x0006f] in <09e4bdebfa024bfd9231e2318fd7c3d7>:0
# MonoDroid:   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x0000c] in <09e4bdebfa024bfd9231e2318fd7c3d7>:0

-keep public class android.support.v7.widget.** { *; }

从设备/仿真器中删除应用程序,执行干净的所有/重新构建所有程序,然后重新部署应用程序,这将解决问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50939682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档