【问题标题】:Xamarin Android app closes immediately after launchingXamarin Android 应用程序在启动后立即关闭
【发布时间】:2016-03-24 15:28:28
【问题描述】:

我在 Visual Studio 中使用 Xamarin。

我创建了一个样板 android 应用程序(点击我)并尝试了以下操作:

场景 1:

  1. 切换到释放模式

  2. 右键项目>导出Android包(.apk)

  3. 侧载生成的 .apk 到我的手机上

  4. 应用启动没有问题

场景 2

  1. 切换到释放模式

  2. 工具 > Android > 发布 Android 应用

  3. 创建私钥存储后签名的 APK

  4. 将生成的.apk(在发布文件夹中)侧载到手机上

  5. 应用程序在启动后立即关闭(没有错误消息,什么都没有)

这可能是什么问题?

签署包裹后我还需要做其他事情吗?

在这两种情况下,输出 apk 的大小都是相同的 5227kb

更新:

我已经尝试在 android 模拟器上运行相同的东西。结果相同。该应用程序在模拟器的调试模式下运行良好。将其切换到发布后,我得到“不幸的是,App1 已停止”

这是错误日志http://pastebin.com/4j1Vwtgf

更新 2:

这是我在发布模式下部署时的日志:

1>Starting deploy 5" KitKat (4.4) XXHDPI Phone ...
1>Deploying 5" KitKat (4.4) XXHDPI Phone ...
1>Build started.
1>C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;__XAMARIN_ANDROID_v1_0__;__MOBILE__;__ANDROID__;__ANDROID_1__;__ANDROID_2__;__ANDROID_3__;__ANDROID_4__;__ANDROID_5__;__ANDROID_6__;__ANDROID_7__;__ANDROID_8__;__ANDROID_9__;__ANDROID_10__;__ANDROID_11__;__ANDROID_12__;__ANDROID_13__;__ANDROID_14__;__ANDROID_15__;__ANDROID_16__;__ANDROID_17__;__ANDROID_18__;__ANDROID_19__;__ANDROID_20__;__ANDROID_21__;__ANDROID_22__;__ANDROID_23__ /errorendlocation /preferreduilang:en-US /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v6.0\Mono.Android.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.Linq.dll" /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\App1.dll /ruleset:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset" /target:library /utf8output MainActivity.cs Resources\Resource.Designer.cs Properties\AssemblyInfo.cs "C:\Users\a\AppData\Local\Temp\MonoAndroid,Version=v6.0.AssemblyAttributes.cs" obj\Release\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs obj\Release\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\Release\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
1>App1 -> C:\Users\a\Documents\Visual Studio 2015\Projects\App1\App1\bin\Release\App1.dll
1>  Processing: obj\Release\res\layout\main.xml
1>  Processing: obj\Release\res\values\strings.xml
1>C:\Program Files (x86)\Java\jdk1.7.0_55\\bin\keytool.exe -list -alias androiddebugkey -storepass android -keypass android -keystore "C:\Users\al\AppData\Local\Xamarin\Mono for Android\debug.keystore" 
1>C:\Program Files (x86)\Java\jdk1.7.0_55\\bin\jarsigner.exe -keystore "C:\Users\a\AppData\Local\Xamarin\Mono for Android\debug.keystore" -storepass android -keypass android -digestalg SHA1 -sigalg md5withRSA -signedjar bin\Release\\App1.App1-Signed-Unaligned.apk "C:\Users\a\Documents\Visual Studio 2015\Projects\App1\App1\obj\Release\android\bin\App1.App1.apk" androiddebugkey 
1>No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2046-02-20) or after any future revocation date.
1>C:\Program Files (x86)\Android\android-sdk\build-tools\23.0.1\zipalign.exe 4 "C:\Users\a\Documents\Visual Studio 2015\Projects\App1\App1\bin\Release\App1.App1-Signed-Unaligned.apk" "bin\Release\\App1.App1-Signed.apk" 
1>Build succeeded.
1>Deploy successfully on 5" KitKat (4.4) XXHDPI Phone

