Android Jar библиотеки
Как настроить проект, который может привести к файлу библиотеки jar, который может быть использован для android? Я хочу создать пользовательскую библиотеку для всех проектов.
несколько вопросов:
- должен ли он быть скомпилирован против конкретной версии Android sdk?
- когда пакет android компилируется против библиотеки jar, классы, необходимые для работы с кодом, компилируются с основным кодом в apk или весь jar получает в том числе?
- какие-либо заметные оптимизации или подводные камни, о которых мне нужно знать, используя jar вместо прямой интеграции кода?
- нужно ли подписывать банку, как это нужно apk?
7 ответов:
Google просто выпустить новую версию SDK, который обрабатывает общие библиотеки!
https://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject
ADT 0.9.7 (май 2010)
библиотека проектов:
плагин ADT теперь поддерживает использование библиотечных проектов во время развития, возможность которая позволяет сохранять общий Андроид код приложения и ресурсы отдельный девелоперский проект. Вы можете затем обратитесь к проекту библиотеки из других проектов Android и, в время сборки, инструменты компилируют общий код и ресурсы как часть зависимые приложения. Больше информация об этой функции доступно в разработке в Eclipse с документом ADT. Если это не так разработка в Eclipse, SDK Tools r6 предоставляет эквивалентную библиотеку поддержка проекта через муравейники строить система.
нет ничего особенного, что вам нужно сделать для настройки вашего проекта, чтобы создать файл jar, который будет работать в приложении для Android. Просто создать обычный Java-проект в Eclipse.
Он не должен быть скомпилирован против Android вообще. Вы можете включить любой файл jar, если он не ссылается на классы, которые не включены в Android. Просто включите файл jar в свой путь сборки ваших проектов Android в Eclipse, и он автоматически будет включен в ваш APK файл.
Не уверен, но я предполагаю, что все классы в файле jar будут включены в APK.
Я не думаю, что просто включение некоторых классов в jar против непосредственно в проекте будет иметь какое-либо значение в результирующем APK.
Я задал себе тот же вопрос: Могу ли я экспортировать и повторно использовать макет в Android. Я попробовал следующее: экспортируйте проект с XML-ресурсами в файл JAR, а затем попробуйте получить доступ к макету через его R. layout. Конечно, это не сработало, как и R. layout.main было целое число, то же самое целое число, которое было связано с одним макетом (относительным.xml), определенный в макете R. хост-проекта.
Android SDK компилирует XML-файлы макета в ресурсы представления и в виде XML-файлов в включенный файл JAR не является XML-файлами макета, они не компилируются, и никакой идентификатор не связан с ними в R. layout.
Если вы хотите экспортировать макет из своего проекта, то вы должны экспортировать его как XML и импортировать его в новый проект как ресурс макета, а не как часть внешней библиотеки.
Если вы хотите повторно использовать макеты из JAR, вам нужно создать подкалы представления и построить макет из кода. Чем вы можете создать его экземпляр и установить созданный экземпляр в качестве Просмотр действия или добавление экземпляра в представление действия.
эта работа для меня!!!. если вы хотите использовать .jar-файл в ваше приложение из проекта библиотеки, который использует такие ресурсы, как
attrs.xml
(и предположим, что другие, такие как макеты, строки и т. д.), которые генерируют R.java. вы должны в eclipse перейти кexport->Java/Jar file->
и проверить экспортировать все выходные папки для зарегистрированногоprojects -> Finish
... это гарантирует, что во время выполнения ваше приложение, которое использует эту банку, не создает исключение для отсутствующих классов и ресурсов.конечно, чтобы включить банку в вас новый проект перейти к.
project properties-> Java build path -> Libraries -> Add external jar ->
и вы сделали.надеюсь, что это поможет!
чтобы создать файл jar, вы должны использовать опцию экспорта Eclipse. В диалоговом окне экспорт выберите java и jar подопции. Затем появится мастер, в котором вам нужно сделать некоторые выборы. Вам нужно указать место, где будет храниться файл jar.
ошибка, которую я сделал в первый раз, когда я создал файл jar, должна была включать Манифест Android. При добавлении созданного файла jar я получил конфликт двойного манифеста android.
вы можете использовать пользовательский метод для динамического доступа к R-файлу, пример ссылки приведен ниже.
упаковка файлов ресурсов Android в распространяемый файл Jar
public static int getResourseIdByName(String packageName, String className, String name) { Class r = null; int id = 0; try { r = Class.forName(packageName + ".R"); Class[] classes = r.getClasses(); Class desireClass = null; for (int i = 0; i < classes.length; i++) { if(classes[i].getName().split("\$")[1].equals(className)) { desireClass = classes[i]; break; } } if(desireClass != null) id = desireClass.getField(name).getInt(desireClass); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return id; }