Mac下 Android系统编译以及debug

Mac下 Android系统编译以及debug

准备工作

https://source.android.com/source/initializing#setting-up-a-mac-os-x-build-environment

  • 遇到的问题
  1. 安装MacPort后 port命令不生效,需要先设置一下环境变量PATH,把port加进去
  2. 用port下载插件的时候显示xcode不能够使用,需要先从app store里面下载xcode

下载源码

下载方法:
https://source.android.com/source/downloading

google镜像太慢了用清华的镜像
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

编译

  1. 1
    2
    3
    4
    5
    6
    make: *** Waiting for unfinished jobs....
    frameworks/base/tools/aidl/aidl_language_l.l:55: warning, rule cannot be matched
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

解决:https://stackoverflow.com/questions/46651181/mac-illegal-instruction-4

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Import includes file: out/host/darwin-x86/obj/EXECUTABLES/aidl_intermediates/import_includes
    Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
    prebuilts/misc/darwin-x86/bison/bison -d -o out/host/darwin-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
    /bin/bash: prebuilts/misc/darwin-x86/bison/bison: is a directory
    make: *** [out/host/darwin-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 126
    make: *** Waiting for unfinished jobs....
    Export includes file: frameworks/base/tools/aidl/Android.mk -- out/host/darwin-x86/obj/EXECUTABLES/aidl_intermediates/export_includes
    Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
    frameworks/base/tools/aidl/aidl_language_l.l:55: warning, rule cannot be matched
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
    注: 某些输入文件使用了未经检查或不安全的操作。
    注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

解决:bison目录错误

Bison 版本可能不对,更换版本brew bison

  1. 报错Abs下面有箭头

    解:不能用xcode9.3换成xcode8.3就可以了

  2. 1
    system/core/libcutils/threads.c:38:10: error: 'syscall' is deprecated: first deprecated in OS X 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost(). [-Werror,-Wdeprecated-declarations]

去到/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs,发现MacOSX10.11.sdk已经被删除,只剩下MacOSX10.12.sdk,所以首先要去下载10.11的SDK。可以去MacOSX-SDKs下载MacOSX10.11.sdk,解压拷贝到/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs。为了避免下次升级的时候再被删除,可以放到~/Document/MacOSX10.11.sdk,再给它创建一个软链接:

开发

1
2
3
4
➜  WORKING_DIRECTORY fastboot oem unclok
...
FAILED (remote: unknown command)
finished. total time: 0.023s

解:在开发者模式里面的先unlock了再做处理

导入

先在源码目录中执行:

1
make idegen && development/tools/idegen/idegen.sh

之后生成两个文件
然后AS打开生成的文件
配置过程

  1. sdk里面增加AOSP
  2. dependice删除依赖
  3. source里面设置R文件关联
  4. project里面的选择
  5. model里面增加android项目(为了debug)

  6. 根目录里面增加manifest(API Leve报错)

    遇到的问题:

    增加sdk的时候需要先增加JDK(没有删除jar包的jdk(完整的JDK))


添加的时候Library这样进shift+commend+g,添加的目录为sdk就可以了

可以bebug了!

谢谢您的鼓励~