Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
#1

DexClassLoader не работает - Программирование Android

24.12.2015, 17:30. Просмотров 313. Ответов 0
Метки нет (Все метки)

Добрый день. Возникла проблема с использованием DexClassLoader. Тестирование приложения на эмуляторах и на моих устройствах проходит без проблем, но обнаружил, что примерно на 30% устройств возникает проблема. Для загрузки класса из .dex (который упакован в apk) использую следующий код:
Java
1
2
3
4
5
6
7
PRIVATE_CACHE = context.getCacheDir().getAbsolutePath();
DexLoader = new  DexClassLoader(PRIVATE_CACHE + "/DEX_API.apk", PRIVATE_CACHE, PRIVATE_CACHE, ClassLoader.getSystemClassLoader());
try {
    DexLoader.loadClass("com.class");
} catch (Exception e) {
    Log.d("TAG", getStackTrace(e));
}
От устройств где это не работает получаю 2 вида ошибок:
java.lang.ClassNotFoundException: Didn't find class "class_name" on path: DexPathList[[zip file "/data/data/packagename/cache/DEX_API.apk"],nativeLibraryDirectories=[/data/data/packagename/cache, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at com.API1.Reflector.loadClass(Reflector.java:43)
at com.API1.RaccoonBroadcast.onReceive(RaccoonBroadcast.java:65)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2528)
at android.app.ActivityThread.access$1700(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1319)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5372)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:970)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)
at dalvik.system.NativeStart.main(Native Method)
Suppressed: java.io.IOException: unable to open DEX file
at dalvik.system.DexFile.openDexFileNative(Native Method)
at dalvik.system.DexFile.openDexFile(DexFile.java:296)
at dalvik.system.DexFile.<init>(DexFile.java:111)
at dalvik.system.DexFile.loadDex(DexFile.java:151)
at dalvik.system.DexPathList.loadDexFile(DexPathList.java:266)
at dalvik.system.DexPathList.makeDexElements(DexPathList.java:230)
at dalvik.system.DexPathList.<init>(DexPathList.java:112)
at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
at dalvik.system.DexClassLoader.<init>(DexClassLoader.java:57)
at com.API1.Reflector.<init>(Reflector.java:36)
at com.API1.Reflector.getInstance(Reflector.java:49)
at com.API1.API1Service.onStartCommand(API1Service.java:52)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2823)
at android.app.ActivityThread.access$2100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
... 8 more
или

java.lang.ClassNotFoundException: class_name in loader dalvik.system.DexClassLoader@40566f48
at dalvik.system.DexClassLoader.findClass(DexClassLoader.java:235)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at com.API1.Reflector.loadClass(Reflector.java:43)
at com.API1.RaccoonBroadcast.onReceive(RaccoonBroadcast.java:65)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1813)
at android.app.ActivityThread.access$2400(ActivityThread.java:121)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:990)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3714)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
at dalvik.system.NativeStart.main(Native Method)

Перед загрузкой проверяется наличие и контрольная сумма загружаемого apk. В чем может быть проблема не знаю, попробовал использовать PathClassLoader и скармливать ему распакованный dex файл, но у меня это не работает. В оф. доках все достаточно обобщенно описано, может есть какой-то более низкоуровневый но надежный способ загрузить внешний dex файл. Кто-то сталкивался с такой проблемой?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 17:30     DexClassLoader не работает
Посмотрите здесь:

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает - Windows 7
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с недавних пор мышь стала работать через раз....

Из-за чего интернет работает на техникумовских компьютерах и не работает подключении к моему ноутбуку - Сети
В Техникуме есть разные компьютеры - для учителей - для студентов - библиотечные ...перепробовал и библиотечные и студенческие и...

Multimap STL - работает только запись в файл, поиск в файле не работает - C++
И снова здравствуйте. Снова я прошу вашей помощи. Переделал программу с мапом в мульти мап, но что то пошло не так и работает только запись...

Не работает скомпилированный EXE файл хотя в самой среде игра работает - Unity, Unity3D
Я почти закончил разработку своей игры на Unity2D но после запуска скомпилированного EXE файла половина текстур не отображается хотя в...

Windows 7, не работает часть служб, не работает сеть, восстановление системы не помогает - Windows 7
Приветствую коллеги! Сам админю уже лет 10, не случалось ситуации еще что гугл не помогал, но вот пришел в организацию, на пк банк клиент,...

не работает в ворде веб компонент,и скачав обновление ow 11 не работает все равно - MS Word
проблема с веб элементами и обновлениями на них))

Ноутбук работает только с Wi Fi роутера дома, в кафе не работает и везде. Почему? - Wi-Fi
Подскажите пожалуйста, почему у меня ноутбук с виндой 7, работает вай фай только дома с роутера. А когда я прихожу в кафе или в парк, у...

Не работает монитор комп работает а на мониторе нет изображения что делать ? - Компьютерное железо
У меня компьютер старый давно покупал и мне захотелось проверить включается или нет и тут возникла одна проблема не включается монитор (...

У клиента не работает роутер. У Меня дома работает. TRENDnet TEW-432BRP - Сетевое оборудование
Добрый день! У клиента установлен TRENDnet TEW-432BRP. Настроен для подключения к Beeline, но это не совсем важно. До определенного...

При включении компа у меня не работает монитор, но нормально работает ТВ-выход - Компьютерное железо
Уже несколько дней рву волосы на голове.... Такая проблемка: при включении компа у меня не работает монитор, только мигает лампочка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru