Как добавить внешнюю библиотеку Java в пользовательский фреймворк Android? - PullRequest
2 голосов
/ 16 ноября 2011

Может ли кто-нибудь объяснить мне, как включить внешний Java-фреймворк в Android-фреймворк и скомпилировать его как часть пользовательского фреймворка Android?

Идея состоит в том, чтобы сделать этот внешний фреймворк частью моего пользовательского андроида.Framework и выставить его в качестве службы Android для использования другими процессами.

По сути, я сделал -

  1. проверен на наличие порта Android в Java Framework
  2. Скопированокаталог src (включая все внешние файлы jar) из перенесенного фреймворка в framework/base/core/java/android/
  3. Отредактированный ActivityManager в фреймворке для вызова скопированной библиотеки
  4. run make

Правильный ли это подход для редактирования фреймворка Android?Так как я включаю java-файлы и связанные внешние jar-файлы внешнего проекта в платформу Android, я подозреваю, что make завершается неудачно при преобразовании jar-файлов в dex.

Может кто-нибудь указать мне на любые доступные ресурсы, связанные с внутренними компонентами Android Frameworkи о том, как редактировать платформу Android?

Я проверил Tutorial: Android Internals - Building a Custom ROM, Pt. 2 of 2 на YouTube из презентации Марко Гаргента этого года в Пекине, Китай.Но он не сделал это (то есть добавление внешнего фреймворка или jar-файлов) либо ясно.

Ответы [ 2 ]

4 голосов
/ 04 января 2012

Во-первых: я не очень разбираюсь в процессе сборки Android, поэтому может быть и лучшее решение, но оно должно работать (по крайней мере для Android 2.2).

Я предполагаю, что вы используете Eclipse для модификации исходного кода и уже успешно выполнили make -j4 ...

  • Создать новую исходную папку: external/<your-library>/src
  • Скопируйте все исходные файлы Java в эту папку.
  • Откройте следующий файл make: <android>/frameworks/base/Android.mk
  • Найдите # Build ext.jar и добавьте свою библиотеку следующим образом:

    [...]
    ext_dirs := \
        ../../external/apache-http/src \
        ../../external/<your-library>/src \
        ../../external/gdata/src \
        ../../external/protobuf/src \
        ../../external/tagsoup/src
    [...]
    
  • Теперь вы сможете получить доступ к этим библиотекам из платформы Android ...
  • Наконец, выполните make -j4 ext, чтобы собрать только внешний модуль,
  • или make -j4 для сборки всех измененных файлов (если предыдущая сборка существует в /out/).
1 голос
/ 08 января 2015

README.txt из git repo в https://android.googlesource.com/platform/vendor/sample - хороший пример того, как это сделать.Хорошо бы клонировать его, чтобы увидеть примеры.

По сути, вам нужно создать jar-файл и добавить его в файловую систему, добавить конфигурацию xml в /system/etc/permissions/ и объявить <uses-library> в apk's AndroidManifest.xml.

В моем случае у меня была проблема с добавлением <uses-library> в неправильном месте (не в <application>).

Так что хорошо бы проверить результат с помощью:

$ aapt dump badging Foo.apk | grep uses-library
uses-library:'android.foo'
...