AOSP: как создать / platform /frameworks/base или /platform /frameworks / support отдельно в Android Studio

#android #android-source

#Android #android-исходный код

Вопрос:

Есть ли способ создать исходный код пакета / platform / frameworks / base для AOSP или источник библиотеки поддержки отдельно в Android Studio.

Я хотел прочитать код фреймворка (базовый и вспомогательный) в Android Studio, и поскольку я не хотел беспокоиться об остальных пакетах в AOSP, я импортировал зеркальное репозиторий этих двух пакетов как два отдельных проекта в Android Studio. Я хочу просмотреть код, используя ярлык «перейти к исходному коду» (cmd / ctrl click) среды IDE. Но эта удобная функция просто не будет работать должным образом в Android Studio. Когда я пытаюсь перейти к определению метода, которое принадлежит другому исходному файлу Java (он говорит — «Не удается найти объявление для перехода»). Это ограничение редактора исходного кода связано с ошибкой сборки gradle. Проект просто не будет собран и выдает следующую ошибку.

Ошибка: вам нужна символическая ссылка в prebuilts/sdk/99, которая указывает на prebuilts/sdk/current .Без этого studio не сможет понять текущий SDK. ln -s ../../готовые / sdk/текущие ../../готовые / sdk/99

Есть ли способ это исправить. Я знаю, что могу просто просмотреть исходный код на http://androidxref.com / тоже, но это не так удобно и мощно, как ваша IDE.

Комментарии:

1. Просматривать его будет намного проще, чем создавать . В любом случае смотрите боковую панель — это вопрос того типа, который уже много раз рассматривался в его ограничениях и возможностях.

Ответ №1:

Это возможно (если Android Studio сможет показать вам код фреймворка и позволит вам использовать обычные инструменты IDE), хотя компиляция не будет работать. Но детали в вашем вопросе, похоже, указывают на то, что вы на самом деле не заботитесь о компиляции, а только о просмотре / редактировании.

Первые шаги, перечисленные здесь: http://ronubo.blogspot.com/2016/01/debugging-aosp-platform-code-with.html может сработать и для вас. В основном:

  1. Создайте свою платформу AOSP ( . build/envsetup.sh amp;amp; обед — amp;amp; приготовить …)
  2. Создайте проект Android Studio для импорта в ( mmm development /tools / idegen amp;amp; development/tools/idegen/idegen.sh )
  3. Импортируйте проект (откройте android.ipr из Android Studio)

Комментарии:

1. Это именно то, что я искал. Спасибо. Это означает, что мне все равно придется клонировать весь AOSP. Правильно? Каким будет его размер? Около 25 ГБ или более? Могу ли я использовать для этого внешний жесткий диск, поскольку на моем компьютере всего около 10-12 ГБ свободного места (это всего 128 ГБ SSD. 🙁 ).

2. Он довольно большой. Вам не нужно подавляющее большинство из них, но разобраться, какие части вам нужны, непросто. После запуска idegen вам, конечно, не нужно ничего, кроме источников, которые вас действительно интересуют, поэтому вы можете выполнять эту часть где угодно.

Ответ №2:

Не без огромных усилий.

По очень многим причинам.Например:

1. фреймворк зависит от разных HAL и библиотек из system / bionic / external

2. При компиляции фреймворка используются специальные инструменты из linux (flex, bison, libgl и т. Д.)

3. Фреймворк создается с использованием Android.mk система и нуждается в большом количестве флагов и макросов компиляции из сборки/

Я также не могу представить мотивацию делать то, что вы пытаетесь сделать. Если он будет работать на любом устройстве, имейте в виду, что производители устройств сильно модифицируют фреймворк, даже самые маленькие. На самом деле производители чипсетов модифицируют его и передают производителям, которые модифицируют его еще больше.

Ответ №3:

Ошибка: вам нужна символическая ссылка в prebuilts/sdk/99, которая указывает на prebuilts/sdk/current .Без этого studio не сможет понять текущий SDK. ln -s ../../готовые / sdk/текущие ../../готовые / sdk/99

В этом уведомлении уже указано, что вы должны выполнить команду:

ln -s ../../prebuilts/sdk/current ../../prebuilts/sdk/99

Чтобы сообщить системе сборки, используйте «текущую версию sdk» в prebuilts/sdk/current каталоге, замените временную версию sdk 99.

не могли бы вы попробовать?