Xamarin.android Xamarin Android:Java.Lang.ClassNotFoundException启动第二个活动

Xamarin.android Xamarin Android:Java.Lang.ClassNotFoundException启动第二个活动,xamarin.android,visual-studio-2017,Xamarin.android,Visual Studio 2017,我刚刚开始使用Xamarin和VisualStudio2017在C#中开发Android。与Windows生态系统完全不同的范例。。Target是一款商业应用程序,它会有特定的受众,但在我深入了解它之前,我只是想学习诀窍,理解概念和程序 因此,我从最简单的应用程序开始,使用空白模板。这将导致创建一个项目,其中包含一个活动(MainActivity.cs)、两个资源(resources\layout\Main.axml、Res..\values\Strings.xml)和一些其他项(例如Prope

我刚刚开始使用Xamarin和VisualStudio2017在C#中开发Android。与Windows生态系统完全不同的范例。。Target是一款商业应用程序,它会有特定的受众,但在我深入了解它之前,我只是想学习诀窍,理解概念和程序

因此,我从最简单的应用程序开始,使用空白模板。这将导致创建一个项目,其中包含一个活动(MainActivity.cs)、两个资源(resources\layout\Main.axml、Res..\values\Strings.xml)和一些其他项(例如Properties\AndroidManifest.xml、GettingStarted.Xamarin等)

我在附带的
BLU vivo5 Mini(Android 6.0-API 23)
上编译并运行它。到目前为止还不错

接下来是我第一次尝试玩任何东西。。结果出人意料地糟糕

1。重命名MainActivity会导致:

未处理的异常:
Java.Lang.RuntimeException:无法实例化活动组件信息{App4.App4/md54bce54f405542800672a5cecd6c84592.MainActivity}:Java.Lang.ClassNotFoundException:在路径为[zip file”/data/app/App4.App4-1/base.apk]的NativeLibrary目录中未找到类“md54bce54f405542800672a5cecd6c84592.MainActivity”=[/data/app/App4.App4-1/lib/arm,/data/app/App4.App4-1/base.apk!/lib/armeabi-v7a,/vendor/lib,/system/lib]

名称
MainActivity
是否是某种预定义的入口点,类似于C/C++的
main()

我没有看到任何关于这个的参考。但是如果不标记主/启动活动,
[Activity(MainLauncher=true)]
属性有什么意义呢?
好的,现在我重新命名它。重新编译,运行..好的

2.删除
GettingStarted.Xamarin
文件(“因为它只是一个链接列表,存在于每个项目中”)似乎会导致相同的问题!?这只是一个HTML页面,那么会产生什么呢

好的,我不会再碰这个文件了。关闭解决方案,重新创建项目,运行..好的

3.将Properties\AssemblyInfo.cs修改为:
[assembly:AssemblyVersion(“1.0.*”)]
(以匹配其他项目的生成版本编号架构)会导致相同的问题!。
(令人惊讶的是,修改
AssemblyFileVersion
并没有什么不良影响-它可以运行;也许安卓端会因为使用
*
-通配符的结果而生气?但为什么呢?)

好吧,我将放弃所有最好的努力来保持源代码的组织性和可维护性。
关闭解决方案,重新创建项目,运行..确定

4.重命名
Main
布局(到
ActMain
或甚至
MainActivity
-以匹配活动名称)会导致另一个类似的启动异常

“傻瓜!”,我说,然后回复。重新编译,运行..好的。我现在应该学习了,对吗

让我吃惊的是代码总是编译的,所有这些问题都会在运行时出现!?!?

好吧,我放弃,我不会修改Xamarin或VS预先生成的任何内容。为了让实验更加清晰,我重新启动VS,删除所有以前的项目并创建一个新项目-让我们从一个空白模板重新开始

5.进入应用程序的入口点是登录“页面”,因此我在
Main.axml
中添加了一些
TextView
EditText
按钮
控件: 按钮还没有做任何事情-代码是空的。编译,运行..到目前为止还不错。可爱

