AOSP и IntelliJ IDEA

Кто-нибудь пытался работать с AOSP, используя IntelliJ IDEA? Я вижу в Android-источниках определенную папку (development/ide/intellij), но я не могу найти никакой информации о том, как ее использовать в случае разработки Android (для Eclipse информацию можно найти здесь: http://source.android.com/source/using-eclipse.html) Может ли кто-нибудь предоставить аналогичные инструкции, как начать разработку Android в IDEA?

Ответ 1

Также хорошее чтение здесь: https://shuhaowu.com/blog/setting_up_intellij_with_aosp_development.html

Если вы получите

Couldn't find idegen.jar. Please run make first.

Сначала вам нужно его сгенерировать:

source build/envsetup.sh
cd development/tools/idegen
mm
croot
development/tools/idegen/idegen.sh

Будьте готовы к тому, что индексация файлов AOSP в IJ занимает много времени (более 1 часа на моем ноутбуке с твердотельным накопителем на борту), что является причиной для использования Eclipse, поскольку я считаю, что нет необходимости создавать индексы, поэтому загружает код AOSP много быстрее.

Стоит уменьшить файл android.iml, удалив ненужные части AOSP. Вы можете добавить их в development/tools/idegen/excluded-paths с помощью шаблона регулярного выражения, см. файл README там.

Я добавил следующие строки в excluded-paths:

^cts
^developers
^development
^external
.*/tests/.*
^sdk

так что мой android.iml получил довольно умеренный размер и вместо этого загружается примерно через 1-2 минуты.

Idegen также имеет intellij-gen.sh, который может генерировать IJ-проект для данного модуля.

Как упоминалось в статье выше, вы можете настроить IJ для более быстрой работы (добавьте больше оперативной памяти и т.д.). А вот и моя идея64.vmoptions на всякий случай:

-server
-Xms2048m
-Xmx4096m
-XX:MaxPermSize=1024M
-XX:ReservedCodeCacheSize=1024M
-XX:+UseCodeCacheFlushing
-XX:+UseCompressedOops
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:ParallelGCThreads=8
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:-TraceClassUnloading
-XX:+TieredCompilation
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false

Вы можете оптимизировать Google idea.vmoptions, о нем есть некоторые сообщения (и откуда я взял свой IJ-конфиг)

Ответ 2

В корневой папке AOSP,

1) Сначала создайте свою цель. Это сгенерирует любые java файлы, которые должны быть созданы во время сборки aosp. 2) Создайте теневой каталог из каталога aosp, используя lndir. Предполагая, что ваш дилер aosp ~ john/work/aosp/ics. Затем создайте файл ~/john/work/aosp/icsshadow

Cd to icsshadow и вызвать "lndir../ics". Это создаст символические ссылки ко всему под ics.

3) Теперь вы используете icsshadow для всего, что вам нужно/генерирует IDE. Если вы используете папку ics, сборка aosp несколько раз терпит неудачу, если среда IDE генерирует любые артефакты сборки.

4) cd в каталог icsshadow. Invoke development/tools/idegen/idegen.sh

Подождите, пока это не будет выполнено.

5) Если вы хотите использовать IntelliJ, откройте android.ipr из папки icsshadow. Если вы хотите использовать Eclipse, проверьте Использование Eclipse для редактирования/просмотра кода AOSP.

Ответ 3

Официальные инструкции можно найти, перейдя по пути development/tools/idegen и проверив файл README. Это хорошая идея, чтобы прочитать это самостоятельно. Это содержимое для IntelliJ:

Если вы используете IntelliJ...

Если вы впервые используете IDEGen...

  IDEA needs a lot of memory. Add "-Xms748m -Xmx748m" to your VM options
  in "IDEA_HOME/bin/idea.vmoptions" on Linux or
  "IntelliJ IDEA.app/Contents/Info.plist" on OS X.

  Create a JDK configuration named "1.6 (No Libraries)" by adding a new
  JDK like you normally would and then removing all of the jar entries
  under the "Classpath" tab. This will ensure that you only get access to
  Android core libraries and not those from your desktop VM.

В корневом каталоге проекта...

   Repeat these steps after each sync...

  1) make (to produce generated .java source)
  2) development/tools/idegen/idegen.sh
  3) Open android.ipr in IntelliJ. If you already have the project open,
     hit the sync button in IntelliJ, and it will automatically detect the
     updated configuration.

  If you get unexpected compilation errors from IntelliJ, try running
  "Build -> Rebuild Project". Sometimes IntelliJ gets confused after the
  project changes significantly.

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

Не удалось найти idegen.jar. Сначала запустите make.

Вы можете исправить сообщение об ошибке, прочитав здесь: https://www.protechtraining.com/blog/post/860?ncr=1

Ответ 4

Запустите приведенную ниже команду из корневого каталога источника Android.

make idegen -j4 && development/tools/idegen/idegen.sh

Затем запустите идею IntelliJ и выберите сгенерированный файл .ipr. Затем на следующем экране выберите свойство проекта на основе .ipr.

Работает для меня и лучше, чем использование андроид-студии, потому что в андроид-студии постоянно раздражает фоновое сканирование.