Перейти к содержимому

Java как создать библиотеку

  • автор:

Как создать библиотеку?

У меня есть три «куска» кода — интерфейс, абстрактный класс и класс. Класс наследует абстрактный класс, а абстрактный класс наследует интерфейс. Класс переопределяет и реализует все методы из интерфейса и Абстрактного Класса. Я хочу сделать из них библиотеку, а точнее пока только jar файл, чтобы импортировать их в свой код. Нужно ли мне делать их в разных проектах, но в одной раскладке(package)? Если да, то как мне их из разных проектов запилить в один jar-файл? Или вообще можно не писать интерфейс и абстрактный класс, а оставить просто класс?

Отслеживать
Anton Sorokin
задан 4 авг 2017 в 5:49
Anton Sorokin Anton Sorokin
7,008 6 6 золотых знаков 37 37 серебряных знаков 65 65 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Все эти блоки кода надо положить в один проект.
Затем создать jar-файл.
После этого импортируем этот файл в [другой] проект.

Отслеживать
ответ дан 4 авг 2017 в 7:30
Anton Sorokin Anton Sorokin
7,008 6 6 золотых знаков 37 37 серебряных знаков 65 65 бронзовых знаков

  • java
  • netbeans
  • библиотеки
  • jar
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Привязка библиотеки Java

Сообщество Android имеет множество библиотек Java, которые можно использовать в приложении. В этом руководство объясняется, как внедрить библиотеки Java в приложение Xamarin.Android, создав библиотеку привязок.

Обзор

Экосистема библиотек сторонних производителей для Android уже очень велика. С учетом этого часто лучше использовать готовую библиотеку Android, чем создавать новую. Xamarin.Android предлагает два способа использования таких библиотек:

  • Создайте библиотеку привязок, которая автоматически заключает библиотеку в программы-оболочки C#, позволяя обращаться к коду Java с помощью вызовов C#.
  • Используйте собственный интерфейс Java (JNI), чтобы отправлять вызовы напрямую в библиотеку кода Java. Платформа программирования JNI позволяет вызывать код Java из собственных приложений или библиотек. Она также является вызываемой.

В этом руководстве мы опишем первый вариант, то есть создание библиотеки привязок, которая заключает одну или несколько существующих библиотек Java в сборку, связанную с приложением. См. сведения об использовании JNI.

Xamarin.Android реализует привязки через вызываемые программы-оболочки Managed Callable Wrappers (MCW). MCW служат мостом для JNI, который используется при вызове кода Java из управляемого кода. Вызываемые оболочки управляемого кода поддерживают также подклассы типов Java и переопределение виртуальных методов для типов Java. Аналогично, когда управляемый код нужно вызывать из кода среды выполнения Android, это выполняется через другой мост JNI — Android Callable Wrappers (ACW). Эта архитектура показана на следующей схеме.

Архитектура моста Android JNI

Библиотека привязок — это сборка, содержащая вызываемые оболочки управляемого кода для типов Java. Предположим, нам нужно заключить тип Java MyClass в библиотеку привязок:

package com.xamarin.mycode; public class MyClass < public String myMethod (int i) < . >> 

Создав библиотеку привязок для JAR-файла, содержащую MyClass , мы сможем создать его экземпляр и обращаться к его методам прямо из кода C#:

var instance = new MyClass (); string result = instance.MyMethod (42); 

Чтобы создать библиотеку привязок, вам потребуется шаблон библиотеки привязок Java для Xamarin.Android. Полученный таким образом проект привязки содержит сборку .NET с несколькими классами MCW, один или несколько JAR-файлов и ресурсы для встроенных проектов библиотеки Android. Вы также можете создать библиотеки привязок для AAR-файлов (архив Android) и проектов библиотеки Android для Eclipse. Указывая ссылку на полученный DLL-файл сборки библиотеки привязок, вы сможете применить существующую библиотеку Java в проекте Xamarin.Android.

Создавая ссылки на типы из библиотеки привязок, нужно указывать пространство имен этой библиотеки привязок. Обычно директива using добавляется в начало файла исходного кода на C#, что является версией пространства имен .NET для имени пакета Java. Например, у пакета Java для вашего файла .jar привязки может быть следующее имя:

com.company.package 

Тогда вам потребуется включить следующий оператор using в начало файла с исходным кодом C#, чтобы получить доступ к типам из JAR-файла привязки:

using Com.Company.Package; 

