Atualmente, estou trabalhando em um projeto no qual tenho que usar o ndk puramente nativo. Funcionou quando tento executar um exemplo do mundo hellow da fonte do motor Irrlicht. Então eu tento usá-lo no meu projeto seguindo o mesmo formato desse exemplo. Mas eu tenho:
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]]
enquanto estiver executando meu projeto.
Aqui está o meu arquivo 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");
}
#fim se
no 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)
E eu dei o nome da atividade no 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" />
Qual é o erro que estou cometendo aqui? Vou postar o código completo, se necessário.
java
android
c++
android-ndk
Karthik Sivam
fonte
fonte
Respostas:
Eu tentei todas as opções possíveis, mas o resultado é zero. Finalmente eu encontrei a solução correta que é útil para mim. Basta desabilitar a Execução Instantânea. Vá para Arquivo -> Configurações -> Construção, Execução, Implantação -> Execução Instantânea -> Desmarque a caixa de seleção para execução instantânea . Execute seu aplicativo uma vez e este arquivo apk funcionará corretamente.
fonte
Eu tive um problema semelhante, aqui está a minha solução:
Você também pode verificar esta resposta.
fonte
Isso parece ser um problema no seu caso. O caminho relativo da sua atividade no manifesto não está correto:
substitua por:
ou
fonte
A exclusão do aplicativo no dispositivo e a limpeza do projeto funcionam para mim
fonte
react-native run-android
Eu deveria entender o problema apenas vendo
Mas demorou meio dia para corrigir o problema.
Corrijo isso seguindo as instruções da página de desenvolvedores do Android: https://developer.android.com/studio/build/multidex.html
Primeiro adicione isso ao arquivo gradle.build:
Em seguida, estenda a classe Application com a
MultiDexApplication
classe conforme as instruções no link acima (ou declare a classe do aplicativoAndroidManifest.xml
ou substitua aattachBaseContext()
função, se não for possível estender a classe do aplicativo).Isso é tudo e resolveu o problema.
fonte
Basta tentar Limpar Projeto e Reconstruir Projeto .
fonte
Essa exceção também pode ocorrer quando você tem uma visualização personalizada em seu layout, como esta:
e você altera o nome do pacote da visualização de "com.example" para algo diferente, mas também esquece de alterá-lo no layout.
fonte
Se o projeto estava sendo compilado pouco antes, você pode tentar limpar o cache usando:
./gradlew clean
ou
./gradlew cleanBuildCache
ou para janelas
gradlew cleanBuildCache
https://developer.android.com/studio/build/build-cache.html
fonte
eu resolvi usando:
./gradlew --stop
comando no terminal do android studio. Após executar este comando, limpe e reconstrua o projeto.fonte
trabalhou para mim.
fonte
Para qualquer pessoa que esteja habilitando multidex, escreva
dentro de build.gradle
escreva uma aula
EnableMultiDex
como abaixoe
AndroidManifest.xml
escreva este className dentro da tag Applicationfonte
enableMultiDex
afeta? No meu casojavaMaxHeapSize "4g"
não ajudou.MultiDexApplication
. É necessário se você quiser usar multidexMultiDexApplication
ouattachBaseContext
(consulte developer.android.com/studio/build/multidex ).Eu enfrentei esse problema várias vezes e todos foram resolvidos com a desativação da execução instantânea .
fonte
Não precisamos ter uma classe Application personalizada que estenda o MultiDexApplication . Em vez disso, podemos ter isso no AndroidManifest.xml
E junto com isso no build.gradle (Módulo: app),
Obrigado.
fonte
Quando você estiver usando multidex, tente estender sua classe de aplicativo com MultiDexAppication em vez de Application e substitua o método abaixo, exigido para Android abaixo de 5.0 (porque 5.0 e superior suportam o multidex)
e nas dependências adicione isso
fonte
Application
. Por que devemos substituir em um caso deMultiDexAppication
?Basta alterar o nome da pasta de
lib
paralibs
,Em seguida, você verá algumas marcas de erro no seu projeto, para resolver esse direito. Clique no projeto>
Properties > Java Build Path > libraries
:Remova toda a biblioteca com marcas vermelhas e
apply > ok >
depois limpe seu projeto . TADA veja a mágica :)fonte
No meu caso, esse problema surgiu por causa do Kotlin. No meu código existente, havia uma classe que foi escrita em Kotlin. Eu criei o aplicativo, ele foi instalado e, assim que a primeira atividade foi aberta, o aplicativo travou. no logcat esse erro estava sendo mostrado. Atualizei minha versão do Kotlin do site da Kotlin no arquivo gradle do aplicativo. Crie o aplicativo novamente e funcionou bem.
fonte
Um possível motivo seria o caminho incorreto da atividade no arquivo Apps AndroidManifest.xml. Registre a atividade no seu AndroidManifest.xml com o caminho relativo completo, como abaixo.
fonte
Depois de tentar as respostas fornecidas, descobri outro motivo para a mesma exceção: eu tinha que adicionar a biblioteca que estou usando manualmente à minha biblioteca principal através
Antes desta solução, usei a "Fix Project setup" de dentro do arquivo .java no eclipse, mas como não funcionou, tive que adicioná-lo manualmente aqui e funcionou
fonte
Eu estava recebendo essa falha apenas em dispositivos Samsung Lollipop e esta solução funcionou para mim.
Estou postando esta resposta aqui, porque atualmente esta pergunta é o resultado de pesquisa mais bem classificado no Google para esta falha e nenhuma das respostas acima funcionou para mim.
fonte
A seguinte solução funcionou para mim ...
Eu tentei tudo mencionado acima, mas ainda não consegui meu aplicativo em execução. Eu tenho o aplicativo nativo de reação em execução na versão mais recente do gradle 4+ e no android studio.
Eu tive o problema em que, se eu executar o react-native run-android, ele estava falhando com o problema, dizendo que não é capaz de encontrar a classe MainApplication ... ou seja, ClassNotFoundException
Consegui resolver o problema quando atualizei meu gradle.properties para usar o compilador D8.
Eu adicionei:
android.enableD8 = true
ao meu gradle.properties
Detalhes do documento aqui: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html
fonte
Resposta Ashik abbas (desativar o Instant Run ) funciona para mim, mas eu preciso do Instant Run , finalmente encontrei a solução que é útil para mim. basta desativar o minifyEnabled . vá para build.gradle (Module: app) no bloco de depuração e desative minifyEnabled :
fonte
De acordo com meu entendimento, eu recebo o problema após a atualização do android studio 2.1 a 2.3 devido ao recurso instantâneo, meu aplicativo não será executado quando eu copiar o apk da saída e colocar no sdcard. Para este problema, eu construo o apk da opção de compilação do build apk no android studio.
fonte
Se você estiver ativado
minifyEnabled
eshrinkResources
verdadeiro no arquivo de classificação do aplicativo. Você precisa adicionar a seguinte linha noproguard-rules.pro
arquivoporque a minificação foi removida algumas classes importantes em nosso arquivo apk.
fonte
Eu tive esse problema antes e os comentários aqui ajudaram no passado, mas desta vez não. Verifiquei minha configuração do proguard e removi as seguintes linhas e funcionou para que o proguard possa ter algo a ver com esse erro:
fonte
No meu caso, usei a antiga biblioteca de namespace enquanto meu projeto era configurado usando o androidx one.
A solução foi substituir
android.support.design.widget.BottomNavigationView
componente com o caminho certo para fugir da biblioteca de suporte:com.google.android.material.bottomnavigation.BottomNavigationView
.fonte
no meu caso, defino a Atividade
Manifest.xml
e esqueci de criar algumaactivity
. Então eu criei Activity e defini-lomanifest
e meu erro foi resolvido!fonte
Se você receber esse erro após remover alguma dependência gradle, verifique seu manifesto e verifique se removeu todas as entradas correspondentes a essa dependência.
fonte
Para mim, o problema apareceu depois que eu criei um APK assinado. Para corrigi-lo, criei um novo apk de depuração usando o Run / Build APK. Depois disso, Executar (cmd + r) funciona novamente sem esse erro.
fonte
Eu estava enfrentando o mesmo problema. Eu tentei todo o possível por um dia, mas nada funcionou. A dependência que estava causando o problema estava usando menor compilação sdk, destino sdk e min sdk. Criei o módulo de biblioteca para o projeto, copiei todas as fontes e combinei as versões do sdk com as versões do aplicativo sdk. E, finalmente, funcionou como um encanto.
fonte
Eu tive o mesmo erro e algumas respostas me enganam sobre um problema de novato. Eu tinha o pacote errado no meu descritor de exibição personalizado, como abaixo. Espero que ajude alguém.
fonte