Xamarin Android应用程序在启动后立即关闭

时间:2016-03-24 15:28:29

标签: android xamarin

我在Visual Studio中使用Xamarin。

我创建了一个样板android应用程序(点击我),我尝试了以下内容:

情景1:

  1. 切换到发布模式

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

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

  4. 应用启动时没有问题

  5. 情景2

    1. 切换到发布模式

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

    3. 创建私钥商店后签名APK

    4. 在电话上生成.apk(在发布文件夹中)的侧面负载

    5. 应用程序在启动后立即关闭(没有错误消息,没有任何内容)

    6. 这可能是什么问题?

      签署套餐后是否还需要做其他事情?

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

      更新:

      我尝试过在Android模拟器上运行相同的东西。结果相同。该应用程序在模拟器上以调试模式运行正常。一旦我将其切换为发布,我就会得到#34;不幸的是,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
      

5 个答案:

答案 0 :(得分:4)

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

Advanced build properties

答案 1 :(得分:3)

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

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

我是一个非常愚蠢的想念,所以万一其他人也有这个问题,请确保你选择正确的apk文件,然后再深入调试。

答案 2 :(得分:1)

在您的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文件夹。
  3. 如果这仍然是一个问题。确保File-&gt; New Android Project将调试并正确安装为Release .apk。按照步骤#1-2,您还应该收集adb logcat次尝试。

答案 3 :(得分:0)

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

希望有帮助。

答案 4 :(得分:-1)

造成这种情况的另一个原因可能是模拟器 wifi 已关闭。