#java #android #jar #library-project
#java #Android #jar #библиотека-проект
Вопрос:
У меня есть проект библиотеки Android, который работает для меня довольно хорошо, но теперь я заинтересован в «преобразовании» его во внешний JAR.
Как мне это сделать?
Можно ли преобразовать любой проект библиотеки Android во внешний JAR? Если нет, каковы ограничения или ограничения?
Ответ №1:
Можно ли преобразовать любой проект библиотеки Android во внешний JAR?
Не сейчас.
Если нет, каковы ограничения или ограничения?
Если ваша библиотека представляет собой чисто Java-код, без ресурсов, вы можете создать JAR из .class
файлов, как и в случае с обычной Java.
Если ваша библиотека использует ресурсы, вы все равно можете создать JAR, как указано выше. Однако вам нужно будет искать R
значения (например, R.layout.main
) с помощью отражения или getIdentifier()
, и ваши ресурсы не будут упакованы в JAR, а должны будут распространяться отдельно.
В будущем инструменты сборки должны поддерживать создание распространяемых файлов JAR из библиотечных проектов вместе с ресурсами. Текущие инструменты сборки создают JAR, но они не предназначены для распространения, а на данный момент являются скорее внутренними артефактами сборки.
Комментарии:
1. Спасибо. Правильно ли я понимаю, что создание JAR из файлов .class так же просто, как jar cf jar-file input-files ? Кроме того, не могли бы вы подробнее рассказать о том, как ресурсы, к которым осуществляется доступ
getIdentifier()
, распределяются отдельно?2. @uTubeFan: «Правильно ли я понимаю, что создание JAR из файлов .class так же просто, как jar cf jar-file input-files?» — предположительно. Я
<jar>
сам использую задачу Ant. «Кроме того, не могли бы вы подробнее рассказать о том, как ресурсы, доступные через getIdentifier(), распределяются отдельно?» — хм, ну, если их нет в файле JAR, и повторному пользователю JAR нужны файлы, повторному пользователю нужно как-то получить эти файлы. Я бы рекомендовал ZIP-архив, содержащий JAR иres/
дерево.3. Привет @uTubeFan Предположим, рассмотрим проект MyTranslator , в котором я перевожу некоторый текст, для этого я импортировал файл jar xyztranslator.jar . Теперь я хочу преобразовать проект MyTranslator в файл .jar , чтобы я мог использовать все классы в проекте MyTranslator, а также все классы в xyztranslator.jar . Просто мой вопрос в том, как я могу экспортировать приложение Android в файл .jar, в который уже были импортированы файлы jar
4. Я экспортировал библиотеку Android в jar, как ее защитить?
5. @Hades: Сейчас основное внимание уделяется AARs для библиотечных проектов в рамках инициативы Gradle для Android. Чтобы создать JAR для проекта библиотеки, который не использует ресурсы, вам нужно добавить свою собственную задачу Gradle.
Ответ №2:
http://developer.android.com/guide/developing/projects/index.html#LibraryProjects утверждает, что вы не можете экспортировать их во внешний JAR. Конкретная цитата:
Аналогично, вы не можете экспортировать проект библиотеки в автономный файл JAR, как вы бы сделали для настоящей библиотеки. Вместо этого вы должны скомпилировать библиотеку косвенно, обратившись к библиотеке в зависимом приложении и создав это приложение.
Комментарии:
1. Спасибо. На той же странице также есть предложение, в котором говорится: «Вам нужны SDK Tools r14 или новее, чтобы использовать новую функцию проекта библиотеки, которая генерирует каждый проект библиотеки в свой собственный файл JAR». Означает ли это, что если я использую SDK r14 (или новее), цитируемая вами ссылка больше не существует?
2. Честно говоря, я не уверен. Эта формулировка, похоже, противоречит части, которую я процитировал ниже, хотя это может быть просто плохая формулировка.
3. r14 переделал, как они обрабатывают проект библиотеки, чтобы иметь возможность экспортировать jar, но я все еще не могу понять, как это сделать, сохраняя сгенерированные ресурсы.
4. У меня был пакет проекта библиотеки Android для jar, как его защитить?