Динамично Генерирующий Байт-код Дальвика в запуск приложение Дальвика/Android

Когда вы используете ProGuard, вы должны всегда разрешать все предупреждения.

Эти предупреждения говорят вам, что библиотеки ссылаются на некоторый код, и для этого нет источников. Это может и не совсем нормально. Это зависит от того, вызвал ли проблемный код.

В этом случае предупреждения для Okio и Retrofit2 могут быть проигнорированы. Пакет java.nio.* недоступен на Android и не будет вызываться. Вы можете смело игнорировать эти предупреждения. Также классы Java 8 не будут использоваться.

Добавьте это в свою конфигурацию ProGuard, он должен исправить вашу проблему:

-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8
25
задан Michael Kohout 9 April 2010 в 21:16
поделиться

3 ответа

Команда Dalvik хотела бы создать первоклассную библиотеку генерации кода времени выполнения. Мы отслеживаем запрос функции как ошибку Android 6322 . К сожалению, у нас очень длинный список проблем с производительностью и корректностью, поэтому я не могу назвать вам график, когда мы будем уделять время решению этой проблемы.

Есть несколько альтернатив, но все они потребуют некоторой работы:

  • Запустите приложение на стандартной JVM и выполните там генерацию всего кода времени выполнения. Выгрузите файлы .class из памяти в файлы, а затем запустите dx для этих файлов. Если вы достаточно опытны, вы можете интегрировать всю эту работу в свою сборку.

  • Включите инструмент dx с открытым исходным кодом в качестве библиотеки проекта и запустите его программно изнутри вашего приложения, возможно, в загрузчике классов вашего приложения. Это приведет к раздуванию двоичного файла вашего приложения.

23
ответ дан 28 November 2019 в 21:32
поделиться

есть ли способ загрузить файлы dex / байт-коды в приложение во время выполнения?

Посмотрите на DexFile и DexClassLoader .

5
ответ дан CommonsWare 28 November 2019 в 21:32
поделиться

Я использовал ASM и BCEL для генерации классов Java, а затем преобразовал их в файлы Dex. Наконец, я создал файлы JAR для динамической загрузки на устройство.

Вы можете проверить мой код:)

https://github.com/sciruela/android

2
ответ дан Sergio 28 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: