Actualmente estoy trabajando en un proyecto en el que tengo que usar ndk puramente nativo. Funcionó cuando intento ejecutar un ejemplo de helloworld desde la fuente del motor Irrlicht. Luego trato de usarlo en mi proyecto siguiendo el mismo formato de ese ejemplo. Pero tengo:
03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]
mientras ejecuto mi proyecto.
Aquí está mi archivo main.cpp:
#include <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}
#terminara si
en Android.mk:
LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json
LOCAL_SRC_FILES := android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
Y he dado el nombre de la actividad en AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.irrlicht.example1"
android:versionCode="1"
android:versionName="1.0">
...
<application android:icon="@drawable/irr_icon" android:label="HelloWorldMobile1" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="true">
<activity android:name="android.app.POMActivity"
android:label="HelloWorldMobile1"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:clearTaskOnLaunch="true">
<meta-data android:name="android.app.lib_name" android:value="HelloWorldMobile1" />
¿Cuál es el error que estoy haciendo aquí? Publicaré el código completo si es necesario.
java
android
c++
android-ndk
Karthik Sivam
fuente
fuente
Respuestas:
Intenté todas las opciones posibles pero el resultado es cero. Finalmente encontré la solución correcta que es útil para mí. Simplemente deshabilite la Ejecución instantánea Vaya a Archivo -> Configuración -> Compilación, Ejecución, Implementación -> Ejecución instantánea -> Desmarque la casilla de verificación para la ejecución instantánea . Ejecute su aplicación una vez y este archivo apk funciona correctamente.
fuente
Tuve un problema similar, aquí está mi solución:
También puede verificar esta respuesta.
fuente
Esto parece ser un problema en su caso. La ruta relativa de su actividad en manifiesto no es correcta:
reemplace esto con:
o
fuente
La eliminación de la aplicación en el dispositivo y la limpieza del proyecto me funcionan
fuente
react-native run-android
Debería entender el problema con solo ver
Pero tardó medio día en solucionar el problema.
Arreglo esto siguiendo las instrucciones de la página de desarrolladores de Android: https://developer.android.com/studio/build/multidex.html
Primero agregue esto al archivo gradle.build:
Luego, extienda la clase de aplicación con la
MultiDexApplication
clase como se indica en el enlace anterior (o declare la clase de aplicaciónAndroidManifest.xml
o anule laattachBaseContext()
función si no es posible extender la clase de aplicación).Eso es todo y resolvió el problema.
fuente
Simplemente pruebe Clean Project & Rebuild Project .
fuente
Esta excepción también puede ocurrir cuando tiene una vista personalizada en su diseño como esta:
y cambia el nombre del paquete de la vista de "com.example" a algo diferente, pero también olvida cambiarlo en el diseño.
fuente
Si el proyecto se estaba compilando justo antes, puede intentar borrar el caché usando:
./gradlew clean
o
./gradlew cleanBuildCache
o para ventanas
gradlew cleanBuildCache
https://developer.android.com/studio/build/build-cache.html
fuente
Lo resolví usando:
./gradlew --stop
comando en la terminal de Android Studio. Después de ejecutar este comando, limpie y reconstruya el proyecto.fuente
trabajó para mi.
fuente
Para cualquiera que tenga habilitado multidex, escriba esto
dentro de build.gradle
escribe una clase
EnableMultiDex
como abajoy en
AndroidManifest.xml
escribir este className dentro de la etiqueta Aplicaciónfuente
enableMultiDex
afecta? En mi casojavaMaxHeapSize "4g"
no ayudó.MultiDexApplication
. Es necesario si desea utilizar multidexMultiDexApplication
oattachBaseContext
(vea developer.android.com/studio/build/multidex ).Enfrenté este problema varias veces y todos se resolvieron deshabilitando la ejecución instantánea .
fuente
No necesitamos tener una clase de aplicación personalizada que extienda MultiDexApplication . En cambio, podemos tener esto en AndroidManifest.xml
Y junto con esto en build.gradle (Módulo: aplicación),
Gracias.
fuente
Cuando esté usando multidex, intente extender su clase de aplicación con MultiDexAppication en lugar de Application y anule el siguiente método que se requiere para Android por debajo de 5.0 (porque 5.0 y superior admite el multidex)
y en dependencias agregue esto
fuente
Application
. ¿Por qué deberíamos anular en un caso deMultiDexAppication
?Simplemente cambie el nombre de su carpeta de
lib
alibs
,Luego verá algunas marcas de error en su proyecto, para resolver este derecho Haga clic en proyecto>
Properties > Java Build Path > libraries
:Elimine toda la biblioteca con marcas rojas y
apply > ok >
luego limpie su proyecto . TADA ve la magia :)fuente
En mi caso, este problema surgió debido a Kotlin. En mi código existente había una clase escrita en Kotlin. Construí la aplicación, se instaló y tan pronto como se abrió la primera actividad, la aplicación se bloqueó. en el logcat se mostraba este error. Luego actualicé mi versión de Kotlin del sitio web de Kotlin en el archivo gradle de la aplicación. Construya la aplicación nuevamente y funcionó bien entonces.
fuente
Una posible razón sería la ruta incorrecta de la actividad en el archivo Apps AndroidManifest.xml. Registre la actividad en su AndroidManifest.xml con la ruta relativa completa como se muestra a continuación.
fuente
Después de probar las respuestas dadas, descubrí otra razón para la misma excepción, que tuve que agregar la biblioteca que estoy usando manualmente a mi biblioteca principal a través de
antes de esta solución, utilicé la "Configuración del proyecto Fix" desde el archivo .java en eclipse, pero esto no funcionó, así que tuve que agregarlo manualmente aquí y funcionó
fuente
Estaba recibiendo este bloqueo solo en dispositivos Samsung Lollipop y esta solución funcionó para mí.
Estoy publicando esta respuesta aquí porque esta pregunta es actualmente el resultado de búsqueda mejor clasificado en Google para este bloqueo y ninguna de las respuestas anteriores funcionó para mí.
fuente
La siguiente solución funcionó para mí ...
Intenté todo lo mencionado anteriormente pero aún no pude ejecutar mi aplicación. Tengo una aplicación nativa que se ejecuta en la última versión de gradle 4+ y android studio.
Tuve el problema donde si ejecuto react-native run-android estaba fallando con el problema que decía que no podía encontrar la clase MainApplication ... es decir, ClassNotFoundException
Pude resolver el problema cuando actualicé mi gradle.properties para usar el compilador D8.
Yo añadí:
android.enableD8 = true
a mi gradle.properties
Detalles del documento aquí: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
fuente
La respuesta de Ashik abbas (deshabilitar Instant Run ) funciona para mí, pero necesito Instant Run , finalmente encontré una solución que me fue útil. solo deshabilita minifyEnabled . vaya a build.gradle (Módulo: aplicación) en el bloque de depuración y desactive minifyEnabled :
fuente
Según tengo entendido, recibo el problema después de actualizar Android Studio 2.1 a 2.3 debido a la función instantánea que mi aplicación no se ejecutará cuando copie el apk de la salida y lo coloque en la tarjeta SD. Para este problema, construyo el apk desde la opción de compilación do build apk en el estudio de Android.
fuente
Si está habilitado
minifyEnabled
yshrinkResources
verdadero en el archivo gradle de su aplicación. Necesita agregar la siguiente línea en elproguard-rules.pro
archivoporque la minificación se elimina algunas clases importantes en nuestro archivo apk.
fuente
Tuve este problema antes y los comentarios aquí ayudaron en el pasado, pero esta vez no. he comprobado la configuración de mi Proguard y me quité las siguientes líneas y luego se trabajó de manera Proguard puede tener algo que ver con este error:
fuente
En mi caso, utilicé la antigua biblioteca de espacio de nombres mientras mi proyecto se configuraba utilizando androidx one.
La solución fue la de sustituir
android.support.design.widget.BottomNavigationView
componentes con el más adecuado para escapar de la biblioteca de soporte:com.google.android.material.bottomnavigation.BottomNavigationView
.fuente
en mi caso, defino la Actividad en
Manifest.xml
y olvidé crear algunaactivity
. ¡Así que creé Activity y lo definímanifest
y mi error se resolvió!fuente
Si recibe este error después de eliminar alguna dependencia de Gradle, verifique su manifiesto y asegúrese de haber eliminado todas las entradas correspondientes a esa dependencia.
fuente
Para mí, el problema apareció después de crear un APK firmado. Para solucionarlo, generé un nuevo apk de depuración usando Run / Build APK. Después de eso, Run (cmd + r) funciona nuevamente sin este error.
fuente
Estaba enfrentando el mismo problema. Intenté todo lo posible por un día, pero nada funcionó. La dependencia que estaba causando el problema era usar sdk de compilación inferior, sdk de destino y sdk min. Creé un módulo de biblioteca para el proyecto, copié todas las fuentes y comparé las versiones de SDK con las versiones de SDK de la aplicación. Y finalmente funcionó a las mil maravillas.
fuente
Tuve el mismo error y algunas respuestas me confunden en un tema de novato. Tenía el paquete incorrecto en mi descriptor de vista personalizada como a continuación. Espero que ayude a alguien.
fuente