已知问题

已知问题

即使我们再小心,小问题在一些时候冒出。这页保持追踪已知问题,围绕用 Android 源代码。

缺少 CTS Native XML生成器

症状:在一些 IceCreamSandwich 的构建和后来的,下面的警告在构建期间被先打印:/bin/bash: line 0: cd: cts/tools/cts-native-xml-generator/src/res: Nosuch file or directory

原因:一些 makefile 引用不存在的路径。

修理:无。这是一个无害的警告。

黑色的 Gingerbread 仿真器

症状:仿真器构建直接从 gingerbread 分支不开始和停留卡住在一个黑色的屏幕。

原因:gingerbread 分支用 R7 版本的仿真器,没有所有运行 gingerbread 最近版本必要的所有功能。

修理:用 R12 版本的仿真器,和一个新的匹配这些工具。不需要清除构建。

$ repo forall platform/external/qemu -c git checkout aosp/tools_r12
$ make
$ emulator -kernel prebuilt/android-arm/kernel/kernel-qemu-armv7

仿真器构建在 MacOS 10.7 Lion 上不工作。

症状:仿真器(任何版本)构建在 MacOS 10.7 Lion 和/或 XCode 4.x 上不开始。

原因:一些在开发环境选择的原因,仿真器被编译成一种防止它工作的方式。

修理:用一个仿真器二进制文件从 SDK,构建在 MacOS 10.6 用 XCode 3 并且工作在 MacOS 10.7上

同步源代码困难(代理问题)。

症状repo init or repo sync 失败同 http 错误一起,通常 403 或 500。

原因:这些是相当一点可能的原因,最常见的 http 代理关系,处理大量数据传输困难。

修理:这不是一般的解决方法,用 python 2.7 和明确的用 repo sync -j1 已经据报告为一些用户改善这个情况。

同步源树困难(VirtualBox 以太网问题)。

症状:当运行 repo sync 在一些 VirtualBox 安装,过程挂起或失败同一个可能症状的变种。一种变种是 DownloadError: HTTP 500 (Internal Server Error: Server got itself in trouble).

原因:VirtualBox 的默认网络行为是用 NAT (网络地址转换)连接客户系统到网络。沉重的网络活动 repo sync 触发一些边角情况在 NAT 码。

修理:配置 VirtualBox 用网桥替代 NAT。

同步源树困难(DNS 问题)。

症状:当运行 repo sync,这个过程失败和各个有关不承认主机名的错误。一个这样的错误是 <urlopen error [Errno -2] Name or service not known>

原因:一些 DNS 系统有很难复制大量查询参与到同步源树(可以是几百个请求在一个最差情况的场景)。

修理:手动解决有关的主机名,和本地硬编码这些结果。

你能解决它们用 nslookup 命令,将给你一个那些每个 IP 地址的数值(通常在"地址"部分"输出)。

$ nslookup googlesource.com
$ nslookup android.googlesource.com

你能接着本地硬编码它们通过编辑 /etc/hosts,并且添加两行到这个文件,形式:

aaa.bbb.ccc.ddd googlesource.com
eee.fff.ggg.hhh android.googlesource.com

注意,这仅仅工作,只要服务器地址不改变,并且假如它们工作和你不能连接,你将不得不解决这些主机名从而再一次并且编辑 etc/hosts

同步源树困难(TCP 问题)。

症状repo sync 挂起当同步时,常常当它完成同步 99% 。

原因:一些网络环境的 TCP/IP 堆设置导致困难,例如 repo sync 不完成也不失败。

修理:在 linux 上,sysctl -w net.ipv4.tcp_window_scaling=0。在 MacOS 上,禁用 rfc1323 扩展在网络设置。

make snod 和模拟器构建。

症状:当用 make snod (让系统没有依赖)在模拟器构建上,结构构建不工作。

原因:所有模拟器默认构建现在运行 Dex 优化,在构建时,应用每次框架选择要求跟着所有依赖丢弃优化。

修理:本地禁用 Dex 优化用 export WITH_DEXPREOPT=false,删除现有的优化版本用 make installclean 和运行一个全构建丢弃生成非优化版本。随后,make snod 将工作。

"权限被拒绝"构建期间。

症状:所有构建失败同 "权限被拒绝",可能跟着反病毒警告。

原因:一些反病毒程序误辨认一些源文件在 Android 源树,作为假如它们包含驱动。

修理:这些不是实际病毒参与验证之后,禁用反病毒在 Android 树,这个添加得益于减少构建时间。

相机,GPS 和 NFC 在 Galaxy Nexus 上不工作。

症状:相机,GPS 和 NFC 在 Galaxy Nexus 上不工作,作为一个例子,相机应用崩溃在它运行不久。

原因:这些硬件外围要求所有权库,这些在 Android 开源工程是无效的。

修理:无。

症状:构建失败同各个症状,这样一个症状是 cc1: error: unrecognized command line option "-m32"

原因: Android 构建系统用 PATH 中的默认编译器,假设它生成二进制文件是一个合适的编译器,运行在主机上。其它情况(例如,用 Android NDK 或构建内核)导致默认编译器不是一个主编译器。

修理:用一个 "clean" shell,在没有之前前动作,能够交换默认编译器。

构建错误造成非默认工具设置。

症状:构建失败同各种症状,可能抱怨(译者注:原词complinaing)错误的文件或文件格式错误。一个这样的症状是 member [...] in archive is not an object.

原因:Android 构建系统趋向用一些主机工具和依靠它们的默认行为。一些设置选择这些工具的行为和使它们表现在一些方式,混淆构建系统。已知的变量导致这样的问题是 CDPATHGREP_OPTIONS

修理:构建 Android 在一个尽可能少定制的环境。

构建错用用 4.0.x 和早期的在 MacOS 10.7 上。

症状:构建 IceCreamSandwich 4.0.x (和旧版本) 失败在 MacOS 10.7 上,并且错误类似这样:Undefined symbols for architecture i386: "_SDL_Init"

原因:4.0.x 是不兼容 MacOS 10.7。

修理:两者,降级到 MacOS 10.6,或用主分支,能被构建在 MacOS 10.7上。

$ repo init -b master
$ repo sync

构建错误在 MacOS 上用 XCode 4.3。

症状:所有构建失败,当用 XCode 4.3。

原因:XCode 4.3 切换默认编译器从 gcc 到 llvm,并且 llvm 拒绝编码,用公认的 gcc。

修理:用 XCode 4.2。

构建错误用 4.0.x 和更早的在 Ubuntu 11.10 上。

症状:构建 IceCreamSandwich 4.0.x (和旧版本)在 Ubuntu 11.10 上和新的失败同错误类似这样:<command-line>:0:0: warning: "_FORTIFY_SOURCE" redefined [enabled by default]

原因:Ubuntu 11.10 用一个版本的 gcc ,符号是默认定义的,并且 Android 页定义了这些符号,导致冲突。

修理:两者,降级到 Ubuntu 10.04,或用主分支,能被并以在 Ubuntu 11.10 和新的上面。

$ repo init -b master
$ repo sync

你可能感兴趣的:(工作,android,优化,xcode,ubuntu,编译器)