Android应用程序调试几秒钟然后停止

时间:2016-05-01 20:22:59

标签: c# android visual-studio

我正在尝试在家中设置一个新的Android应用开发环境,我遇到了一个问题,这是一个showstopper。

首先,这是我的环境:

  1. Windows 10
  2. 安装了Xamarin平台的Visual Studio Community 2015
  3. 测试设备是:G Pad 7.0 LTE
  4. Android版本5.0.2
  5. 我正在关注本教程:MSDN tutorial

    当我去调试我的测试应用程序时,会发生这种情况。

           
    • 从我的平板电脑作为目标,从Visual Studio中选择调试      
    • VS部署到平板电脑      
    • 应用程序在平板电脑上启动      
    • 应用和调试会话运行大约5-10秒。      
    • 调试会话结束,应用关闭

    在Visual Studio中没有显示任何错误,当我打开Android记录时,这是一个如此巨大的信息溢出,我真的不知道从哪里开始搜索问题。

    请注意,当我第一次设置应用程序时,根据教程,平板电脑上的调试工作正常。初始构建只是一个带有一些基本控件的模板。

    在当时和停止工作之间,我还在Windows Phone设备上添加并成功测试了Windows Phone项目。

    一旦我到达我正在修改项目的部分就是问题何时开始。我认为也许我所做的代码的更改导致了这个问题,所以我尝试了另一个空白的应用程序,那个空白的应用程序现在也崩溃了。

    当我将教程应用程序部署到模拟器时,它会立即崩溃,但是当我部署空白应用程序时,它不会崩溃。

    我还尝试将平板电脑恢复为出厂默认设置并再次进行测试。相同的场景:空白应用和教程应用运行几秒钟,调试停止,应用关闭。

    关于我正在看什么类型的问题的任何线索?

4 个答案:

答案 0 :(得分:4)

<强>解决方案

  1. 清理项目(右键单击Project并选择clean)
  2. 转到您的构建文件夹。可能在您的Android项目的根文件夹中,名为“obj”。当您遇到此行为(调试或发布)时,删除您拥有的构建。
  3. 目录路径

    ./AndroidProject/obj/Debug
    ./AndroidProject/obj/Release
    
    1. 重新启动Visual Studio
    2. 再次构建并运行它应该可以正常工作,因为md5-hashes现在再次匹配。
    3. 我之前从设备上卸载了应用程序并重新启动它,我不知道这是否已经被要求了,因为该应用程序现在正被新的Xamarin版本“重新安装”。

      adb uninstall com.your.domain
      

      故事和背景信息

      运行Android 5.0的设备遇到了同样的问题。

      基本上,应用程序只是在没有任何注释的情况下停止。 当我现在重新启动手机时,通过以下行延长了日志(一次):

      Device could not find component named: *com.your.domain*/{*md5hash*}.*{Activity}
      

      事实证明,使用Andrpod 5.0实现了散列机制:

        

      使用5.0版本,Android Callable的默认包名称   Wrappers将基于程序集限定名称的MD5SUM   正在导出的类型。这允许使用相同的完全限定名称   由两个不同的组件提供,而不是包装   错误。   有关详细信息,请参阅此Xamarin.Android 5.1

      因此,如果md5-hash现在不时发生变化,那么简单地清理项目是不够的。

答案 1 :(得分:1)

我遇到了同样的问题并多次应用了上述相同的解决方案,这似乎可以解决这个特殊问题。

可能相关的解决方案,但绝对值得注意

在发布此Android应用程序并稍后发布应用程序更新后,我们收到用户的反馈,他们的Android主屏幕应用程序快捷方式在每次更新后都会消失。由于显而易见的原因,这并不好,但是对此的修复非常简单,如下所示:

dream-team-mobile-blog - Android app removes shortcut on update Xamarin solution

在主活动上,设置名称属性

<your package>.<your main activity>

喜欢:

com.mycompany.myapp.MainActivity

对于我的解决方案,我选择使用以下代码执行此操作:

[Activity(Name = Constants.PackageName + "." + nameof(MainActivity), 
Label = Constants.AppIconTitle, Icon = "@drawable/icon", 
Theme = "@style/splashscreen", MainLauncher = true, 
LaunchMode = LaunchMode.SingleInstance, 
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]

//Side Note:  I change my PackageName between Prod and SQA builds, so using
//a constant as seen above makes that change less risky to miss maintaining.
//Also, using nameof() keeps things tight and a sure match.

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

我在这篇文章中提到它,因为有了这个修复可能有:

  1. 肯定会阻止应用程序快捷方式丢失和
  2. 可能阻止了这篇文章中讨论的问题
  3. 因为似乎不再生成Main活动的MD5哈希前缀。

    这个调整可能会修复两个错误。如果没有,实施固定的主要活动名称肯定会帮助您的用户在发布更新时保留其应用程序的快捷方式!

答案 2 :(得分:0)

转到您的AndroidManifest.xml并更改您的包名称。

答案 3 :(得分:0)

在Visual Studio 2017中为我修复的问题是:

Tools → Options → Xamarin → Android Settings

并取消选中:

Preserve Application data cache on device between deploys