¿Por qué MonoDroid no puede encontrar mis ensamblajes?
Hice una sencilla aplicación Android HelloWorld usando Xamarin Studio 4.2.3 que no hace nada excepto que imprime algún mensaje si un número aleatorio es mayor que 0.5. Funciona muy bien en un Nexus 4 y un Nexus 5.
Lo siguiente que hago es extraer el .dll con el código del apk de la aplicación (de la carpeta de ensamblajes) usando 7Zip. Uso de .Net Reflector y Reflexil Estoy modificando una sola instrucción, generalmente el brfalse.s que se genera por la instrucción IF en "if (rand.nextDouble ()> 0.5) {doStuff ()}" tal que se ramifica a la Instrucción justo delante de la llamada a doStuff (), haciendo efectivamente la instrucción IF inútil y asegurando que el método siempre se llama.
- Formularios de Xamarin Android Aplicación no obtener DeviceToken Parse SDK
- Xamarin Android con multidex - error en modo de depuración
- Es libre de monocrómenos?
- El lanzamiento de la aplicación se está estrellando en el lanzamiento de la aplicación con Android 5.1.1 lollipop después de la actualización de xamarin en Visual Studio
- Mono para Android: qué marcos de pruebas funcionan
A continuación, estoy guardando el .dll parcheado, reemplazando el original en el .apk con el parcheado, firmo y zipalign el .apk y finalmente lo estoy instalando usando adb.
Cuando estoy lanzando la aplicación en mis teléfonos se bloquea directamente y LogCat muestra lo siguiente:
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
Dado que esto no funcionó, usé el puerto C # de la LVL. Construido la aplicación de ejemplo de LVL, desplegado y funciona en los teléfonos. Volví a extraer el .dll con el código de verificación de la licencia, usando Reflexil cambié el código de un método, inyecté el .dll parcheado en el apk, firmado y zipaligned el apk. Una vez más no funciona, pero se bloquea en el lanzamiento y ahora obtener:
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
No parece hacer ninguna diferencia si estoy usando el apk que genera Xamarin en el modo de lanzamiento o modo de depuración. Intenté ambos usando las versiones del apk de la carpeta del compartimiento del proyecto y los que tiré del teléfono con el tirón del adb.
Soy nuevo en Xamarin así que tal vez mi enfoque es ingenuo. ¿Hay algo como un cheque hash que mi patched .dlls no pasa? Vi que Reflexil tiene una opción para eliminar StrongNames, lo intenté pero no parecía hacer ninguna diferencia (pero debo admitir que no sé cómo funcionan).
¿Es posible lo que estoy tratando de hacer? Cualquier ayuda es mucho apreciar.
- Cómo pasar el parámetro al método java desde c # en JNI
- No se puede usar el diseño de ScrollView dentro de SlidingUpPanelLayout Xamarin Android
- ¿Cómo generar Xamarin vinculante para AAR con muchas dependencias?
- Agregando $ ANDROID_HOME / tools a $ Path en ventanas
- Enlace Xamarin.Android definiendo Getter / Setter Métodos usando EnumMethods.xml para la interfaz
- F # en Mono para Android
- MonoDroid: Error al llamar al constructor de la vista personalizada - TwoDScrollView
- Mono.Data.Sqlite.SqliteConnection.SetConfig lanza una biblioteca utilizada incorrectamente excepción
Desinstale todos los paquetes instalados en su proyecto, incluidas las bibliotecas de soporte de Android, como las bibliotecas de soporte de Android.Support.v4 y limpie la solución.
A continuación, vuelva a instalar todos los paquetes necesarios y admita bibliotecas y reconstruya su solución. Puede ayudarle a resolver su consulta.
- Cómo utilizar Data Binding y Kotlin en Android Studio 3.0.0
- ¿Es posible obtener el perfil seleccionado actualmente del teléfono?