文章目录
- 配置
- 下载AS
- 编译
- 源码依赖导入
- 玩一下andorid.iml
注意:
- 有些时候发现为啥自己编译就这么难呢?不是卡死就无数次重启虚拟机,一切的原罪在配置过低,换句话说就是穷。
- 关于导入源码的下载参考 Android Studio for Platform (ASfP) 使用教程
- 内存消耗非常惊人!!! 建议编译内存在32G,避免出现卡顿甚至卡死,因为即使有交换内存仍然会卡顿,如下一共使用到11+8≈20G内存之多,加上Ubuntun本地内存高达7G左右,如果是虚拟机开发,建议直接上64G内存。
配置
1. 选择android.ipr导入源码
2. 建立一个空的jdk, 并设置为工程依赖的jdk
3. 删除所有的依赖库
4. 将frameworks和external目录作为依赖,并调整依赖优先级
5. 将out/target/common/R/设置为依赖
6. 将不需要的目录从索引中删除,提高检索速度**
下载AS
下载
https://developer.android.com/studio/install?hl=zh-tw#linux
3.双击解压到 :/opt/android-studio
创建快捷方式
/usr/share/applications/android-studio.desktop
[Desktop Entry]
Encoding=UTF-8
Name=RealAndroidStudio
Comment=RealAndroidStudio
Exec=/opt/android-studio/bin/studio.sh
Icon=/opt/android-studio/bin/studio.png
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
编译
soruce build/envsetup.sh
lunch sdk_phone_x86_64
make -j8
mmm development/tools/idegen/
. development/tools/idegen/idegen.sh
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
- android.ipr:通常是保存工程相关的设置,比如编译器配置,入口,相关的libraries等
- android.iml:则是主要是描述了modules,比如modules的路径,依赖关系等.
- android.iws:则主要是包含了一些个人工作区的设置.
修改 iml 内容
gedit /data/android-11.0.0_r9/android.iml
- 源码只需要external(第三方依赖),frameworks(框架)
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/external" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/frameworks" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/ndk" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/rc_projects" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/trusty" />
</content>
完成之后,按照上面说的步骤,使用Android Studio选中"android.ipr"打开项目即可。
源码依赖导入
如果之前没有删除orderEntry* 会出现很多依赖项,直接删除,然后导入frameworks和external源码依赖*
导入后提示如下
玩一下andorid.iml
1. 我们删除整个项目
2. 打开iml 发现sourceFolder直接消失了,只剩下orderEntry 依赖
3.重新打开Project Structure
4.选择framework 和packages 发现右边多了些Source Folders的源文件
https://blog.csdn.net/ChaoLi_Chen/article/details/121947970
https://juejin.cn/post/6859181913232375815
https://juejin.cn/post/7216495812577427517
https://www.jianshu.com/p/30a628335114
https://blog.csdn.net/qq_20330595/article/details/133764506