java.lang.ClassNotFoundException: Не нашел класс на пути: dexpathlist

В настоящее время я работаю над проектом, в котором я должен использовать исключительно собственный ndk. Он работал, когда я пытаюсь запустить пример helloworld из источника двигателя Irrlicht. Затем я пытаюсь использовать его в своем проекте, следуя тому же формату этого примера. Но я получил:

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]]

при запуске моего проекта.

Вот мой файл 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");
}

#endif

в 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)

И я дал имя Activity в <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 = "портрет" android: clearTaskOnLaunch = "true" > <meta-data android: name = "android.app .lib_name " android: value = " HelloWorldMobile1 " /> :

<activity android:name="android.app.POMActivity"

Какая ошибка я здесь делаю? Я буду публиковать полный код, если он не нужен.

java,android,c++,android-ndk,

81

Ответов: 23


62

У меня была аналогичная проблема, вот мое решение:

  1. Щелкните правой кнопкой мыши свой проект и выберите « Свойства» .
  2. Выберите « Путь сборки Java» в меню слева.
  3. Перейдите на вкладку « Заказ и экспорт ».
  4. Из списка убедитесь , что библиотеки или внешние банки, добавленные к вашему проекту проверяются .
  5. Наконец, очистите проект и запустите.

Вы также можете проверить этот ответ.


Я пробовал все возможные варианты, но результат равен нулю. Наконец, я нашел правильное решение, которое мне полезно. Просто откройте «Мгновенный запуск» Перейти в « Файл» -> «Настройки» -> «Сборка», «Выполнение», «Развертывание» - «Мгновенный запуск» -> Снимите флажок для мгновенного запуска . Запустите приложение один раз, и этот файл apk работает правильно.


34

Это, кажется, проблема в вашем случае. Относительный путь вашей деятельности в манифесте неверен:

<activity android:name=".POMActivity"

замените это следующим образом:

<activity android:name="com.irrlicht.example1.POMActivity"

или

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 }

16

Я должен понять проблему, просто увидев

ошибки dex

Но для решения проблемы потребовалось полдня.
Я исправить это, следуя инструкциям на странице разработчиков Android: https://developer.android.com/studio/build/multidex.html

Сначала добавьте это в файл gradle.build:

AndroidManifest.xml

Затем расширьте класс приложения (или объявите класс приложения AndroidManifest.xmlили переопределите его attachBaseContext()с MultiDexApplicationклассом, как указано в приведенной выше ссылке.

Вот и все, и это решило проблему.


14

Удаление приложения на устройстве и очистка проектных работ для меня

Java, Android, C ++, андроид-NDK,