这里是调试模式的构建日志

2>Starting deploy 5" KitKat (4.4) XXHDPI Phone ...
2>Deploying 5" KitKat (4.4) XXHDPI Phone ...
2>Build started.
2>C:\Program Files (x86)\Java\jdk1.7.0_55\\bin\keytool.exe -list -alias androiddebugkey -storepass android -keypass android -keystore "C:\Users\a\AppData\Local\Xamarin\Mono for Android\debug.keystore" 
2>C:\Program Files (x86)\Java\jdk1.7.0_55\\bin\jarsigner.exe -keystore "C:\Users\a\AppData\Local\Xamarin\Mono for Android\debug.keystore" -storepass android -keypass android -digestalg SHA1 -sigalg md5withRSA -signedjar bin\Debug\\App1.App1-Signed-Unaligned.apk "C:\Users\a\Documents\Visual Studio 2015\Projects\App1\App1\obj\Debug\android\bin\App1.App1.apk" androiddebugkey 
2>No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2046-02-20) or after any future revocation date.
2>C:\Program Files (x86)\Android\android-sdk\build-tools\23.0.1\zipalign.exe 4 "C:\Users\a\Documents\Visual Studio 2015\Projects\App1\App1\bin\Debug\App1.App1-Signed-Unaligned.apk" "bin\Debug\\App1.App1-Signed.apk" 
2>Build succeeded.
2>Deploy successfully on 5" KitKat (4.4) XXHDPI Phone

【问题讨论】:

  • 您查看过设备日志吗?
  • @Jason 更新主帖
  • 您是否在安装场景 2 应用程序之前删除了场景 1 应用程序?如果没有:你能试试这个吗?
  • 你在使用共享运行时吗?
  • @Sven-MichaelStübe 是的,我已经卸载了该应用程序。我已经用构建日志更新了我的主要帖子

标签: android xamarin


【解决方案1】:

我在模拟器(VS Android 模拟器)中运行发布版本时遇到了同样的错误。事实证明,我们已禁用 x86 作为支持的架构。

【讨论】:

    【解决方案2】:

    当我开始使用 Xamarin 时,我在使用基本应用程序时遇到了类似的问题。问题出在我使用的 apk 文件上。我从我的 bin/Release 文件夹中选择了它,而实际签名 + 发布 + zip 对齐的应用程序的路径位于 bin 目录之外的项目文件夹级别。

    Release 模式下的 signed.apk 文件使用调试密钥库,因此无法发布,更多信息 here

    对我来说是一个非常愚蠢的错过,所以如果其他人也有这个问题,请确保在深入调试之前选择正确的 apk 文件。

    【讨论】:

    • 这也是我的问题。非常感谢!
    【解决方案3】:

    在您的 pastebin 日志中,您似乎有一个特定的错误。这里似乎没有加载libmonodroid.so

    03-25 00:40:18.531 E/AndroidRuntime( 1407): java.lang.UnsatisfiedLinkError: 
    Couldn't load monodroid from loader 
    dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/App1.App1- 
    1.apk"],nativeLibraryDirectories=[/data/app-lib/App1.App1-1, /system/lib]]]: 
    findLibrary returned null
    

    此问题通常意味着由于某种原因未安装 libmonodroid.so。

    我会推荐以下项目:

    1. 使用adb uninstall <package name> 完全删除所有旧的App1.App1 应用程序。
    2. 清理/重建您的项目(同时确保手动删除解决方案中的bin/obj 文件夹。

    如果这仍然是一个问题。确保 File->New Android Project 将调试并正确安装为 Release .apk。遵循步骤 #1-2 后,您还应该收集 adb logcat 的尝试。

    【讨论】:

      【解决方案4】:

      我找到了一个可能的解决方案。 在您的设备上,在开发者选项菜单中,您必须启用“强制 gpu 渲染”。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多