2013-05-01 2 views
0

Был ли мой поиск, но не видел ответа на это.как включить файл ресурсов в файл распределенного jar?

Я строю банку в качестве SDK для распространения. Файл jar был успешно создан после того, как я обозначил его как «библиотека» в пути сборки.

Теперь задача состоит в том, чтобы также включить мою библиотеку js (js.zip) для распространения. Я вижу, что js.zip был включен в мой .APK-файл после размещения его в PROJECT_ROOT/res/raw. Но я не вижу его в файле jar через jar tf my.jar. Не делает diff, если поместить мой файл в папку с ресурсами.

Возможно ли это?

Спасибо,

Ли

+0

http://developer.android.com/tools/projects/index.html. http://developer.android.com/tools/projects/projects-eclipse.html. Проверьте ссылки – Raghunandan

ответ

0

Файл банку был построен успешно после того, как я помечать его как "это библиотека" в пути сборки

Это JAR не предназначен для перераспределения. Это артефакт потребления проекта библиотеки Android в проекте-хозяине.

Возможно ли это?

Android не распространяет ресурсы Android в JAR на момент написания этой статьи. Возможно, это станет доступным в настоящее время разрабатываемой системой сборки на базе Gradle.

Вам необходимо будет распространять проект библиотеки Android, содержащий ваши ресурсы, который также содержит либо ваше дерево src/, либо построенный вручную JAR для этого кода в libs/.

Например, вот пара довольно грубых Ant задач для этого:

<target name="jar" depends="debug"> 
    <delete file="bin/CWAC-ColorMixer.jar" /> 
    <jar destfile="bin/CWAC-ColorMixer.jar" basedir="bin/classes" excludes="**/BuildConfig.class **/R*.class" /> 
</target> 

<target name="dist-lib" depends="jar"> 
    <copy todir="/tmp/CWAC-ColorMixer/libs"> 
     <fileset dir="libs/" /> 
    </copy> 
    <copy todir="/tmp/CWAC-ColorMixer/res"> 
     <fileset dir="res/" /> 
    </copy> 
    <copy file="bin/CWAC-ColorMixer.jar" todir="/tmp/CWAC-ColorMixer/libs" /> 
    <copy file="AndroidManifest.xml" todir="/tmp/CWAC-ColorMixer" /> 
    <copy file="build.xml" todir="/tmp/CWAC-ColorMixer" /> 
    <copy file="local.properties" todir="/tmp/CWAC-ColorMixer" /> 
    <copy file="project.properties" todir="/tmp/CWAC-ColorMixer" /> 
    <copy file="LICENSE" todir="/tmp/CWAC-ColorMixer" /> 
    <mkdir dir="/tmp/CWAC-ColorMixer/src" /> 
</target> 

Первый создает файл JAR. Второй создает проект библиотеки Android во временном каталоге. Эта вторая задача Ant особенно нуждается в улучшении (например, настраиваемое местоположение, автоматически ZIP-сообщение), но оно работает.

+0

Спасибо за вашу замечательную книгу и ваш вклад здесь. «Вам нужно будет распространять проект библиотеки Android, содержащий ваши ресурсы, который также содержит либо ваше src/tree« - как это сделать? "или вручную построенный JAR для этого кода в libs /." Как я могу вручную создать JAR-файл? использовать AAPT? – user443461

+0

как об этом сообщении? кажется его выполнимым. [link] (http://stackoverflow.com/questions/9902075/build-java-library-with-resources) – user443461

+0

@ user443461: «как это сделать?» - см. править. «Как я могу вручную создать JAR-файл?» - так же, как люди делали это на Java в течение последних 15 лет или около того. «Как насчет этого сообщения?» - кроме того, что это неработающая тарабарщина? – CommonsWare