Xamarin.Forms"应用程序已停止工作"在android上

时间:2016-03-01 15:03:25

标签: c# android xamarin

所以我刚刚遇到这个错误,这导致我的android应用程序无法在设备上运行。每当我为Android调试我的应用程序时,它会崩溃以获得一些权利。 。作为Xamarin的新用户,我一无所知。

这是我得到的错误:

[art] Late-enabling -Xcheck:jni
[ContextImpl] Unable to create files subdir /data/data/com.comhuis.saleskicker.sales_kicker/cache
[ContextImpl] Unable to create files subdir /data/data/com.comhuis.saleskicker.sales_kicker/files
[AndroidRuntime] Shutting down VM
[AndroidRuntime] FATAL EXCEPTION: main
[AndroidRuntime] Process: com.comhuis.saleskicker.sales_kicker, PID: 5035
[AndroidRuntime] java.lang.RuntimeException: Unable to get provider mono.MonoRuntimeProvider: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
[AndroidRuntime]    at android.app.ActivityThread.installProvider(ActivityThread.java:5015)
[AndroidRuntime]    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4607)
[AndroidRuntime]    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4547)
[AndroidRuntime]    at android.app.ActivityThread.access$1500(ActivityThread.java:148)
[AndroidRuntime]    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
[AndroidRuntime]    at android.os.Handler.dispatchMessage(Handler.java:102)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:135)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:5272)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Native Method)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Method.java:372)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
[AndroidRuntime] Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
[AndroidRuntime]    at mono.MonoPackageManager.LoadApplication(MonoPackageManager.java:27)
[AndroidRuntime]    at mono.MonoRuntimeProvider.attachInfo(MonoRuntimeProvider.java:42)
[AndroidRuntime]    at android.app.ActivityThread.installProvider(ActivityThread.java:5012)
[AndroidRuntime]    ... 11 more
[Process] Sending signal. PID: 5035 SIG: 9

我的项目确实没有什么特别之处。我暂时无法上传我的解决方案的屏幕截图,但我会尝试描述它:

我的解决方案存在于 SalesKicker SalesKicker.Droid 之外。 SalesKicker 有3个文件 MainPage.Xaml MainPage.Xaml.cs SalesKicker.cs 。 和 SalesKicker.Droid 包含通常的东西加上1个名为delogo.png的图像,我用它作为appicon。这是我的MainActivity.cs代码:

namespace SalesKicker.Droid
{
    [Activity (Label = @"Sales Kicker", Icon = "@drawable/delogo", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity :     global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
    protected override void OnCreate (Bundle bundle)
    {
        Xamarin.Insights.Initialize (global::SalesKicker.Droid.XamarinInsights.ApiKey, this);
        base.OnCreate (bundle);
        global::Xamarin.Forms.Forms.Init (this, bundle);
        LoadApplication (new App ());
    }
}

我也试图设置一些断点。我已经在每一行都尝试了它,并且仍然一遍又一遍地得到同样的错误。我也尝试设置我的目标版本"到Lollipop 5.0,这是我LG G3上的当前软件版本,它没有任何影响。我也安装了每一个Android SDK。因为我对Xamarin很陌生,所以我一无所知。有人可以告诉我我在这里做错了什么吗?

2 个答案:

答案 0 :(得分:2)

我在看了另一个帖子后得到了它:Why does my Xamarin Android application suddenly require external storage permissions?

我只需要转到:AndroidManifest.xml并设置'安装位置'到 internalOnly 。这对我有用。

答案 1 :(得分:0)

如果可以,请在Android设备上创建此文件夹。

/data/data/{your.apps.package.name}

否则,请卸载您的应用,然后重新安装。

您可能会注意到“File.getAbsolutePath()”会引发异常。

在反编译我的应用的.apk包后,我发现这是由getFilesDir()返回null引起的。

// MonoPackageManager.java
String str1 = context.getFilesDir().getAbsolutePath();  // <- Exception
String str2 = context.getCacheDir().getAbsolutePath();