为什么不能MonoDroidfind我的程序集?

我使用Xamarin Studio 4.2.3制作了一个简单的Android HelloWorld应用程序,除了打印出一些随机数大于0.5的信息之外,什么都不做。 它适用于Nexus 4和Nexus 5。

我正在做的下一件事是使用7Zip从应用程序的apk(从程序集文件夹)中提取代码.dll。 使用.Net Reflector和Reflexil我正在修改一条指令,通常是由IF语句在“if(rand.nextDouble()> 0.5){doStuff()}”中生成的brfalse.s,以便分支到指令在doStuff()的调用之前,从而有效地使IF语句无用,并确保方法总是被调用。

接下来,我保存修补的.dll文件,replace.apk文件中的原始文件,修补后的文件,签名和zipalign .apk,最后我使用adb安装它。

当我在手机上启动应用程序时,它直接崩溃,LogCat显示如下:

03-20 10:12:08.709: I/ActivityManager(764): Start proc HelloMonoLVL.HelloMonoLVL for activity HelloMonoLVL.HelloMonoLVL/hellomonolvl.hellomonolvl.TrialSplashScreen: pid=23099 uid=10128 gids={50128} 03-20 10:12:08.729: D/dalvikvm(23099): Trying to load lib /data/app-lib/HelloMonoLVL.HelloMonoLVL-1/libmonodroid.so 0x427154a0 03-20 10:12:08.729: D/dalvikvm(23099): Added shared lib /data/app-lib/HelloMonoLVL.HelloMonoLVL-1/libmonodroid.so 0x427154a0 03-20 10:12:08.739: W/libc(23099): WARNING: generic atexit() called from legacy shared library 03-20 10:12:08.759: W/monodroid-gc(23099): GREF GC Threshold: 46800 03-20 10:12:08.769: A/monodroid-assembly(23099): Coult not load assembly 'HelloMonoLVL' during startup registration. 03-20 10:12:08.769: A/monodroid-assembly(23099): This might be due to an invalid debug instalation. 03-20 10:12:08.769: A/monodroid-assembly(23099): A common cause is to 'adb install' the app directly instead of doing from the IDE. 03-20 10:12:08.789: I/ActivityManager(764): Process HelloMonoLVL.HelloMonoLVL (pid 23099) has died. 03-20 10:12:08.789: W/ActivityManager(764): Force removing ActivityRecord{42752a50 u0 HelloMonoLVL.HelloMonoLVL/hellomonolvl.hellomonolvl.TrialSplashScreen t238}: app died, no saved state 

由于这不起作用,我使用了LVL的C#端口。 构buildLVL示例应用程序,部署并在手机上工作。 我再次提取与许可证validation码的.dll,使用Reflexil我改变了一个方法的代码,在apk中注入修补的.dll,签名和zipaligned的apk。 再次,它不起作用,但发射崩溃,我现在得到:

 03-20 10:21:19.049: D/dalvikvm(23507): Trying to load lib /data/app-lib/de.marius.lvl-1/libmonodroid.so 0x42711448 03-20 10:21:19.049: D/dalvikvm(23507): Added shared lib /data/app-lib/de.marius.lvl-1/libmonodroid.so 0x42711448 03-20 10:21:19.069: A/MonoDroid(23507): No assemblies found in '/data/data/de.marius.lvl/files/.__override__' or '/storage/emulated/0/Android/data/de.marius.lvl/files/.__override__'. Assuming this is part of Fast Deployment. Exiting... 03-20 10:21:19.079: I/ActivityManager(764): Process de.marius.lvl (pid 23507) has died. 03-20 10:21:19.079: W/ActivityManager(764): Force removing ActivityRecord{42bc3c60 u0 de.marius.lvl/.TrialSplashScreen t239}: app died, no saved state 

如果我使用Xamarin在发布模式或debugging模式下生成的apk,似乎没有任何区别。 我尝试使用项目的bin文件夹中的apk版本,以及从adb pull中从手机中拉出的版本。

我是Xamarin新手,所以也许我的做法是天真的。 有没有像检查我修补的.dll不通过? 我看到Reflexil有删除StrongNames的选项,我试过,但似乎没有任何区别(但我必须承认我真的不知道这些工作是如何的)。

我试图做甚么可能? 任何帮助非常感谢。

Solutions Collecting From Web of "为什么不能MonoDroidfind我的程序集?"