现在,我添加了一个新的活动,并给它命名为
ActSettings
。是的,我喜欢匈牙利符号,如果你愿意的话,我讨厌我,但这有助于我保持对象的有序性。但除此之外,我现在应该可以自由地为一个新类命名任何我想要的名称,不是吗

接下来,我创建一个相应的布局,并[显然]将其命名为
ActSettings

编译,运行..好的

还没有将活动链接在一起的代码-让我们补充一下:

6.以下是解决方案和MainActivity.cs代码以及添加的操作: 我听到Doug Marcaida说:“它会编译。但是它会运行吗?”

7.不,这是我得到的(.NET非常了解
ActSettings
class,但不了解Java!?):

02-02 13:47:11.686 W/monodroid(5867):JNIEnv.FindClass(Type)捕获到意外异常:Java.Lang.ClassNotFoundException:md54e704423a01db64492900da8de435cc0.ActSettings->Java.Lang.ClassNotFoundException:在路径DexPathList[[zip文件]上未找到类“md54e704423a01db64492900da8de435cc0.ActSettings”“/data/app/J7980ca.J7980ca-1/base.apk”],NativeLibraryDirectory=[/data/app/J7980ca.J7980ca-1/lib/arm,/data/app/J7980ca.J7980ca-1/base.apk!/lib/armeabi-v7a,/vendor/lib,/system/lib]]
02-02 13:47:11.686 W/单机器人(5867):--内部异常堆栈跟踪结束---
02-02 13:47:11.686 W/monodroid(5867):在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c]中:0
02-02 13:47:11.686 W/monodroid(5867):在Java.Interop.jnienEnvironment+StaticMethods.CallStaticObjectMethod(Java.Interop.JniObjectReference类型,Java.Interop.JniMethodInfo方法,Java.Interop.JniArgumentValue*args)[0x00069]in:0
02-02 13:47:11.686 W/monodroid(5867):在Android.Runtime.JNIEnv.CallStaticObjectMethod(System.IntPtr jclass,System.IntPtr jmethod,Android.Runtime.JValue*parms)[0x0000e]中:0
02-02 13:47:11.686 W/monodroid(5867):在Android.Runtime.JNIEnv.CallStaticObjectMethod(System.IntPtr jclass,System.IntPtr jmethod,Android.Runtime.JValue[]parms)[0x00017]in:0
02-02 13:47:11.686 W/monodroid(5867):在Android.Runtime.JNIEnv.FindClass(System.String classname)[0x0003d]中:0
02-02 13:47:11.686 W/monodroid(5867):在Android.Runtime.JNIEnv.FindClass(System.Type类型)[0x00015]中:0
02-02 13:47:11.686
02-02 13:47:11.686 W/monodroid( 5867): JNIEnv.FindClass(Type) caught unexpected exception: Java.Lang.ClassNotFoundException: md54e704423a01db64492900da8de435cc0.ActSettings ---> Java.Lang.ClassNotFoundException: Didn't find class "md54e704423a01db64492900da8de435cc0.ActSettings" on path: DexPathList[[zip file "/data/app/J7980ca.J7980ca-1/base.apk"],nativeLibraryDirectories=[/data/app/J7980ca.J7980ca-1/lib/arm, /data/app/J7980ca.J7980ca-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
02-02 13:47:11.686 W/monodroid( 5867):    --- End of inner exception stack trace ---
02-02 13:47:11.686 W/monodroid( 5867):   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 
02-02 13:47:11.686 W/monodroid( 5867):   at Java.Interop.JniEnvironment+StaticMethods.CallStaticObjectMethod (Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <e736913786c2475188869561ae512b72>:0 
02-02 13:47:11.686 W/monodroid( 5867):   at Android.Runtime.JNIEnv.CallStaticObjectMethod (System.IntPtr jclass, System.IntPtr jmethod, Android.Runtime.JValue* parms) [0x0000e] in <0fb41b3e3d7346ce92c4a742b20078ff>:0 
02-02 13:47:11.686 W/monodroid( 5867):   at Android.Runtime.JNIEnv.CallStaticObjectMethod (System.IntPtr jclass, System.IntPtr jmethod, Android.Runtime.JValue[] parms) [0x00017] in <0fb41b3e3d7346ce92c4a742b20078ff>:0 
02-02 13:47:11.686 W/monodroid( 5867):   at Android.Runtime.JNIEnv.FindClass (System.String classname) [0x0003d] in <0fb41b3e3d7346ce92c4a742b20078ff>:0 
02-02 13:47:11.686 W/monodroid( 5867):   at Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00015] in <0fb41b3e3d7346ce92c4a742b20078ff>:0 
02-02 13:47:11.686 W/monodroid( 5867):   --- End of managed Java.Lang.ClassNotFoundException stack trace ---
02-02 13:47:11.686 W/monodroid( 5867): java.lang.ClassNotFoundException: md54e704423a01db64492900da8de435cc0.ActSettings
02-02 13:47:11.686 W/monodroid( 5867):  at java.lang.Class.classForName(Native Method)
02-02 13:47:11.687 W/monodroid( 5867):  at java.lang.Class.forName(Class.java:324)
02-02 13:47:11.687 W/monodroid( 5867):  at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method)
02-02 13:47:11.687 W/monodroid( 5867):  at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30)
02-02 13:47:11.687 W/monodroid( 5867):  at android.view.View.performClick(View.java:5265)
02-02 13:47:11.687 W/monodroid( 5867):  at android.view.View$PerformClick.run(View.java:21534)
02-02 13:47:11.687 W/monodroid( 5867):  at android.os.Handler.handleCallback(Handler.java:815)
02-02 13:47:11.687 W/monodroid( 5867):  at android.os.Handler.dispatchMessage(Handler.java:104)
02-02 13:47:11.687 W/monodroid( 5867):  at android.os.Looper.loop(Looper.java:207)
02-02 13:47:11.687 W/monodroid( 5867):  at android.app.ActivityThread.main(ActivityThread.java:5765)
02-02 13:47:11.687 W/monodroid( 5867):  at java.lang.reflect.Method.invoke(Native Method)
02-02 13:47:11.687 W/monodroid( 5867):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
02-02 13:47:11.687 W/monodroid( 5867):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
02-02 13:47:11.687 W/monodroid( 5867): Caused by: java.lang.ClassNotFoundException: Didn't find class "md54e704423a01db64492900da8de435cc0.ActSettings" on path: DexPathList[[zip file "/data/app/J7980ca.J7980ca-1/base.apk"],nativeLibraryDirectories=[/data/app/J7980ca.J7980ca-1/lib/arm, /data/app/J7980ca.J7980ca-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
02-02 13:47:11.687 W/monodroid( 5867):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
02-02 13:47:11.687 W/monodroid( 5867):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
02-02 13:47:11.687 W/monodroid( 5867):  at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
02-02 13:47:11.688 W/monodroid( 5867):  ... 13 more
02-02 13:47:11.688 W/monodroid( 5867):  Suppressed: java.lang.ClassNotFoundException: md54e704423a01db64492900da8de435cc0.ActSettings
02-02 13:47:11.688 W/monodroid( 5867):      at java.lang.Class.classForName(Native Method)
02-02 13:47:11.688 W/monodroid( 5867):      at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
02-02 13:47:11.688 W/monodroid( 5867):      at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
02-02 13:47:11.688 W/monodroid( 5867):      at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
02-02 13:47:11.688 W/monodroid( 5867):      ... 14 more
02-02 13:47:11.688 W/monodroid( 5867):  Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

Unhandled Exception:
Java.Lang.ClassNotFoundException: md54e704423a01db64492900da8de435cc0.ActSettings occurred