При создании привязки для существующей библиотеки Android необходимо учитывать следующие моменты.

  • Существуют ли внешние зависимости у этой библиотеки? — Все зависимости Java, необходимые библиотеке Android, должны быть включены в проект Xamarin.Android как ReferenceJar или EmbeddedReferenceJar. Все собственные сборки должны быть добавлены в проект привязки как EmbeddedNativeLibrary.
  • Для какой версии Android API предназначена библиотека Android? — Невозможно «понизить» уровень API Android; Убедитесь, что проект привязки Xamarin.Android предназначен для того же уровня API (или выше), что и библиотека Android.
  • Какая версия JDK использовалась для компиляции этой библиотеки? — Ошибки привязки могут возникать, если библиотека Android была создана с использованием другой версии JDK, отличной от используемой в Xamarin.Android. Если есть возможность, перекомпилируйте библиотеку Android, используя ту же версию пакета JDK, которая используется в вашей установке Xamarin.Android.

Действия при сборке

При создании библиотеки привязок действия сборки задаются в JAR-файле или . AAR-файлы, которые вы включаете в проект библиотеки привязок. Каждое действие сборки определяет, как jar или . AAR-файл будет внедрен в вашу библиотеку привязок или будет ссылаться на нее. Эти действия сборки представлены в следующем списке.

  • EmbeddedJar — внедряет JAR-файл в итоговую библиотеку DLL библиотеки привязок в качестве внедренного ресурса. Это самое простое и самое распространенное действие сборки. Используйте этот вариант, если вам нужно автоматически компилировать .jar в байтовый код и распространять вместе с библиотекой привязок.
  • InputJar — не внедряет JAR-файл в итоговую библиотеку привязок .DLL. В этом варианта DLL-файл будет содержать зависимость времени выполнения от файла .jar. Используйте этот вариант, если вы не собираетесь включать .jar в библиотеку привязок (например, из-за ограничений лицензирования). Если вы выберете этот вариант, нужно обеспечить присутствие исходного файла .jar на всех устройствах, где будет выполняться приложение.
  • LibraryProjectZip — внедряет . AAR-файл в результирующий .DLL библиотеки привязок. Этот вариант аналогичен использованию EmbeddedJar за исключением того, что вы можете обращаться к ресурсам и коду из привязанного файла .aar. Выберите этот вариант, если вы решили включить файл .aar в библиотеку привязок.
  • ReferenceJar — указывает ссылочный JAR-файл: ссылочный JAR-файл является JAR-файлом , который является одним из привязанных .jar или . AAR-файлы зависят от. Ссылочный файл .jar используется только для разрешения зависимостей времени компиляции. Если вы укажете такое действие сборки, привязки C# для ссылочного файла .jar не создаются и он не включается в итоговый DLL-файл библиотеки привязок. Используйте этот вариант, если вы собираетесь создать дополнительную библиотеку привязок для ссылочного файла .jar, но она еще не готова. Это действие сборки удобно для упаковки нескольких файлов .jar и (или) файлов .aar в несколько взаимозависимых библиотек привязки.
  • EmbeddedReferenceJar — внедряет ссылочный JAR-файл в результирующий .DLL библиотеки привязок. Используйте это действие сборки, если вы собираетесь создать в библиотеке привязок привязки C# как для исходного файла .jar или .aar, так и для всех файлов .jar, на которые он ссылается.
  • EmbeddedNativeLibrary — внедряет собственный .so в привязку. Это действие сборки применяется для файлов .so, от которых зависит файл .jar, для которого создается привязка. Возможно, вам придется вручную загрузить библиотеку .so перед выполнением кода из библиотеки Java. Это действие описано ниже.

Более подробно действия сборки описаны в следующих руководствах.

Кроме того, указанные ниже действия сборки помогут вам импортировать документацию по API для Java и преобразовать их в документацию XML для C#.

  • JavaDocJar используется для ссылки на файл .jar архива Javadoc для библиотеки Java, которая соответствует стилю пакетов Maven (обычно это FOOBAR-javadoc**.jar** ).
  • JavaDocIndex используется для ссылки на файл index.html в справочной документации HTML по API.
  • JavaSourceJar дополняет JavaDocJar , чтобы сначала создать JavaDoc из исходных документов, а затем применить полученный результат как JavaDocIndex для библиотеки Java, которая соответствует стилю пакетов Maven (обычно это FOOBAR-sources**.jar** ).

Документация по API должна иметь стандартный формат doclet из пакетов SDK для Java 8, Java 7 или Java 6 (это три разных формата) или стиль DroidDoc.

Включение собственной библиотеки в привязку

Возможно, вам потребуется включить библиотеку .so в проект привязки Xamarin.Android в составе привязки библиотеки Java. При выполнении кода Java из оболочки Xamarin.Android не сможет вызвать JNI и выдаст ошибку java.lang.UnsatisfiedLinkError: Native method not found: (встроенный метод не обнаружен) в журнале LogCat для приложения.

