Проект библиотеки Android как файл jar для распространения, например Google Analytics

Я видел этот вопрос и еще несколько сомнений относительно создания файла jar, который я могу распространять и могу быть использован в любых приложениях для Android.

Какое мое требование

  • Как я уже сказал, я хочу создать и распространять закрытую исходную библиотеку. я не хотите, чтобы исходный код был видимым.
  • В этой библиотеке я не хочу использовать какие-либо активы, макеты, ресурсы и т.д. Но я хочу использовать некоторые специальные коды для Android, например идентификатор устройства Android.

Самый популярный ответ в связанном выше SO-вопросе говорит создать обычный Java-проект и импортировать в него файл android.jar. Я пытался это сделать, но я не знаю, как добавить android.jar для любого проекта java. Я также хотел бы получить разъяснения по этому поводу.

Кроме того, я хотел бы знать, есть ли какие-либо другие методы, использующие сам sdk android (без использования java-проекта), создать файл jar с закрытой исходной библиотекой.

Я думаю, что я хочу, потому что Google Analytics для родных приложений для Android, похоже, это сделал. Я уверен, что в файле .jar, который они распространяют, они используют специальные коды Android, поскольку нет никакого другого способа заставить их отображать информацию в средстве просмотра аналитики.

РЕДАКТИРОВАТЬ: МОЖЕТ ЛИ ЧТО-НИБУДЬ СКАЗАТЬ ЭТО?

Я думаю, что добился определенного прогресса. Это то, что я сделал

  • Создан обычный проект Android (не проект библиотеки, "есть" Библиотека" не отмечена)

  • В проекте я закодировал свою логику. Он использует некоторые андроиды конкретные классы, такие как SharedPreference, UUID, PackageManager. Но ничего не связано с активами, макеты также не распространяются на класс Activity. Просто класс java, расширяющий java.lang.object

  • Экспортировать проект с помощью Project- > rightclick- > export- > Java- > JAR файл. На следующем экране я снял флажок рядом с AndroidManifest.xml. Установите целевой каталог для экспорта и нажмите три раза, сохранив настройки по умолчанию. Затем я нажал Закончите, и на моем рабочем столе появился прекрасный libMyLibraryName.jar.

Затем я создал другой проект android, добавив этот libMyLibraryName.jar в новый проект, используя project- > rightclick- > properties- > java build path → libraries- > add external jar.

И я попытался использовать мой класс в библиотеке, в моем новом проекте

MyLibraryClass objClass = new MyLibraryClass(this);

И мне удалось скомпилировать и запустить. Я даже отправил библиотеку одному из моих сотрудников, который смог использовать библиотеку на своем компьютере (просто убедитесь, что проект библиотеки в моей рабочей области не влияет на проект, используя его).

Теперь у меня есть 2 вопроса.

1) Мой первый вопрос: что они подразумевают под термином "истинная библиотека" в нижеприведенной документации? Является ли это любым проектом java-проекта, который не может быть экспортирован в JAR файл?

Однако проект библиотеки отличается от стандартного Android проект приложения, в котором вы не можете скомпилировать его непосредственно .apk и запустить его на устройстве Android. Аналогично, вы не можете экспортировать проект библиотеки для автономного файла JAR, как вы бы это делали для истинной библиотеки. Вместо этого вы должны скомпилировать библиотеку опосредованно, путем ссылки на библиотеку в зависимой заявке и здании это приложение.

Хорошо, эта часть взята из документации в разделе "Библиотечные проекты".

2) Мой второй вопрос: что-то не так с тем, как я создал файл JAR? Любые возможные ошибки, которые могут укусить меня позже? Я хотел бы убедиться, что я не делаю что-то ужасно неправильно, прежде чем использовать его в своих важных проектах.

Я бы добавил, что я не пробовал метод создания проекта JAVA и импорта android.jar. Я готов попробовать это, если то, что я сделал в настоящее время, неверно.

Ответ 1

android.jar будет находиться там, где вы установили свой Android SDK. В каталоге platforms должно быть несколько других каталогов с именем android-<version>. Будет android.jar. Выберите тот, который подходит для минимальной версии Android, на которую вы нацеливаетесь.

После этого скопируйте его в свой проект. Если вы используете eclipse, я думаю, вы можете просто вырезать и вставлять банки прямо в ваш проект, щелкнуть правой кнопкой мыши и добавить его в путь сборки. Если вы не используете eclipse или любую другую среду IDE, вам просто нужно убедиться, что файл android.jar находится в пути к классу при создании файла jar.

После этого ваша недавно встроенная библиотека Android может быть удалена в любой проект Android.

В ответ на ваши дополнительные вопросы:

  • То, что они подразумевают под настоящей библиотекой, представляет собой файл jar, а не проект библиотеки Android.

  • Я не думаю, что что-то не так с тем, как вы создали файл jar. Я бы сделал это с помощью android.jar, как я упоминал выше, но ваш способ тоже должен работать. Чтобы проверить это, я бы рассмотрел содержимое контейнера и убедиться, что все, что у вас есть, есть .class.