Je travaille actuellement sur un projet dans lequel je dois utiliser ndk purement natif. Cela a fonctionné lorsque j'ai essayé d'exécuter un exemple helloworld à partir de la source du moteur Irrlicht. Ensuite, j'essaye de l'utiliser dans mon projet en suivant le même format de cet exemple. Mais j'ai:
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]]
lors de l'exécution de mon projet.
Voici mon fichier 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");
}
#fin si
dans 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)
Et j'ai donné le nom de l'activité dans 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" />
Quelle est l'erreur que je fais ici? Je posterai le code complet si nécessaire.
java
android
c++
android-ndk
Karthik Sivam
la source
la source
Réponses:
J'ai essayé toutes les options possibles mais le résultat est nul. Enfin, j'ai trouvé une solution correcte qui m'est utile. Allez simplement pour désactiver Instant Run Allez dans Fichier -> Paramètres -> Build, Execution, Deployment -> Instant Run -> Décochez la case pour une exécution instantanée . Exécutez votre application une fois et ce fichier apk fonctionne correctement.
la source
J'ai eu un problème similaire, voici ma solution:
Vous pouvez également vérifier cette réponse.
la source
Cela semble être un problème dans votre cas. Le chemin relatif de votre activité dans le manifeste n'est pas correct:
remplacez-le par:
ou
la source
La suppression de l'application sur l'appareil et le nettoyage du projet fonctionnent pour moi
la source
react-native run-android
Je devrais comprendre le problème en voyant
Mais il a fallu une demi-journée pour résoudre le problème.
Je corrige cela en suivant les instructions de la page des développeurs Android: https://developer.android.com/studio/build/multidex.html
Ajoutez d'abord ceci au fichier gradle.build:
Ensuite, étendez la classe Application avec la
MultiDexApplication
classe comme indiqué sur le lien ci-dessus (ou déclarez la classe d'application dansAndroidManifest.xml
ou remplacez laattachBaseContext()
fonction s'il n'est pas possible d'étendre la classe d'application).C'est tout et cela a résolu le problème.
la source
Essayez simplement Clean Project & Rebuild Project .
la source
Cette exception peut également se produire lorsque vous avez une vue personnalisée dans votre mise en page comme celle-ci:
et vous changez le nom du package de la vue de "com.example" en quelque chose de différent, mais vous oubliez de le changer également dans la mise en page.
la source
Si le projet était en cours de compilation juste avant, vous pouvez essayer de vider le cache en utilisant:
./gradlew clean
ou
./gradlew cleanBuildCache
ou pour les fenêtres
gradlew cleanBuildCache
https://developer.android.com/studio/build/build-cache.html
la source
Je l'ai résolu en utilisant:
./gradlew --stop
commande dans le terminal Android Studio. Après avoir exécuté cette commande, nettoyez et reconstruisez le projet.la source
travaillé pour moi.
la source
Pour tous ceux qui ont activé le multidex, écrivez ceci
à l'intérieur de build.gradle
écris un cours
EnableMultiDex
comme ci-dessouset en
AndroidManifest.xml
écrivant ce nom de classe dans la balise Applicationla source
enableMultiDex
affecte-t-il? Dans mon cas, celajavaMaxHeapSize "4g"
n'a pas aidé.MultiDexApplication
. Il est nécessaire si vous souhaitez utiliser multidexMultiDexApplication
ouattachBaseContext
(voir developer.android.com/studio/build/multidex ).J'ai rencontré ce problème plusieurs fois et ils sont tous résolus en désactivant Instant Run .
la source
Nous n'avons pas besoin d'avoir une classe Application personnalisée qui étend MultiDexApplication . Au lieu de cela, nous pouvons avoir comme ça sur AndroidManifest.xml
Et avec cela sur build.gradle (Module: app),
Merci.
la source
Lorsque vous utilisez multidex, essayez d'étendre votre classe d'application avec MultiDexAppication au lieu de Application et remplacez la méthode ci-dessous requise pour Android inférieur à 5.0 (car 5.0 et supérieur prennent en charge le multidex)
et dans les dépendances, ajoutez ceci
la source
Application
. Pourquoi devrions-nous passer outre dans un cas deMultiDexAppication
?Changez simplement le nom de votre dossier de
lib
àlibs
,Ensuite, vous verrez des marques d'erreur dans votre projet, pour résoudre ce droit, cliquez sur projet>
Properties > Java Build Path > libraries
:Retirez toute la bibliothèque avec des marques rouges sur elle, puis
apply > ok >
après nettoyage de votre projet . TADA voit la magie :)la source
Dans mon cas, ce problème est survenu à cause de Kotlin. Dans mon code existant, il y avait une classe qui était écrite Kotlin. J'ai construit l'application, elle l'a installée et dès que la première activité a ouvert l'application s'est plantée. dans le logcat, cette erreur était affichée. J'ai ensuite mis à jour ma version Kotlin à partir du site Web de Kotlin dans le fichier gradle de l'application. Reconstruisez l'application et cela a bien fonctionné alors.
la source
Une raison possible serait le chemin incorrect de l'activité dans le fichier Apps AndroidManifest.xml. Enregistrez l'activité avec dans votre AndroidManifest.xml avec le chemin relatif complet comme ci-dessous.
la source
après avoir essayé les réponses données, j'ai découvert une autre raison pour la même exception, que je devais ajouter la bibliothèque que j'utilise manuellement à ma bibliothèque principale via
avant cette solution, j'ai utilisé le "Fix Project setup" à partir du fichier .java dans eclipse, mais cela ne fonctionnait pas, j'ai donc dû l'ajouter manuellement ici et cela a fonctionné
la source
Je n'obtenais ce crash que sur les appareils Samsung Lollipop et cette solution a fonctionné pour moi.
Je publie cette réponse ici car cette question est actuellement le résultat de recherche le mieux classé sur Google pour ce crash et aucune des réponses ci-dessus n'a fonctionné pour moi.
la source
La solution suivante a fonctionné pour moi ...
J'ai essayé tout ce qui est mentionné ci-dessus mais je n'ai toujours pas lancé mon application. J'ai une application native de réaction fonctionnant sur la dernière version de gradle 4+ et Android Studio.
J'ai eu le problème où si je lance react-native run-android, il échouait avec un problème disant qu'il ne pouvait pas trouver la classe MainApplication ... c'est-à-dire ClassNotFoundException
J'ai pu résoudre le problème lorsque j'ai mis à jour mon gradle.properties pour utiliser le compilateur D8.
J'ai ajouté:
android.enableD8 = true
à mon gradle.properties
Détails du document ici: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
la source
La réponse d' Ashik abbas (désactiver Instant Run ) fonctionne pour moi, mais j'ai besoin d' Instant Run , enfin j'ai trouvé une solution qui m'est utile. désactivez simplement minifyEnabled . allez dans build.gradle (Module: app) dans le bloc de débogage et désactivez minifyEnabled :
la source
Selon ce que je comprends, je reçois le problème après la mise à jour d'Android Studio 2.1 à 2.3 en raison de la fonctionnalité instantanée, mon application ne fonctionnera pas lorsque je copie l'apk de la sortie et la place dans la carte SD. Pour ce problème, je construis l'apk à partir de l'option de construction, je construis l'apk dans Android Studio.
la source
Si vous êtes activé
minifyEnabled
etshrinkResources
vrai dans votre fichier de gradation d'application. Vous devez ajouter la ligne suivante dans leproguard-rules.pro
fichiercar la minification est supprimée de certaines classes importantes dans notre fichier apk.
la source
J'ai eu ce problème avant et les commentaires ici ont aidé dans le passé, mais cette fois, ce n'est pas le cas. J'ai vérifié ma configuration proguard et j'ai supprimé les lignes suivantes, puis cela a fonctionné pour que proguard puisse avoir quelque chose à voir avec cette erreur:
la source
Dans mon cas, j'ai utilisé l'ancienne bibliothèque d'espaces de noms pendant la configuration de mon projet en utilisant androidx one.
La solution a consisté à remplacer le
android.support.design.widget.BottomNavigationView
composant avec celui de droite pour échapper à la bibliothèque de soutien:com.google.android.material.bottomnavigation.BottomNavigationView
.la source
dans mon cas, j'ai défini l'activité dans
Manifest.xml
et j'ai oublié d'en créeractivity
. J'ai donc créé l'activité et la définir dansmanifest
et mon erreur résolue!la source
Si vous recevez cette erreur après avoir supprimé une dépendance de gradle, vérifiez votre manifeste et assurez-vous que vous avez supprimé toutes les entrées correspondant à cette dépendance.
la source
Pour moi, le problème est apparu après avoir créé un APK signé. Pour résoudre ce problème, j'ai généré un nouveau apk de débogage à l'aide de Run / Build APK. Après cela, Run (cmd + r) fonctionne à nouveau sans cette erreur.
la source
J'étais confronté au même problème. J'ai tout essayé pendant une journée, mais rien n'a fonctionné. La dépendance à l'origine du problème utilisait un sdk de compilation inférieur, un sdk cible et un sdk min. J'ai créé un module de bibliothèque pour le projet, copié toutes les sources et mis en correspondance les versions sdk avec les versions sdk de l'application. Et finalement cela a fonctionné comme un charme.
la source
J'ai eu la même erreur et certaines réponses m'induisent en erreur sur un problème de débutant. J'ai eu le mauvais package dans mon descripteur de vue personnalisé comme ci-dessous. J'espère que cela aide quelqu'un.
la source