Создаем приложение для Android с использованием ANT, файлов ресурсов java нет в final apk?

#android #ant #resources

#Android #ant #Ресурсы

Вопрос:

Я использую библиотеку Java, в которую встроен файл .xml, и использую это в коде с помощью Library.class.getResourceAsStream("file.xml") .

Когда я собираю с eclipse , все идет нормально. Когда я создаю с ant (без proguard), ресурс не может быть найден при запуске приложения.

После некоторого поиска выясняется, что файл .xml не был добавлен в папку bin / classes. Итак, я добавил действие копирования после javac команды в build.xml файле.

 <copy todir="${out.classes.absolute.dir}">
    <fileset dir="${lib_src}/src" includes="**/*.xml" />
</copy>
  

Это работает, в том смысле, что файлы xml теперь присутствуют в classes папке. Однако они не включаются в финальный пакет apk.

Что здесь происходит не так? Какое действие сборки мне нужно изменить?

Ответ №1:

Посмотрите на свой /tools/ant/main_rules.xml файл. Это основной файл сборки, который Android использует для своих сборок Ant. В соответствии с этим у вас должны быть файлы вашей библиотеки в папке с именем «libs».

В любом случае, это хорошая идея для вас просмотреть этот XML-файл. В нем будет подробно объяснено, что происходит, когда вы выполняете сборки Ant из командной строки.

Комментарии:

1. Да, я скопировал это в свой пользовательский build.xml . Согласно инструкциям. Однако я не могу найти, где в процессе все идет не так. Должен ли dexing добавлять файлы .xml, например, в dex?

2. Если вы правильно настроили папку libs, ваши XML-файлы должны были быть упакованы в apk. Это потребует устранения неполадок, я думаю, вы можете поместить задачу Ant <echo> в main_rules.xml чтобы распечатать значения и понять, что происходит.

Ответ №2:

Я решил эту проблему, создав библиотеку только для Android, а не для generic java. Я добавил XML-файл в resources каталог, я думаю, что это было в raw каталоге или xml dir. Затем я использовал стандартный способ Android для получения этих ресурсов.

Комментарии:

1. Не могли бы вы объяснить подробнее, пожалуйста? Что значит сделать его доступным только для Android? и как?

2. Создание проекта библиотеки Android. Просто создайте проект библиотеки Android и добавьте исходные файлы java в папку src. Затем обратитесь к библиотеке из вашего приложения для Android.