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

DexClassLoader не работает - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android The application may be doing too much work on its main thread http://www.cyberforum.ru/android-dev/thread1624335.html
Ну елки палки, это что еще такое ? :) В приложении запускаю камеру и ловлю результат PhotoObject current_photoObj ; // мой класс для работы с файлом фотки current_photoObj = new PhotoObject(); protected void camera_start(){ Intent takePictureIntent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE ); takePictureIntent.putExtra( MediaStore.EXTRA_OUTPUT,...
Android Перевод чисел в разные системы счисления Добрый день, когда то нашел код для перевода чисел в разные системы, но он на С# я его там для своей программы использовал, сейчас решим сделать чтобы и на андроид работало, но так как я понял я неправильно переделал код, так как программа работает некорректно, посмотрите оригинальный код пожалуйста: /// <summary> /// Переводит из деятичной системы счисления в систему счисления с... http://www.cyberforum.ru/android-dev/thread1624252.html
Первая игра 4х4 Android
Есть типа игра, в которой нужно нажать на все кнопки с числами по возрастанию. У меня 16 кнопок, я решил реализовать всё так: package com.example.root.v_1; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast;
Как добавить свой шрифт в Android Studio? Android
Как добавить шрифт в AndroidStudio, чтобы потом рисовать им методом drawText? Например, я хочу добавить comic sans ms
Android Вынести версию из build.gradle во внешний файл http://www.cyberforum.ru/android-dev/thread1623567.html
Гуру, подскажите возможно ли подобное? Вот кусок, который НЕ работает! (выдает You should define VERSION_1 and VERSION_2 in gradle.properties) defaultConfig { applicationId 'com.my' minSdkVersion 14 targetSdkVersion 14 signingConfig signingConfigs.key_config // VERSION
Android ViewPager при листаний назад повторяется стирается контент del Добавлено через 33 минуты Сам не понял как сделал, но заработало все нормально. Где то в коде была логическая ошибка из-за этого не так работало. Всем спасибо! Разобрался! подробнее

Показать сообщение отдельно
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239

DexClassLoader не работает - Android

24.12.2015, 17:30. Просмотров 265. Ответов 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 файл. Кто-то сталкивался с такой проблемой?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru