`
abc20899
  • 浏览: 929307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mac OS X 下android源码编译

 
阅读更多


1.需要至少15G大的大小写敏感分区,以免build debug版本空间不够

  在Mac下编译android的源代码需要一个大小写敏感(Case Sensitive)的分区格式如果你原来的分区不是HFS一类大小写敏感的文件格式,那么最简单的办法就是新建一个这种分区格式的dmg出来,命令如下:

  sudo hdiutil create -size 15g -type UDIF -fs HFSX -volname android  ~/android.dmg
  sudo chown $USER  ~/android.dmg

  1)双击android.dmg,mount volume到/Volumes/android。

  2)进入系统偏好设置-->帐户-->登录项-->点"+",选android.dmg这样系统启动的时候会自动mount volume

2.下载代码或者直接拷贝已有源代码到/Volumes/android目录下

  下载源码需要安装Repo工具,该工具是为了更好的使用Git源代码管理软件(类似于CVS等版本控制系统),执行以下命令创建~/bin目录:

  $ cd ~
  $ mkdir bin
  $ echo $PATH


  下载Repo:

  $ curl https://android.git.kernel.org/repo >~/bin/repo
  $ chmod a+x ~/bin/repo

  之后在/Volumes/android目录下创建android目录以存放android源码:

  $ cd /Volumes/android
  $ mkdir android
  $ cd android

接着初始化Repo客户端:

  $ repo init -u git://android.git.kernel.org/platform/manifest.git

成功后显示:

  repo initialized in /Volumes/android/android

这时在/Volumes/android/android目录下就会有.repo的目录用来同步manifest文件,该文件是用来同步源码的,下载源码使用命令:

  $ repo sync

  大概要下载4G多的文件,所有下载过程会比较长。

非常重要的,下载完成之后需要打几个补丁,请分别执行以下命令,按顺序打以下四个补丁:
  cd build
git pull git://android.git.kernel.org/platform/build refs/changes/74/12074/3

cd system/core
git pull git://android.git.kernel.org/platform/system/core refs/changes/45/11845/3

cd external/qemu
git pull git://android.git.kernel.org/platform/external/qemu refs/changes/46/11846/3

cd system/core
git pull git://android.git.kernel.org/platform/system/core refs/changes/97/12597/1

3.下载并安装XCode和MacPorts

  首先下载安装最新的XCode,下载地址:http://developer.apple.com
  然后下载MacPorts,下载地址: http://www.macports.org/
  修改~/.profile文件,添加:
  # set the number of open files to be 1024
  ulimit -S -n 1024

4.编译源码

  首先修改~/.profile文件,内容类似:
# MacPorts Installer addition on 2010-05-19_at_19:14:53: adding an appropriate PATH variable for use with MacPorts.
export ANDROID_PRODUCT_OUT=/Volumes/android/Android-Source/out/target/product/generic
export ANDROID_PRODUCT_OUT_BIN=/Volumes/android/Android-Source/out/host/darwin-x86/bin
export PATH=/opt/local/bin:/opt/local/sbin:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT}:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

# MacPorts Installer addition on 2010-05-19_at_19:14:53: adding an appropriate MANPATH variable for use with MacPorts.
export MANPATH=/opt/local/share/man:$MANPATH
# Finished adapting your MANPATH environment variable for use with MacPorts.

  然后打开一个新的命令行窗口,执行以下命令:
  $ cd /Volumes/android/Android-Source
$ make
  源码编译时间较长,大概需要4~5个小时,请耐心等待,编译完成之后,执行命令:
  $ emulator
将 调出模拟器,说明编译成功!

1. 打最后补丁时出错,错误如下:
    “Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use ‘git add/rm ‘
as appropriate to mark resolution, or use ‘git commit -a’.”
    改用命令:
   “git clone git://android.git.kernel.org/platform/system/core  refs/changes/97/12597/1″






出错原因:
./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static declaration
/usr/include/string.h:143: error: previous declaration of ‘strnlen’ was here
make: *** [out/host/darwin-x86/obj/STATIC_LIBRARIES/libelf_intermediates/lib/xmalloc.o] Error 1

解决方案:参考别人些的文章
http://blog.sephiroth.it/2011/10/17/compiling-android-source-on-mac-lion/

modify ./external/elfutils/config-compat-darwin.h.
replace:







static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;
}
with:








#if 0
static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;
}
#endif
Well, at the end of the process I just edited the Android.mk makefile into external/skia adding a new entry for BUILD_STATIC_LIBRARY and the next command was simply:

mmm external/skia
which produced the required libskia.a file to be linked in my project.









第二个问题:
warning: ignoring file out/host/darwin-x86/obj/STATIC_LIBRARIES/
libSDL_intermediates/libSDL.a, file was built for archive which is not
the architecture being linked (i386)
Undefined symbols for architecture i386:


Do this by commenting out all lines in

external/qemu/Android.mk


The toolchain problem stems from the fact that Android actually supports the mac toolchain from Snow Leopard and onwards. So put homebrew path LAST in $PATH, so that it uses the Mac toolchain first.

When building DevNull/Oxygen ROM you in addition to the steps above also need to make a symlink in /usr/local/bin from sed to gsed, since they explicitly call gsed at one point. Also you have to disable WITH_DEXPREOPT like so:
make -j8 [devnull] WITH_DEXPREOPT=false
分享到:
评论

相关推荐

    SQLCipher_for_Android_source_build_源码编译过程

    构建SQLCipher for Android源码通常需要在Linux或Mac OS X系统上,使用Android NDK(Native Development Kit)进行编译。这意味着需要配置Android SDK、JDK、NDK等开发环境,并确保它们的路径被配置为系统环境变量。...

    android-4.4-源码编译-linux_x86-bin目录工具

    在Android系统开发和调试过程中,理解源码编译过程至关重要,特别是对于系统核心组件的定制和优化。在本文中,我们将深入探讨“android-4.4-源码编译-linux_x86-bin目录工具”,这是一个专为Linux x86平台设计的工具...

    mac下编译android源代码.md

    ### Mac 下编译 Android 源代码的关键步骤与注意事项 #### 一、磁盘分区 在 Mac 上编译 Android 源代码之前,首先要解决的一个问题是磁盘分区问题。这是因为 Mac 的默认文件系统(APFS 或 HFS+)通常设置为不区分...

    Mac OS下为Android Studio编译FFmpeg解码库的详细教程

    在本文中,我们将深入探讨如何在Mac OS环境下,使用Android Studio编译FFmpeg解码库。FFmpeg是一个强大的开源项目,提供了音视频处理的各种工具和库,包括编码、解码、转换等功能。在Android开发中,它常用于实现...

    Android反编译工具JEB -- 含MAC/Windows

    JEB支持多种平台,包括Mac OS和Windows,这使得它成为跨平台的反编译利器。 **一、JEB的功能特性** 1. **源代码反编译**:JEB能够将APK中的Dalvik字节码转换回接近原生的Java源代码,便于理解和分析。 2. **高级...

    Android反编译APK查看

    1. 下载JD-GUI的最新版本,包括Windows、Linux或Mac OS X的对应版本。 2. 解压缩下载的文件,找到`jd-gui.exe`(Windows)或相应的可执行文件。 3. 双击`jd-gui.exe`启动应用程序。 步骤二:反编译APK 1. 打开APK...

    build-android-source:Mac OS编译android原始代码

    构建Android源Mac OS编译android 8.1.0源码系统macOS Mojave版本10.14.6下载Android源码设置.bash_profile # 其他内容全注释掉 ulimit -S -n 1024 export PATH=~/bin:$PATH 安装repo $ mkdir ~/bin //创建bin文件夹 ...

    android反编译脚本(unix like版本)

    这个“android反编译脚本(unix like版本)”正是针对Linux和Mac OS平台设计的工具,它能够帮助用户在这些Unix-like系统上便捷地反编译APK文件,揭示其内部结构和逻辑。 首先,我们要理解反编译的基本概念。反编译...

    android反编译工具jd-gui

    1. **跨平台支持**:由于Java的“Write Once, Run Anywhere”特性,JD-GUI也能够提供对多种操作系统的支持,如Windows、Linux和Mac OS。尽管它不建议通过常规的安装步骤来部署,但用户可以直接下载适用于各自系统的...

    安卓Android源码——仿Mac的Dock.zip

    【描述】描述中的"安卓Android源码——仿Mac的Dock.zip"表明这个项目主要关注于通过编程实现Android系统的Dock栏,以模仿Mac OS的用户体验。开发者可能已经实现了动态效果,如应用图标滑动、缩放等,以及点击时的...

    Android 搭建编译环境.docx

    本文主要针对Linux(特别是Ubuntu)和Mac OS操作系统,详细讲解了如何配置一个可以编译Android源码的环境。 首先,值得注意的是,Android的编译并不支持Windows环境,开发者需要使用Linux或Mac OS作为开发平台。在...

    android4.0源码下载地址

    1. **设置环境**:首先,确保你有一台装有Linux或Mac OS的计算机,因为Windows系统可能不支持完整的源码编译。安装必要的工具,如Git、Java Development Kit (JDK) 和repo(一个用于管理Android源码的特殊工具)。 ...

    LibjpegTurbo全平台编译.so文件,mac下编译,在Android下最高性能10ms压缩一张1080P图片,x86下更低

    此项目是基于Libjpegturbo的编译文件,支持v7a,v8a,x86,x86_64,armeabi。编译环境为mac os , ndk-16b, libjpegturbo-2.0.3版本,cmake 12

    Android 反编译工具 ApkToolkit

    1. **下载与安装**: 获取Apktool的最新版本,根据操作系统(Windows、Linux、Mac OS)进行安装配置。 2. **解压APK**: 使用Apktool命令行工具,输入`apktool d <apk_file>`来解压APK文件,这将生成一个包含源代码和...

    android 源码下载和安装环境指导

    要在 Linux 环境下编译 Android 源码,需要安装以下软件包: * Git 1.5.4 或更高版本 * JDK 5.0,更新 12 或更高版本(注意,Java 6 不被支持,因为它与 @Override 不兼容) * flex、bison、gperf、libsdl-dev、...

    安卓sfc模拟器源码eclipsendk开发基于snes9x的sfc模拟器源码.rar

    Snes9x是一个开源的SFC/SNES模拟器,它在多种操作系统上表现优秀,包括Windows、Linux和Mac OS X等。此模拟器的核心是精确的CPU和GPU模拟,使得游戏能在非原生硬件上流畅运行。在Android环境下,Snes9x被移植并优化...

    curl+ssh windows android linux mac ios 编译好的5个平台的库

    Mac OS X通常使用Homebrew或Xcode的Command Line Tools来管理依赖和编译。curl和ssh可以通过源码安装,但可能需要解决macOS特有的依赖问题,如SSL库。预编译库适用于Xcode项目,提供dylib动态库,可以直接引入到项目...

    移植到 android 下的 ntfs-3g

    它为Linux、Mac OS X以及FreeBSD等系统提供了对NTFS分区的支持,具备高效、稳定和安全的特点。在Android系统下移植ntfs-3g,主要涉及以下几个关键步骤: 1. **编译环境准备**:首先,你需要一个已经安装了Android ...

    安卓源码下载编译及分析文档.pptx

    Android源码编译只支持Linux和Mac OS操作系统。如果选择虚拟机,需要考虑足够的磁盘空间,至少50GB(推荐120GB),且Google建议使用64位系统。下载源码涉及以下步骤: 1. 安装Git作为版本控制工具。 2. 安装curl以...

Global site tag (gtag.js) - Google Analytics