所以我刚刚遇到这个错误,这导致我的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很陌生,所以我一无所知。有人可以告诉我我在这里做错了什么吗?
答案 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();