在Mac 10.9 Mavericks段错误中从Android源代码构建aapt或在10.8 Mountain Lion上发出“非法指令4”

时间:2013-10-24 17:53:47

标签: java android c++ macos android-source

这是一个非常具体的问题,但我已经没有想法,我希望有一些新方向。

我已按照此处的说明从Android开源项目下载了Android源代码:

http://source.android.com/source/building.html

我按照Mac特有的所有步骤(区分大小写的磁盘映像,生成v3.81,文件描述符设置为1024),并按照网站上的建议将构建设置为'lunch full-eng'。我有整个树,有了这些设置,我可以构建它,我在我的机器上没有问题。

具体来说,我对aapt(在frameworks / base / tools / aapt中)进行了一些更改,然后我将其清理(make clean-aapt)然后重建(make aapt)。它构建没有问题。当我从命令行运行aapt时,它运行正常并且不会崩溃。我正在Mac 10.9 Mavericks上完成所有这些结账/构建。

接下来,我将新建的aapt二进制文件发送给运行Mac 10.8 Mountain Lion的同事,并在执行后立即进行段错误。

我想也许这是我的改动,所以我删除了我添加的所有内容。清洁和重建。同样的问题。这绝对不是我的改变。

我的猜测是我需要将其设置为启用了一些兼容性标志,但我不确定要设置什么或在何处设置它。有没有人有我想看的想法?

1 个答案:

答案 0 :(得分:2)

好的,我明白了,所以为了后代,我会在这里发布我的解决方案。

在AOSP成立和Mavericks发布之间,Mac OSX SDK的位置发生了变化。它曾经位于这里:

/Developer/SDKs/MacOSX10.x.sdk其中x是您要使用的版本。

但最近对XCode的更改已将较新的SDK(10.8和10.9)移至XCode.app包中,并取消了较旧的SDK。但是,我发现并下载了以前的SDK集,以备不时之需:从这里开始:

http://aaronwallace.github.io/MacOSX_SDKs/

我将它们复制到/Developer/SDKs,将一个名为MAC_SDK_VERSION的环境变量设置为我想要构建的版本,然后执行此操作:

mbpr15:Android awt$ export MAC_SDK_VERSION=10.6
mbpr15:Android awt$ lunch sdk-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.3.2.1.000.000
TARGET_PRODUCT=sdk
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86
HOST_OS=darwin
HOST_OS_EXTRA=Darwin-13.0.0-x86_64-i386-64bit
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
============================================

mbpr15:Android awt$ make -j8 sdk

完美无缺。这构建了一组自定义的sdk工具,与旧版本的Mac OSX兼容。