Использование Android dx
У меня есть файл JAR, созданный из приложения Android, потому что я пометил его как "Является ли библиотека" в затмении во время создания. Теперь DexClassLoader не может загрузить этот файл, потому что у него нет записи, помеченной classes.dex. Это похоже на стандартную банку. Как я могу преобразовать такую банку в dxed банку с dx, которую может загрузить DexClassLoader? Любая помощь приветствуется!
2 ответа
Вы можете использовать инструмент dx из sdk, из командной строки. Что-то вроде:
dx --dex --output=dexed.jar hello.jar
Работает для меня. Интеграция таких вещей в ваш процесс сборки - это нечто черное, в основном включающее взлом скриптов Ant, предоставляемых SDK. Если ваша библиотека обновляется только изредка, возможно, будет целесообразно сделать это вручную.
В моем случае я храню файл dexed.jar в своей папке resources / raw. Во время выполнения я копирую его оттуда в файловую систему, а затем передаю путь к файловой системе в DexClassLoader. Это... немного неровно.
Библиотеки Android не предназначены для запуска на устройстве. Они могут быть включены только как часть проектов Android, которые преобразуют все файлы.jar из библиотеки Android, на которые есть ссылки, в один общий .dex
файл и упаковать их в .apk
файл.
Если вы хотите протестировать свою библиотеку Android, и она действительно имеет некоторые точки входа для этого, то единственный способ сделать это - временно изменить библиотеку Android на Android Project (отметив эту опцию в настройках).