因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64vmoptions(x86的机器修改studiovmoptions)中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件
并将其作为要使用的SDK的Java SDK。如下图
三、生成导入AS所需配置文件(ipr)
①编译源码(为了确保生成了java文件,如Rjava;如果编译过,则无需再次编译)
②检查out/host/linux-x86/framework/目录下是否有idegenjar
如果idegenjar不存在,执行:
mmm development/tools/idegen/
在501的源码中会生成resjava的文件夹,导致idegenjar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。
我的分享里有修改这个bug的patch,或者直接使用我分享的idegenjar。
③执行
development/tools/idegen/idegensh
等待出现类似下面的结果:
Read excludes: 5msTraversed tree: 44078ms
这时会在源码的根目录下生成androidipr和androidiml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件
Tips:
AS在导入代码时比较慢,建议先修改androidiml,将自己用不到的代码exclude出去可以仿照过滤repo文件夹的语法,如:
<excludeFolder url="file://$MODULE_DIR$/repo" /><excludeFolder url="file://$MODULE_DIR$/abi" /><excludeFolder url="file://$MODULE_DIR$/art" />
删除掉所有不需要的module-library项 PS:感谢 @dezng 的建议
这样在导入时就会跳过abi和art文件夹过滤的越多,AS的处理速度就会越快
④在AS中打开源码根目录下新生成的androidipr
如果在导入时AS出现
则建议按照其给定的解决方法来解决
四、解决源码中跳转错误问题
①为当前工程设置正确的SDK和JDK
②设置'Modules'的依赖
先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了jar,在将它们的路径添加进来就可以了
如:501的ContactsCommon用到了geocoder-29jar和libphonenumber-62jar)
点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or directories'选项,依次将frameworks和external文件夹添加进来如:
其它版本的代码在添加frameworks时可能会显示成:
没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的
如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可
五、DEBUG源码
我们可以通过给刚导入的工程在'Modules'中添加'Android Framework'来让AS将它作为一个Android工程,从而方便我们调试代码
可以按照上图中'1'和'2'来添加Android Framework支持
在代码中加断点,然后选择'Run'->'Attach debugger to Android process'或者直接点击下图所示的图标
在d出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可
六、其它
代码中很多地方提示Call requires API Level x 出现这个问题是因为AS将我们的工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion
我们只需在源码根目录加一个声明minSdkVersion的AndroidManifestxml文件即可(分享了一个AndroidManifestxml)。
也可以考虑使用buildgradle来解决该问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)