【问题标题】:Xamarin.Android using MvvmCross crashes on Activity launch使用 MvvmCross 的 Xamarin.Android 在 Activity 启动时崩溃
【发布时间】:2016-01-13 10:43:42
【问题描述】:

我目前正在开发 Xamarin 应用程序,突然间我的 Android 应用程序开始在 LoginActivity 上崩溃。我研究了很多关于“

Java.Lang.ClassNotFoundException: 找不到类 路径上的“android.support.v7.appcompat.R$styleable”

" 尝试了更新 Android SDK、删除 bin 和 obj 文件夹等操作。查看 stacktrace 似乎是 MvvmCross 的问题。目前我正在使用 3.5.1 的 MvvmCross。

另一个事实是,我是团队中唯一面临这个问题的人。

[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Java.Lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable; ---> Java.Lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$styleable" on path: DexPathList[[zip file "/data/app/org.cancer.fundraising-1/base.apk"],nativeLibraryDirectories=[/data/app/org.cancer.fundraising-1/lib/x86, /vendor/lib, /system/lib]]
[MonoDroid]   --- End of managed exception stack trace ---
[MonoDroid] java.lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$styleable" on path: DexPathList[[zip file "/data/app/org.cancer.fundraising-1/base.apk"],nativeLibraryDirectories=[/data/app/org.cancer.fundraising-1/lib/x86, /vendor/lib, /system/lib]]
[MonoDroid]     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
[MonoDroid]     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
[MonoDroid]     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
[MonoDroid]     at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:118)
[MonoDroid]     at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146)
[MonoDroid]     at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59)
[MonoDroid]     at md5da1044ae077a2d5a79e87e5c6bedf113.LoginActivity.n_onCreate(Native Method)
[MonoDroid]     at md5da1044ae077a2d5a79e87e5c6bedf113.LoginActivity.onCreate(LoginActivity.java:31)
[MonoDroid]     at android.app.Activity.performCreate(Activity.java:5990)
[MonoDroid]     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
[MonoDroid]     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
[MonoDroid]     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
[MonoDroid]     at android.app.ActivityThread.access$800(ActivityThread.java:151)
[MonoDroid]     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
[MonoDroid]     at android.os.Handler.dispatchMessage(Handler.java:102)
[MonoDroid]     at android.os.Looper.loop(Looper.java:135)
[MonoDroid]     at android.app.ActivityThread.main(ActivityThread.java:5254)
[MonoDroid]     at java.lang.reflect.Method.invoke(Native Method)
[MonoDroid]     at java.lang.reflect.Method.invoke(Method.java:372)
[MonoDroid]     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
[MonoDroid]     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
[MonoDroid]     Suppressed: java.lang.ClassNotFoundException: android.support.v7.appcompat.R$styleable
[MonoDroid]         at java.lang.Class.classForName(Native Method)
[MonoDroid]         at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
[MonoDroid]         at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
[MonoDroid]         at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
[MonoDroid]         ... 19 more
[MonoDroid]     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
[MonoDroid]   --- End of inner exception stack trace ---
[MonoDroid]   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0xa047bf80 + 0x0002b> in <filename unknown>:0 
[MonoDroid]   at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (IntPtr jobject, IntPtr jclass, IntPtr jmethod, Android.Runtime.JValue* parms) <0xa2007008 + 0x000b3> in <filename unknown>:0 
[MonoDroid]   at Android.App.Activity.OnCreate (Android.OS.Bundle savedInstanceState) <0xa1018918 + 0x0014f> in <filename unknown>:0 
[MonoDroid]   at ACS.FundRaising.Android.MvxActionBarEventSourceActivity.OnCreate (Android.OS.Bundle bundle) <0xa047b4e0 + 0x00037> in <filename unknown>:0 
[MonoDroid]   at ACS.FundRaising.Android.LoginActivity.OnCreate (Android.OS.Bundle bundle) <0xa047b278 + 0x0001b> in <filename unknown>:0 
[MonoDroid]   at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState) <0xa116f9b0 + 0x00057> in <filename unknown>:0 
[MonoDroid]   at (wrapper dynamic-method) System.Object:dd5e6f9d-f207-497c-b5c3-0a2c9dac76e7 (intptr,intptr,intptr)
[MonoDroid]   --- End of managed exception stack trace ---
[MonoDroid] java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable;
[MonoDroid]     at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:118)
[MonoDroid]     at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146)
[MonoDroid]     at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59)
[MonoDroid]     at md5da1044ae077a2d5a79e87e5c6bedf113.LoginActivity.n_onCreate(Native Method)
[MonoDroid]     at md5da1044ae077a2d5a79e87e5c6bedf113.LoginActivity.onCreate(LoginActivity.java:31)
[MonoDroid]     at android.app.Activity.performCreate(Activity.java:5990)
[MonoDroid]     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
[MonoDroid]     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
[MonoDroid]     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
[MonoDroid]     at android.app.ActivityThread.access$800(ActivityThread.java:151)
[MonoDroid]     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
[MonoDroid]     at android.os.Handler.dispatchMessage(Handler.java:102)
[MonoDroid]     at android.os.Looper.loop(Looper.java:135)
[MonoDroid]     at android.app.ActivityThread.main(ActivityThread.java:5254)
[MonoDroid]     at java.lang.reflect.Method.invoke(Native Method)
[MonoDroid]     at java.lang.reflect.Method.invoke(Method.java:372)
[MonoDroid]     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
[MonoDroid]     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
[MonoDroid] Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$styleable" on path: DexPathList[[zip file "/data/app/org.cancer.fundraising-1/base.apk"],nativeLibraryDirectories=[/data/app/org.cancer.fundraising-1/lib/x86, /vendor/lib, /system/lib]]
[MonoDroid]     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
[MonoDroid]     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
[MonoDroid]     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
[MonoDroid]     ... 18 more
[MonoDroid]     Suppressed: java.lang.ClassNotFoundException: android.support.v7.appcompat.R$styleable
[MonoDroid]         at java.lang.Class.classForName(Native Method)
[MonoDroid]         at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
[MonoDroid]         at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
[MonoDroid]         at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
[MonoDroid]         ... 19 more
[MonoDroid]     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
[Mono] Assembly Ref addref GoogleAnalytics.Core[0xb429abe0] -> System.Net.Http[0xaed233a0]: 3
[Mono] Assembly Ref addref GoogleAnalytics.Core[0xb429abe0] -> System.Core[0xb4387580]: 7
[Mono] Assembly Ref addref System.Net.Http[0xaed233a0] -> System[0xb4387760]: 10
[Mono] Assembly Ref addref System.Net.Http[0xaed233a0] -> System.Core[0xb4387580]: 8
[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable; ---> Java.Lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$styleable" on path: DexPathList[[zip file "/data/app/org.cancer.fundraising-1/base.apk"],nativeLibraryDirectories=[/data/app/org.cancer.fundraising-1/lib/x86, /vendor/lib, /system/lib]]
[mono-rt] 
[mono-rt]   --- End of managed exception stack trace ---
[mono-rt] java.lang.ClassNotFoundException: Didn't find class "android.support.v7.appcompat.R$styleable" on path: DexPathList[[zip file "/data/app/org.cancer.fundraising-1/base.apk"],nativeLibraryDirectories=[/data/app/org.cancer.fundraising-1/lib/x86, /vendor/lib, /system/lib]]
[mono-rt]   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
[mono-rt]   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
[mono-rt]   at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
[mono-rt]   at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:118)
[mono-rt]   at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146)
[mono-rt]   at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59)
[mono-rt]   at md5da1044ae077a2d5a79e87e5c6bedf113.LoginActivity.n_onCreate(Native Method)
[mono-rt]   at md5da1044ae077a2d5a79e87e5c6bedf113.LoginActivity.onCreate(LoginActivity.java:31)
[mono-rt]   at android.app.Activity.performCreate(Activity.java:5990)
[mono-rt]   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
[mono-rt]   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
[mono-rt]   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
[mono-rt]   at android.app.ActivityThread.access$800(ActivityThread.java:151)
[mono-rt]   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
[mono-rt]   at android.os.Handler.dispatchMessage(Handler.java:102)
[mono-rt]   at android.os.Looper.loop(Looper.java:135)
[mono-rt]   at android.app.ActivityThread.main(ActivityThread.java:5254)
[mono-rt]   at java.lang.reflect.Method.invoke(Native Method)
[mono-rt]   at java.lang.reflect.Method.invoke(Method.java:372)
[mono-rt]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
[mono-rt]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
[mono-rt]   Suppressed: java.lang.ClassNotFoundException: android.support.v7.appcompat.R$styleable
[mono-rt]       at java.lang.Class.classForName(Native Method)
[mono-rt]       at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
[mono-rt]       at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
[mono-rt]       at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
[mono-rt]       ... 19 more
[mono-rt]   Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
[mono-rt] 
[mono-rt]   --- End of inner exception stack trace ---
[mono-rt]   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0xa047bf80 + 0x0002b> in <filename unknown>:0 
[mono-rt]   at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (IntPtr jobject, IntPtr jclass, IntPtr jmethod, Android.Runtime.JValue* parms) <0xa2007008 + 0x000b3> in <filename unknown>:0 
[mono-rt]   at Android.App.Activity.OnCreate (Android.OS.Bundle savedInstanceState) <0xa1018918 + 0x0014f> in <filename unknown>:0 
[mono-rt]   at ACS.FundRaising.Android.MvxActionBarEventSourceActivity.OnCreate (Android.OS.Bundle bundle) <0xa047b4e0 + 0x00037> in <filename unknown>:0 
[mono-rt]   at ACS.FundRaising.Android.LoginActivity.OnCreate (Android.OS.Bundle bundle) <0xa047b278 + 0x0001b> in <filename unknown>:0 
[mono-rt]   at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState) <0xa116f9b0 + 0x00057> in <filename unknown>:0 
[mono-rt]   at (wrapper dynamic-method) System.Object:dd5e6f9d-f207-497c-b5c3-0a2c9dac76e7 (intptr,intptr,intptr)
[mono-rt]   --- End of managed exception stack trace ---
[mono-rt] java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable;
[mono-rt]   at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:118)
[mono-rt]   at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146)
[mono-rt]   at android.support.v7.app.AppCompatActivity.onCreate(AppCompa

【问题讨论】:

  • 我已经尝试在 MvvmCross 升级到 4.0.0-beta7 还是同样的问题。
  • 您是否尝试过删除所有包,重新恢复它们。还要删除 Xamarin 为 Appcompat 下载的 java 文件的本地存储库,并清除 obj 和 bin 文件夹。

标签: xamarin xamarin.android mvvmcross


【解决方案1】:

在我的情况下,需要使用 Clean 解决方案才能使其正常工作。

【讨论】:

  • @CyprienAutexier 无需自己卸载应用程序,因为 Visual Studio 会在将应用程序部署到模拟器或手机之前为您完成。
  • 它显然不会删除所有文件。
【解决方案2】:

通过重新克隆存储库可以解决此问题。我仍然不知道是什么导致了这个问题,但我最终浪费了很多时间。我尝试过类似的东西;

  1. 删除和下载包
  2. 删除 Obj/Bin
  3. 从 android SDK 安装文件夹中删除 appcompat 并重新下载
  4. 使用组件代替包

可能构建输出产生了一些垃圾,导致此类问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    相关资源
    最近更新 更多