macOS High Sierra编译android9.0源码

创建分区

由于mac系统文件系统是大小写不敏感的系统,所以需要在mac中创建一个支持大小写敏感的文件系统。

  • 创建分区

    安卓9.0编译后比较大,笔者编译完成占用了140多G的空间,所以建议直接设置150G

    sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 150g ~/android.dmg

  • 挂载分区

    sudo hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android

  • 卸载分区

    hdiutil detach /Volumes/android

  • 进入分区

    cd /Volumes/android

  • 改变分区大小

    扫描二维码关注公众号,回复: 6188685 查看本文章

    hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

安装Repo工具

  • 创建目录 : mkdir ~/bin
  • 写入到path中 : PATH=~/bin:$PATH
  • 下载Repo
   curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
   chmod a+x ~/bin/repo
  • 将Repo中的下载地址改为清华大学的镜像源。
    编辑~/bin/repo 文件,修改REPO_URL为的源地址

    REPO_URL = 'https://gerrit-googlesource.lug.ustc.edu.cn/git-repo'

下载

  • 进入分区

    cd /Volumes/android

  • 创建目录

   mkdir android9
   cd android9
  • 下载指定分支的代码

    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r1

  • 下载

    下载可以开始下载了
    输入下面命令repo sync -j4就开始下载了,但是由于安卓源码较大,下载时间很长,在下载的过程中难免出现很多问题,所以下面创建下面的中断后自动下载的脚本进行下载.

  • 创建下载中断后自动下载的脚本

    #!/bin/bash
    PATH=~/bin:$PATH
    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r1
    repo sync -j4
    while [ $? = 1 ]; do
    echo "================sync failed, re-sync again ====="
    sleep 3
    repo sync -j4
    done
    

    保存为 sync.sh
    提升权限:chmod a+x sync.sh
    执行脚本开始下载:./sync.sh

  • 下载完成

    ...
    Syncing work tree: 100% (668/668), done.
    

    下载后的目录

    yumodeMacBook-Pro:android9 yumo$ tree -L 1 -a
    .
    ├── .repo
    ├── Android.bp -> build/soong/root.bp
    ├── Makefile
    ├── art
    ├── bionic
    ├── bootable
    ├── bootstrap.bash -> build/soong/bootstrap.bash
    ├── build
    ├── compatibility
    ├── cts
    ├── dalvik
    ├── developers
    ├── development
    ├── device
    ├── external
    ├── frameworks
    ├── hardware
    ├── kernel
    ├── libcore
    ├── libnativehelper
    ├── packages
    ├── pdk
    ├── platform_testing
    ├── prebuilts
    ├── sdk
    ├── sync.sh
    ├── system
    ├── test
    ├── toolchain
    └── tools
    
    26 directories, 4 files
    

    如果容量有限,此时可以删除掉.repo文件了.

编译

配置JDK

  • 查看Java的home位置:/usr/libexec/java_home

  • 在~/.bash_profile文件中配置JAVA_HOME

    JAVA_HOME=`/usr/libexec/java_home`
    export JAVA_HOME
    
  • 使配置文件生效:source ~/.bash_profile

  • 查看配置:echo $JAVA_HOME

编译

  • 设置环境变量

    /Volumes/android/android9 执行:source build/envsetup.sh

  • 选择设备

    输入lunch

yumodeMacBook-Pro:android9 yumo$ lunch

You're building on Darwin

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_mips-eng
     4. aosp_mips64-eng
     5. aosp_x86-eng
     6. aosp_x86_64-eng
     7. full_fugu-userdebug
     8. aosp_fugu-userdebug
     9. car_emu_arm64-userdebug
     10. car_emu_arm-userdebug
     11. car_emu_x86-userdebug
     12. car_emu_x86_64-userdebug
     13. mini_emulator_arm64-userdebug
     14. m_e_arm-userdebug
     15. m_e_mips-userdebug
     16. m_e_mips64-eng
     17. mini_emulator_x86-userdebug
     18. mini_emulator_x86_64-userdebug
     19. aosp_dragon-userdebug
     20. aosp_dragon-eng
     21. aosp_marlin-userdebug
     22. aosp_marlin_svelte-userdebug
     23. aosp_sailfish-userdebug
     24. aosp_angler-userdebug
     25. aosp_bullhead-userdebug
     26. aosp_bullhead_svelte-userdebug
     27. hikey-userdebug

Which would you like? [aosp_arm-eng]

这里选择6, aosp_x86-eng模式

  • 开始编译

make -j16

其中-j后面的表示开始16个线程进行进行编译.

  • 查看CPU和线程数

sysctl machdep.cpu

......
machdep.cpu.core_count: 4
machdep.cpu.thread_count: 8
......

编译过程中错误

  • 添加 mac 版本
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -b out/soong -d out/soong/build.ninja.d -o out/soong/build.ninja Android.bp
internal error: Could not find a supported mac sdk: ["10.10" "10.11" "10.12"]
ninja: build stopped: subcommand failed.
12:43:18 soong bootstrap failed with: exit status 1
make: *** [run_soong_ui] Error 1

如果发生上面的错误,就说明需要添加了支持macSdk的版本,打开build/soong/cc/config/x86_darwin_host.go文件,添加最新的当前mac的系统版本

darwinSupportedSdkVersions = []string{
    "10.8",
    "10.9",
    "10.10",
    "10.11",
    "10.12",
    "10.13",
}

编译完成后启动模拟器

输入emulator命令后,就可以启动模拟器了.

参考

猜你喜欢

转载自blog.csdn.net/wangkaishou/article/details/89855766