mac编译Android源码之后生成out 文件夹,我打算拷贝网站源码到电脑磁盘但是out文件夹中有很多区分大小写的同名。

一. Mac OS X(10.11.4)编译环境设置
1.1 创建大小写敏感的磁盘镜像
可以通过磁盘管理工具进行设置,也可以通过以下命令生成70g的镜像文件
sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+'
-size 70g -volname android ~/android.dmg
1.2 将镜像文件转为可读写磁盘
hdiutil convert ~/android.dmg.sparseimage -format UDRW -o ~/android.dmg
(android.dmg.sparseimage 为创建的磁盘名,可能是android.dmg.sparseimage 或android.dmg ,根据实际情况填写)
1.3 双击android.dmg挂载磁盘
二、下载和编译的准备工作
2.1 Xcode是少不了的,没有安装的同学还是安装吧,我也是刚安装的。没安装的就安装个最新版的,这个直接在appStore下载。
2.2 安装MacPorts之前需要确认环境变量PATH中,/opt/local/bin出现在/usr/bin之前,可以运行一下这行来确认:
echo $PATH
否则,在.bash_profile文件种添加
PATH=/opt/local/bin:$PATH
特别说明:下面的一些知道step3的步骤我这边总出问题就跳过了,事实上也没影响后面源代码的下载,跳不跳过就取决与你了
从MacPorts安装make, git, and GPG packages:
POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
如果你是Mac OS X 10.4版本的话,还要安装个bison
POSIXLY_CORRECT=1 sudo port install bison
下面要把gmake 3.82还原到3.81,否则之后编译源码会出错:(3.82有Bug,用不了):
sudo vim /opt/local/etc/macports/sources.conf
然后在rsync那行的上面一行加上
file:///Users/Shared/dport
之后按这个步骤来就行了:
mkdir /Users/Shared/dports
cd /Users/Shared/dports/
svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/devel/gmake/
portindex /Users/Shared/dports
安装3.81版的:
sudo port install gmake @3.81
检查一下gmake版本,看到版本号是3.81就对了:
gmake --version
于是最后下载Android源码前的最后一步就是,修改文件标识符限制:
由于Mac OS 默认将同时打开的文件标识符数量限制得太小,并行编译处理时可能会超出这个限制。所以在 ~/.bash_profile 里加上这么一段:
#set the number of open files to be 1024
ulimit -S -n 1024
三、开始下载android的源码了,开心啊
3.1 在你的home目录下创建文件夹 /bin
mkdir ~/bin
3.2 设置环境变量
PATH=~/bin:$PATH
3.3 下载repo工具并且给这个工具可执行权限
curl https://dl-/dl/googlesource/git-repo/repo & ~/bin/repo
chmod a+x ~/bin/repo
3.4 下载源码
推荐使用清华大学TUNA镜像源,使用每月更新的初始化包进行下载更新。具体步骤请看
四.编译源码
4.1 在android.dmg磁盘下创建文件夹android用于存放源码:
cd /Volumes/android
mkdir android
4.2 将下载的源码拷贝到android文件夹中并进入源码目录
/Volumes/android/android/android-6.0.1/
4.3 设置环境
source build/envsetup.sh
4.4 根据设备选择target
lunch target
注:target有以下可选:
aosp_arm-eng
aosp_arm64-eng
aosp_mips-eng
aosp_mips64-eng
aosp_x86-eng
aosp_x86_64-eng
aosp_deb-userdebug
aosp_flo-userdebug
full_fugu-userdebug
aosp_fugu-userdebug
mini_emulator_arm64-userdebug
m_e_arm-userdebug
mini_emulator_mips-userdebug
mini_emulator_x86-userdebug
mini_emulator_x86_64-userdebug
aosp_flounder-userdebug
aosp_angler-userdebug
aosp_bullhead-userdebug
aosp_hammerhead-userdebug
aosp_hammerhead_fp-userdebug
aosp_shamu-userdebug
其他设备可以到这里
-jN,N这个数字可以跟你的CPU实际情况而定。
android目录底下会生成out文件夹,文件夹下:
4.6 错误解决
Which would you like? [aosp_arm-eng] 6
build/core/combo/mac_version.mk:38:
*****************************************************
build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at
/Developer/SDKs/MacOSX10.6.sdk
build/core/combo/mac_version.mk:40:
*****************************************************
build/core/combo/mac_version.mk:41: *** Stop..
** Don't have a product spec for: 'aosp_x86_64'
** Do you have the right repo manifest?
把文件中 build/core/combo/mac_version.mk:
mac_sdk_versions_supported := 10.6 10.7 10.8
mac_sdk_versions_supported := 10.11
(我的Xcode 是10.11,具体查看一下路径中的sdk版本
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/)
五.用android studio查看Android源码
5.1 编译源码idegen模块及生成AS配置文件(*.ipr)
mmm development/tools/idegen/
这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件(不信你自己去查看这个模块的Android.mk的目标吧,不多解释)。运行完以后如果看到如下信息则说明编译OK:
#### make completed successfully (7 seconds) ####
接着执行如下脚本:
development/tools/idegen/idegen.sh
这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。等待片刻得到类似如下信息说明OK:
Read excludes: 21ms
Traversed tree: 194799ms
通过如上操作我们就完成了基本的源码配置工作。
5.2 使用Android Studio导入源码工程
有了如上的这些操作以后,我们打开Android Studio,然后选择打开一个现有的Android Studio项目,然后选择打开源码根目录下的android.ipr文件,导入就行
5.3 加快AS读取源码速度
在打开android.ipr之后AS会花费一定的时间来读取源码,首次扫描源码中所有的Source Folders的时候花费的时间比较长,尤其源码存放在机械硬盘上的时候(完整扫描一次以后后续再打开就没这么慢了)。因为我们经常查看和编译的源码目录为packages和framework等,所以我们可以仅保留需要的源码文件夹不做设置,其他设为Excluded(请按需配置)。
在android根目录上安快捷键F4(如果已经设为Eclipse快捷键方式则为F12)打开Module Setting
选中不需要扫描的目录后点右上的Excluded(其中out和prebuilts目录较大,建议选择),完成以后效果如左侧,文件夹颜色区分,红色的即为排除在外的文件夹,AS将不扫描其中内容。 重新启动AS,会发现扫描源码目录的时间大大缩减了。
5.4 配置AS的JDK和SDK
在上一步操作之后的等待期间刚好让我们来配置一下JDK和SDK。
在IDE中参照下图Project Structure设置,先在SDKs设置中加入必须的JDK,SDK。(可选)然后创建一个新的JDK,可以取名为1.8(No Libraries),然后删除classpath标签页下面的jar文件。 这样可以确保使用Android源码里的库文件。
并将1.8(No Libraries)作为Android SDK要使用的Java SDK。如下图
之后在Project标签中的Project SDK中选择对应的Android API版本
5.5 解决源码中跳转错误问题
1)确保在上一步中已为当前工程设置正确了SDK和JDK
2)设置’Modules’的依赖
先将所有依赖删掉
点击上图中’+’并选择’Jars or directories’选项,依次将frameworks和external文件夹添加进来.如:
如果代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可。
感觉以下文章作者:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3433次
排名:千里之外
(1)(3)(1)(1)(2)(1)(3)Android(8)
做SDK开发差不多一年了,想要进阶的话就得好好研究Android的源码了。在这里记录下我编译时的流程,供各位参考。
我用的电脑系统是OSX 10.10.5。
需要准备的工具有:
XCODE,用最新版吧
这个是下载更新系统自带的Java版本,目录为/System/Library/Frameworks/JavaVM.framework,终端输入java -version获取的就是这个Java的版本。自己安装的Java目录在/Library/Java/JavaVirtualMachines。
这个目前推荐用1.6,具体看下文,用1.8的话容易出问题。
下面开始按步骤搭建环境。
创建大小写敏感的磁盘映像
1.生成镜像文件
打开终端,复制粘贴
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 100g ~/android.dmg.sparseimage
这里的100g指的是分区大小,现在的android系统越来越大,现在Android7.1是20G,不过如果.repo也放进去的话,就要70G了,这里设置大一点。
如果提示需要权限,就输入sudo -s,然后输入密码直接以root用户操作。
打开磁盘工具,文件,新建映像,如图所示。
之后在设定的位置处就能看见创建的磁盘了,双击磁盘映像,就可以在侧边栏看见磁盘。
如果后期需要修改映像大小,可使用:
hdiutil resize -size &new-size-you-want&g ~/android.dmg.sparseimage
2.设置挂载和卸载命令(仅供参考,无效可手动输)
由于mac下很多重要文件都是隐藏的,所以建议大家首先把隐藏的文件显示出来,在终端里获取权限后输入以下命令。
defaults write com.apple.finder AppleShowAllFiles TRUE && killall Finder
打开用户/你的用户名文件夹,看下有没有“.bash_profile”这个文件,这个文件是OSX系统下的环境变量,如果没有,则新建一个。
打开终端,输入cd然后把用户/你的用户名文件夹拖到终端,输入touch .bash_profile,创建文件。
open -e .bash_profile编辑文件,编辑完后保存。
source .bash_profile,更新环境变量。
在.bash_profile文件中加入
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/ }
function umountAndroid() { hdiutil detach /Volumes/ }
在终端输入mountAndroid和umountAndroid看能否挂载和卸载安卓分区,如果不能,打开用户/你的用户名文件夹,找到android.dmg.sparseimage,制作替身,放到桌面,以后挂载只需要打开替身即可。
安装make,git,GPG
首先要安装macport,可以进官网看,也可以直接安装上面给的安装包,也可以直接下,解压,输入cd,将目录拖入命令行,然后输入以下命令
cd MacPorts-2.3.4/
./configure
sudo make install
打开用户/你的用户名文件夹下的“.bash_profile”文件,看是否有export PATH="/opt/local/bin:/opt/local/sbin:$PATH",没有就加上。修改完“.bash_profile”文件后需要在终端输入source .bash_profile命令,是修改立即生效。
打开终端,输入如下命令
POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
待其自动下载安装完成。如果提示gmake not found,就输入sudo port -d sync,如果提示port not found,就检查环境变量是否设置成功。
修改Mac默认的最大可同时打开文件数
打开用户/你的用户名文件夹下的“.bash_profile”文件,加入ulimit -S -n 1024,这样编译时同时编译的文件数可以更多。
1.建立本地仓库
mkdir ~/bin
PATH=~/bin:$PATH
curl /git-repo-downloads/repo & ~/bin/repo
chmod a+x ~/bin/repo
一起复制粘贴到终端执行。
第一句在用户/你的用户名文件夹下建立了一个bin目录。
第二句将bin目录添加至环境变量,需要打开“.bash_profile”文件检查下有没有添加成功。
第三句安装repo工具。
第四句将repo的权限改为可执行。
2.镜像下载
源码下载用国内的镜像会快很多。
1. 用清华大学的镜像源(),务必使用迅雷下载,地址:
2. 将下载好的文件解压到刚才建立的bin目录中,解压后bin目录结构为”bin/aosp/.repo”。打开menifest目录,右键点击default.xml,制作替身,将替身拷贝到.repo目录,重命名为menifest.xml。
3. 打开终端,输入cd,拖入aosp目录。执行命令:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.1_r28
结尾是版本号,对照修改。
4. 输入repo sync -j1 -f --force-sync,不是repo sync,repo sync会出现Exited sync due to fetch errors错误。
常见问题:
error.GitError: manifests rev-list (‘^c4e4db1a85b9bea00b9fe8c6a18f9d3357adab0c’, ‘HEAD’, ‘–’): fatal: Not a git repository (or any of the parent directories): .git
删除.repo/menifest文件夹下的.git文件夹,不行再删.repo下的menifest.git文件夹。
Cannot get
编辑 ~/bin/repo,把 REPO_URL 一行替换成:
REPO_URL = ‘’
更方便的方式(download.sh)
#!/bin/bash
PATH=~/bin:$PATH
repo init -u https://aosp.tuna./platform/manifest -b android-7.0.0_r14
while [ $? = 1 ]; do
echo "================sync failed, re-sync again ====="
repo sync -j1 -f --force-sync
将bin/aosp目录拷贝到android.dmg.sparsefile分区,可删除.repo目录。
android源码编译的Java版本要和/Volumes/untitled/aosp/build/core中的main.mk中的设置Java版本的地方对应,如果mk文件中是1.6就要用1.6,是1.8就要用1.8。
# Check for the correct version of java
java_version := $(shell java -version 2&&1 | head -n 1 | grep '^java .*[ "]1\.6[\. "$$]')
ifneq ($(shell java -version 2&&1 | grep -i openjdk),)
java_version :=
ifeq ($(strip $(java_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of java.)
$(info $(space))
$(info Your version is: $(shell java -version 2&&1 | head -n 1).)
$(info The correct version is: Java SE 1.6.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)http:
$(info ************************************************************)
$(error stop)
jdk设置可以参考:
打开“.bash_profile”文件,open ~/.bash_profile。
设置jdk版本和别名,修改成自己的JDK目录名。
export JAVA_6_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
export JAVA_HOME=$JAVA_6_HOME
alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk7='export JAVA_HOME=$JAVA_7_HOME'
alias jdk6='export JAVA_HOME=$JAVA_6_HOME’
保存后执行source ~/.bash_profile。
终端输入jdk6、jdk7、jdk8 即可切换jdk版本。
1.环境准备
终端输入source build/envsetup.sh
2.设置编译目标lunch aosp_arm-eng
3.开始编译make -j8或make -j4或make -j16,取决于你的CPU的线程数。
编译完成后可看见aosp目录有out文件夹,aosp/out/host/darwin-x86/framework文件夹中有一些jar包生成。
1.XCODE的SDK版本问题
Please install the 10.5 SDK on this machine at /Developer/SDKs/MacOSX10.5.sdk
external/qemu/Makefile.android:82: *** Aborting the build..
打开Android分区的aosp目录,进入aosp/external/qemu,打开Makefile.android,找到并改成如下代码:
``` ifeq ($(filter 10.5 10.5.%,$(DARWIN_VERSION)),)
# We are on Snow Leopard or above
LEOPARD_SDK := /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
ifeq ($(strip $(wildcard $(LEOPARD_SDK))),)
Please install the 10.11 SDK on this machine at $(LEOPARD_SDK))
$(error Aborting the build.)
MY_CFLAGS += -isysroot $(LEOPARD_SDK) -mmacosx-version-min=10.11 -DMACOSX_DEPLOYMENT_TARGET=10.11
MY_LDLIBS += -isysroot $(LEOPARD_SDK) -Wl,-syslibroot,$(LEOPARD_SDK) -mmacosx-version-min=10.11
/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk是我的XCODE应用程序包里的内容,根据自己的版本改即可。
2.内存溢出
Try increasing heap size with java option '.
修改Jack的配置文件prebuilts/sdk/tools/jack-admin,将
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
然后在终端输入
./prebuilts/sdk/tools/jack-admin stop-server
重新编译时会重新启动jack server。
继续编译。
3.文件没找到
fatal error: 'linux/netfilter/xt_DSCP.h' file not found
在目录external/iptables/extensions/../include/Linux/netfilter中创建文件xt_DSCP.h:
#ifndef _XT_DSCP_TARGET_H
#define _XT_DSCP_TARGET_H
#include &linux/netfilter/xt_dscp.h&
#include &linux/types.h&
struct xt_DSCP_info {
struct xt_tos_target_info {
#endif /* _XT_DSCP_TARGET_H */
导入Android Studio
生成idegen.jar
接着上一步,终端中当前位置在Android分区上的aosp目录。
确认下aosp/out/host/darwin-x86/framework文件夹中没有idegen.jar,输入命令:mmm development/tools/idegen,可看见文件夹中生成了这个jar包。
生成android.ipr和android.iml文件
输入命令development/tools/idegen/idegen.sh,执行完成可看到aosp目录生成了这两个文件。使用Android Studio打开android.ipr即可导入源码工程。
Android Studio查看源码的相关配置请看我的下一篇文章:。
最后,祝大家都编译成功,也可以加群(
)讨论Android技术哦。
转载请注明出处:。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10191次
排名:千里之外
原创:13篇
Android群:编译Android源码全过程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
编译Android源码全过程
上传于|0|0|文档简介
&&编译Android源码全过程
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 dd 磁盘拷贝 的文章

 

随机推荐