Android AOSP与IntelliJ思想

Android AOSP与IntelliJ思想,android,android-source,Android,Android Source,有人尝试过使用IntelliJ IDEA与AOSP合作吗?我在Android sources中看到了一个特定的文件夹(development/ide/intellij),但我找不到任何关于如何在Android开发中使用它的信息(对于Eclipse,信息可以在这里找到:)有人能提供类似的说明如何在IDEA中开始开发Android吗 从AOSP根文件夹 1) 首先建立你的目标。这将生成在aosp构建期间需要生成的任何java文件。 2) 使用lndir创建aosp dir的阴影dir。 假设您的ao

有人尝试过使用IntelliJ IDEA与AOSP合作吗?我在Android sources中看到了一个特定的文件夹(development/ide/intellij),但我找不到任何关于如何在Android开发中使用它的信息(对于Eclipse,信息可以在这里找到:)有人能提供类似的说明如何在IDEA中开始开发Android吗

从AOSP根文件夹

1) 首先建立你的目标。这将生成在aosp构建期间需要生成的任何java文件。 2) 使用lndir创建aosp dir的阴影dir。 假设您的aosp目录为~john/work/aosp/ics。 然后创建~/john/work/aosp/icsshadow

Cd到icsshadow并调用“lndir../ics”。这将创建指向ics下所有内容的符号链接

3) 现在,您可以使用icsshadow处理IDE需要/生成的所有内容。如果使用ics文件夹,如果IDE生成任何构建工件,aosp构建有时会失败

4) cd到卷影目录。 调用development/tools/idegen/idegen.sh

等到它完成


5) 如果要使用IntelliJ,请从icsshadow文件夹打开android.ipr。如果您想使用Eclipse,请检查。

这里也是一本不错的读物:

如果你得到

找不到idegen.jar。请先运行make

您需要首先生成它:

source build/envsetup.sh
cd development/tools/idegen
mm
croot
development/tools/idegen/idegen.sh
请准备好,IJ中的AOSP文件索引需要很长的时间(在我的笔记本上有一个SSD,超过1小时),这是使用Eclipse的原因,因为我相信它不需要构建索引,所以加载AOSP代码的速度要快得多

通过删除您不感兴趣的AOSP部分来减少android.iml文件是值得的。您可以通过正则表达式模式将它们添加到
development/tools/idegen/excluded path
,请参见此处的自述文件

我在
排除的路径中添加了以下行:

^cts
^developers
^development
^external
.*/tests/.*
^sdk
因此,我的
android.iml
在大约1-2分钟内得到了相当中等的大小和负载

idegen还有
intellij-gen.sh
,可以为给定模块生成IJ项目

正如上面文章中提到的,您可以调整IJ以更快地工作(添加更多RAM等)。下面是我的idea64.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

你可以在谷歌上搜索idea.vmoptions优化,这里有一些关于它的帖子(以及我获取IJ配置的地方)

通过进入
development/tools/idegen
路径并查看
自述文件,可以找到官方说明。自己读是个好主意。这是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's 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


您可以通过阅读此处来修复错误消息:

从Android源根目录运行以下命令

make idegen -j4 && development/tools/idegen/idegen.sh
然后启动IntelliJ idea,并选择生成的.ipr文件。然后在下一个屏幕上选择基于.ipr的项目属性


对我来说,这比使用android studio更有效,因为android studio一直有一个恼人的背景扫描。

Mac OS X不再有lndir,它可以工作。使用android studio使用android-5对其进行测试。它可以工作,但如果“out”目录不是默认目录,则必须在第7行的“development/tools/idegen/idengen.sth”中进行更改。“idegenjar=
find**out**name idegen.jar-follow | grep-v intermediates
”对于您的out目录,它可以完美地工作,并通过RK3399源代码验证。这应该是公认的答案。我在下面尝试了@Jacob Abraham的答案,但运气不好,这可能是因为我的代码库与googlesource repos中的股票AOSP不同。很遗憾,自述文件没有更新,这不再正确-您没有在顶级运行make to build,而development/tools/idegen/idegen.sh现在只给出了一个错误。有人知道如何在2020年做到这一点吗?下面的答案不再正确。@JamesMoore您应该提供更多不适用于您的详细信息,并可能向AOSP bug tracker提交问题,请参阅