Чтобы исправить это, вручную загрузите нужную библиотеку SO с помощью вызова Java.Lang.JavaSystem.LoadLibrary . Предположим для примера, что проект Xamarin.Android использует общую библиотеку libpocketsphinx_jni.so, включенную в проект с помощью действия привязки EmbeddedNativeLibrary. В этом случае следующий фрагмент кода (который нужно добавить перед использованием общей библиотеки) загрузит нужную библиотеку SO.

Java.Lang.JavaSystem.LoadLibrary("pocketsphinx_jni"); 

Адаптация API Java к C⧣

Генератор привязок Xamarin.Android заменяет некоторые идиомы и шаблоны Java в соответствии с технологиями .NET. В следующем списке описывается сопоставление Java с C#/.NET:

  • Методы получения и настройки в Java соответствуют свойствам в .NET.
  • Поля в Java соответствуют свойствам в .NET.
  • Прослушиватели и интерфейсы прослушивателей в Java соответствуют событиям в .NET. Параметры методов в интерфейсах обратного вызова будут представлены подклассом EventArgs .
  • Статический вложенный класс в Java соответствует вложенному классу в .NET.
  • Внутренний класс в Java соответствует вложенному классу с конструктором экземпляра в C#.

Сценарии привязки данных

Следующие руководства по привязке данных помогут вам правильно организовать одну или несколько библиотек Java для включения в приложение.

  • Руководство по использованию привязки файла .jar содержит пошаговую инструкцию по созданию библиотек привязок для файлов .jar.
  • Руководство по использованию привязки файла .aar содержит пошаговую инструкцию по созданию библиотек привязок для файлов .aar. Именно это руководство поможет вам создать привязку для библиотеки Android Studio.
  • Руководство по использованию привязки проекта библиотеки Eclipse включает пошаговую инструкцию по созданию библиотек привязок из проектов библиотек Android. Именно это руководство поможет вам создать привязку для проекта библиотеки Eclipse Android.
  • Руководство по настройке привязок описывает модификации, которые нужно вручную внести в привязки для устранения ошибок сборки и получения API, в большей степени соответствующего стандартам C#.
  • Руководство по устранению неполадок с привязками включает типичные сценарии возникновения ошибок, описывает возможные причины и предлагает рекомендации по их устранению.

Связанные ссылки

  • Работа с JNI
  • Метаданные GAPI
  • Использование собственных библиотек

Как создать свою библиотеку java

Чтобы создать свою библиотеку Java с использованием Gradle , следуйте этим шагам:

  • Установите Gradle на свой компьютер, если еще не установлен.
  • Создайте новый проект Gradle . Для этого запустите команду в командной строке или терминале в нужной вам директории:

Это создаст новый проект с заданной структурой каталогов и файлов для библиотеки Java

  • Откройте файл build.gradle в своем любимом редакторе и добавьте зависимости, если это необходимо. Вы можете добавлять зависимости на другие библиотеки Java , которые вы используете в своей библиотеке, например:
dependencies  implementation 'com.google.guava:guava:30.0-jre' testImplementation 'junit:junit:4.13.2' > 

Это добавляет зависимости на библиотеки Google Guava и JUnit для реализации и тестирования вашей библиотеки соответственно.

  • Создайте классы, интерфейсы и другие ресурсы для вашей библиотеки в директории src/main/java . Например, вы можете создать класс MyLibrary в пакете com.example.mylibrary следующим образом:
package com.example.mylibrary; public class MyLibrary  public static String getMessage()  return "Hello, World!"; > > 
  • Соберите свою библиотеку, запустив команду gradle build в командной строке или терминале. Это создаст JAR-файл вашей библиотеки в директории build/libs
  • Используйте свою библиотеку в других проектах Java , добавив зависимость на JAR-файл вашей библиотеки в файл build.gradle проекта, например:
dependencies  implementation files('libs/mylibrary.jar') > 

Это добавляет зависимость на JAR-файл mylibrary.jar , который вы создали в предыдущем шаге.

Вот пример кода для использования библиотеки в другом проекте Java :

import com.example.mylibrary.MyLibrary; public class Main  public static void main(String[] args)  String message = MyLibrary.getMessage(); System.out.println(message); // => "Hello, World!" > > 

Создание библиотеки

  1. В панели Проекты, щелкните правой кнопкой мыши по любому элементу модели, которую вы хотите конвертировать в библиотеку, и выберите Создать > Библиотеку из контекстного меню.
  2. Откроется диалоговое окно Новая библиотека AnyLogic.
  3. Задайте имя создаваемой библиотеки в поле Имя и при желании введите описание этой библиотеки в поле Описание.
  4. Щелкните мышью по кнопке Готово.
  5. Вы увидите редактор библиотек. Здесь вы можете дополнить общую информацию о библиотеке и настроить ее внешний вид в палитре.

Как мы можем улучшить эту статью?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *