android 系统的生成,CyanogenMod源码下载和编译 CM7

来源:互联网 发布:opencv java 图片切割 编辑:程序博客网 时间:2024/04/29 23:11

最新android源码的下载

repo init -u git://github.com/CyanogenMod/android.git -b jellybean



CyanogenMod的环境的搭建和可刷机文件的编译及打包

http://wenku.baidu.com/view/393dab697e21af45b307a879.html

//////////////////////////////////////////////////////////////////

http://www.cnblogs.com/qianxudetianxia/archive/2011/09/27/2193590.html

 ///////=============

这里着重说下Android 2.3以上需要借助JAVA6,安装Java6,我推荐如下安装:

1
2
3
4
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

如果这一步不成功将会导致后面出错,如果失败按下面方法即可:

 

运行sudo apt-get install sun-java6-jdk
解决方法:
1. sudo gedit
2. 打开 /ect/apt/sources.list
3. 添加一行
deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
4. 保存关闭gedit
5. 运行 sudo apt-get update
6.再运行sudo apt-get install sun-java6-jdk

 

 

 //////=============

2.安装repo

参考repo的安装

////////=================

3.ubuntu中环境的配置
JDK前面已经说了,其他的软件列表如下:

1
$sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool 
 

 

 ///////=================

 

4.下载CyanogenMod源码

1
2
3
4
5
6
7
//从用户根目录下开始
//创建CyanogenMod文件夹来放置后面所有的代码
$mkdir CyanogenMod
//获取gingerbread的分支源代码
$repo init -u git://github.com/CyanogenMod/android.git -b gingerbread 
//同步服务器代码到本地,-j16据网友反应是多开网络连接,从而能提高下载速度
$repo sync -j16
 

 

 ////////////====================

 

5.编译源码
在CyanogenMod/device目录下有很多款手机的对应版本:
第一步:读取手机上的一些私有配置文件
1
2
$cd CyanogenMod/device/htc/liberty
$./extract-files.sh

 

 

第二步:生成编译脚本文件

?
1
2
3
4
5
$cd ~/CyanogenMod/vendor/cyanogen 
$./get-rommanager
$./extract-google-files
//复制编译脚本文件到CyanogenMod目录下,后面编译整个系统用的就是这个文件
$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_lieberty.mk  ~/CyanogenMod/buildspec.mk

 

第三步:编译脚本
回到CyanogenMod目录下,执行脚本。

1
2
3
4
5
6
7
//初始化脚本,这个是后面的重要基础步骤
$source build/envsetup.sh
//选择编译的产品
//这个命令需要一小会儿时间,但是又没提示,耐性等待一下
$lunch cyanogen_liberty-eng
//开始编译
$make -j4 CYANOGEN_WITH_GOOGLE=true otapackage

 

第四步:生产刷机zip包。

1
./vendor/cyanogen/tools/squisher

 

/////==============

6.定制ROM
有了以上的环境后,我们就可以大展手脚,深度定制ROM, 做自己的操作系统,自己的CyanogenMod,自己的MIUI,自己的Android系统。
举个最简单的例子:
我 们换一下默认menu菜单的选中背景图,我们进入CyanogenMod/frameworks/base/core/res/res/mdpi目录下 (因为htc liberty的分辨率是480x320),找到图片highlight_pressed.png,替换为绿色的背景:
 
那么修改资源文件后,我们需要重新编译framework-res.apk:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
//回到根目录
$cd
//切换到管理员权限
$sudo -s
//进入CyanogenMod目录,并初始化脚本文件
$cd CyanogenMod
$source build/envsetup.h
//选择产品
$lunch cyanogen_liberty-eng
//进入资源编译目录(或者它的子目录也可以)
$cd frameworks/base/core/res
//开始编译framework-res.apk
$mm
编译完成,

 

在CyanogenMod/out/target/product/liberty/system/framework目录下生成了一个framework-res.apk文件,就是我们修改Menu选中项图片后新打的资源包。
现在我们需要把这个资源包更新到手机中。
USB连上手机后,一切正常的话(adb当然也是事前要装好的哦),打开终端:

?
1
2
3
4
5
6
//使其可写
$adb remount
//替换手机中资源包
$adb push ~/CyanogenMod/out/target/product/liberty/system/framework/framework-res.apk /system/framework/
//重启手机后生效
$adb reboot

重启后,进入桌面,我们点击Menu,选择一项:

 

 

修改资源包,可以修改样式,显示图片,调整布局等等。
你也可以直接修改framework代码,在framework/base/core /java目录下,修改对应的类,比如逻辑处理,样式重绘等等,然后同上面类似编译,把生成的framework.jar替换掉手机的/system /framework下的framework.jar,重启手机即可看到效果。
你也可以添加系统应用,删除系统应用等等,这里特别提到一点,系统应用可以通过如下命令删除(具有root权限):

1
2
3
4
5
$adb remount
$adb shell
#cd system/app
//用rm删除系统FM应用
#rm FM.apk

有了这些基础知识,我相信我们后面的深度定制ROM一定非常精彩!

7.小结
本文以CyanogenMod源码编译总结了Android改造系统的一个基本环境,是我们之后ROM系统定制,优化的基础,是android深入学习的必会技能,特此分享,共勉!

 

===================================================================================================

 

本来想下载Android官方源代码,没想到android.git.kernel.org维护,不能访问,非常遗憾,并因此还郁闷了几天。 
后来转投MIUI,没找到它的源码,不知道它的"超过40万人社区开发团队"是什么意思,求解具体开发人员几何,都是谁?
后来一想,竟然忘记了CyanogenMod这茬,这可是的的确确的开源啊,我的手机一直也在用CyanogenMod系统的,感觉确实不错。

1.准备
我得环境如下,
VirtualBox 4.1.2.r73507
Ubuntu11.10 Beta2(32位)
下载CyanogenMod的gingerbread分支
Ubuntu的环境配置大家可以参考我前面写的《Android拓展系列(3)--Android源码下载》,也可以参考http://source.android.com/。
这里着重说下Android 2.3以上需要借助JAVA6,安装Java6,我推荐如下安装:

?
1
2
3
4
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

其中第二句可能会出错,不过没关系,跳过即可。 

2.安装repo
因为android.git官方已经不能访问,所以我这里提供一个repo文件的下载地址,免的大家到处搜索:http://115.com/file/cl15goo2#repo 
把repo拷贝到ubuntu根目录下得bin下
操作方法:

?
1
2
3
4
5
6
$mkdir bin
//下载的repo脚本拷贝本地bin文件夹下
//设置本地repo的可执行权限
$chmod a+x ~/bin/repo
$alias repo="~/bin/repo"
//这里我用特意用别名,大家也可以按常规方法把repo的路径添加到PATH中

3.ubuntu中环境的配置
JDK前面已经说了,其他的软件列表如下:

?
1
$sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool 

这些软件都安装好之后我们开始下载CyanogenMod源码。

4.下载CyanogenMod源码

?
1
2
3
4
5
6
7
//从用户根目录下开始
//创建CyanogenMod文件夹来放置后面所有的代码
$mkdir CyanogenMod
//获取gingerbread的分支源代码
$repo init -u git://github.com/CyanogenMod/android.git -b gingerbread 
//同步服务器代码到本地,-j16据网友反应是多开网络连接,从而能提高下载速度
$repo sync -j16

这个过程非常的漫长,大家慢慢的等吧,本人是晚上睡觉的时候下载,第二天早上醒来就Done了。

5.编译源码
在CyanogenMod/device目录下有很多款手机的对应版本:


里面有个htc,本人是htc G9,也就是Liberty,我们点击看看:


我的liberty静静的优雅的舒服的躺在那里。
所以本人决定编译一个我手头上的liberty对应的系统版本,编译完成后我们直接刷机。
第一步:读取手机上的一些私有配置文件

?
1
2
$cd CyanogenMod/device/htc/liberty
$./extract-files.sh

图示如下:

第二步:生成编译脚本文件

?
1
2
3
4
5
$cd ~/CyanogenMod/vendor/cyanogen 
$./get-rommanager
$./extract-google-files
//复制编译脚本文件到CyanogenMod目录下,后面编译整个系统用的就是这个文件
$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_lieberty.mk  ~/CyanogenMod/buildspec.mk

贴上进行时图片:

第三步:编译脚本
回到CyanogenMod目录下,执行脚本。

?
1
2
3
4
5
6
7
//初始化脚本,这个是后面的重要基础步骤
$source build/envsetup.sh
//选择编译的产品
//这个命令需要一小会儿时间,但是又没提示,耐性等待一下
$lunch cyanogen_liberty-eng
//开始编译
$make -j4 CYANOGEN_WITH_GOOGLE=true otapackage

这个过程也是相当的漫长,还好一般情况下我们只是第一次需要项目整个编译,后面只需要编译某个模块。
可惜完成的时候我忘记截图了,可惜不能上图了。
在 编译的过程中,我们有一点要特别注意,虚拟机的内存不要太小,本人刚开始分配虚拟机512M内存,一会儿就出错,重新编译又一会儿出错,如此重复,而且还 导致某个文件被破坏掉了(values-cs/strings.xml中某行少一个右尖括号,这个我百思不得其解),后来我把虚拟机内存调到1024M就 一直编译通过了。

第四步:生产刷机zip包。

?
1
./vendor/cyanogen/tools/squisher

有图为赏:


用这个zip包,我刷到我手机上,一切正常。

6.定制ROM
有了以上的环境后,我们就可以大展手脚,深度定制ROM, 做自己的操作系统,自己的CyanogenMod,自己的MIUI,自己的Android系统。
举个最简单的例子:
我 们换一下默认menu菜单的选中背景图,我们进入CyanogenMod/frameworks/base/core/res/res/mdpi目录下 (因为htc liberty的分辨率是480x320),找到图片highlight_pressed.png,替换为绿色的背景:


那么修改资源文件后,我们需要重新编译framework-res.apk:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//回到根目录
$cd
//切换到管理员权限
$sudo -s
//进入CyanogenMod目录,并初始化脚本文件
$cd CyanogenMod
$source build/envsetup.h
//选择产品
$lunch cyanogen_liberty-eng
//进入资源编译目录(或者它的子目录也可以)
$cd frameworks/base/core/res
//开始编译framework-res.apk
$mm

编译完成,示意图如下:

在CyanogenMod/out/target/product/liberty/system/framework目录下生成了一个framework-res.apk文件,就是我们修改Menu选中项图片后新打的资源包。
现在我们需要把这个资源包更新到手机中。
USB连上手机后,一切正常的话(adb当然也是事前要装好的哦),打开终端:

?
1
2
3
4
5
6
//使其可写
$adb remount
//替换手机中资源包
$adb push ~/CyanogenMod/out/target/product/liberty/system/framework/framework-res.apk /system/framework/
//重启手机后生效
$adb reboot

重启后,进入桌面,我们点击Menu,选择一项:

修改资源包,可以修改样式,显示图片,调整布局等等。
你也可以直接修改framework代码,在framework/base/core /java目录下,修改对应的类,比如逻辑处理,样式重绘等等,然后同上面类似编译,把生成的framework.jar替换掉手机的/system /framework下的framework.jar,重启手机即可看到效果。
你也可以添加系统应用,删除系统应用等等,这里特别提到一点,系统应用可以通过如下命令删除(具有root权限):

?
1
2
3
4
5
$adb remount
$adb shell
#cd system/app
//用rm删除系统FM应用
#rm FM.apk

有了这些基础知识,我相信我们后面的深度定制ROM一定非常精彩!

7.小结
本文以CyanogenMod源码编译总结了Android改造系统的一个基本环境,是我们之后ROM系统定制,优化的基础,是android深入学习的必会技能,特此分享,共勉!  



//////////////////////////////////////////////22222222222222222222222222222/////////////////////////////////////////////////

准备编译环境

注意: 编译环境只需要搭建一次,如果你之前搭好环境了,就直接跳到 从设备获取必须文件.


安装ADB指令

安装 Android SDK.


安装编译必须的组件包

安装编译ROM必须用到的一些组件包:


32位&64位系统都必须安装以下组件包:

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool

64位系统还需要安装一下组件包:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib
提示: 安装的时候可能会提示部分组件包被新的包代替,没有关系的。


提示: 如果是Ubuntu 10.10, 你必须通过以下命令增加一个合作源才可以安装sun-java6-jdk:
add-apt-repository "deb http://archive.canonical.com/ maverick partner"


创建目录

你必须先创建一些必须的目录来同步CM源码

输入以下命令建立bin目录用来存放repo等工具:

mkdir -p ~/bin

建立android/system目录来放置CM源码,这里的android和system都是可以按照个人需要改变的。比如cm/cm7、cm/cm9等等。

mkdir -p ~/android/system


安装Repo功能

通过一下命令安装 "repo" 工具:

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo ~/bin/repo
chmod a+x ~/bin/repo
提示: 你可能需要重启电脑才能生效。

接下来对repo设置你要获取的源码分支:

cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
repo sync -j16

从设备获取必须文件

NOTE: 这个步骤每台手机机器只要操作一次即可,不用每次编译都执行,之前执行过的话,直接跳转到下载RomManager这个步骤.

You will need to have a {{{Device}}} with a working copy of CyanogenMod install and ADB working on the computer. This script will copy the proprietary files from the device.

Connect the device to the computer and ensure that ADB is working properly.

cd ~/android/system/device/{{{vendor}}}/{{{device}}}/
./extract-files.sh
NOTE: If some hardware isn't working, like camcorder or FM radio, you will need to find the updated prop blobs.


下载RomManager

注意: 这个步骤仅仅是为了更新RomManager,如果你不想更新到最新版本,可以直接跳到 编译CM源码(CyanogenMod).

但是,要注意的是,RomManager是必须的,没有RomManager可能会出现编译不通过。

执行以下命令就可以了:

~/android/system/vendor/cyanogen/get-rommanager

编译CM源码(CyanogenMod)

更新源码

首先更新一下源码:

cd ~/android/system/
repo sync

确定机型 & 编译

确定你要编译的机型代号.

. build/envsetup.sh && brunch 机器代码

检查源码

First, check for updates in the source:

cd ~/android/system/
repo sync

刷机测试

  1. 在~/android/system/out/target/product/机器代码文件夹下可以找到编译好的ROM包,名称一般类似update.cm-XXXXX-signed.zip.


/////////////////////////////////////3333333333333333333///////////////////

Android SDK Emulator: Compile CyanogenMod (Linux)

How to compile CyanogenMod for the Android Emulator.

This how-to was written for Ubuntu 10.04 & Ubuntu 10.10Android Emulator r08CyanogenMod 7.x (Gingerbread), on 2 February 2011.

Contents

  [hide]
  • 1 Prepare the Build Environment
    • 1.1 Install the ADB
    • 1.2 Install the Build Packages
    • 1.3 Create the Directories
    • 1.4 Install the Repository
  • 2 Download RomManager
  • 3 Building CyanogenMod
    • 3.1 Check for updates
    • 3.2 Configure Build
    • 3.3 Compile
  • 4 Install

Prepare the Build Environment

NOTE: You only need to do these steps the first time you build. If you previously prepared your build environment, skip to Download RomManager.
NOTE:
在准备开工之前,请务必确保硬盘工作空间不少于20G(最低不能低于15G),且不能是VFAT或NTFS格式。

Install the ADB

Install the Android SDK.

Install the Build Packages

Install using the package manager of your choice:

For 32-bit & 64-bit systems:

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtools

NOTE:

FOR OPENSUSE : bison flex gperf schedtool squashfs libesd-devel build libSDL-devel gcc-c++ java-1_6_0-sun java-1_6_0-sun-devel

For 64-bit only systems:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib

Note: On Ubuntu 10.10, and variants, you need to enable the parter repository to install sun-java6-jdk:

add-apt-repository "deb http://archive.canonical.com/ maverick partner"

Create the Directories

You will need to set up some directories in your build environment.

To create them:

mkdir -p ~/bin
mkdir -p ~/android/system

Install the Repository

Enter the following to download make executable the "repo" binary:

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
NOTE: You may need to reboot for these changes to take effect.

Now enter the following to initialize the repository:

cd ~/android/system/
repo init -u http://github.com/CyanogenMod/android.git -b gingerbread
repo sync -j16
NOTE:
1、完整下载约5G多,下载过程不能断网;
2、实际表明,使用http连接方式获取代码更佳;
3、如果下载过程断链出错退出,或者手动kill过python进程,在执行sync之前需要删除临时文件:
find .repo/ -name tmp* -exec rm {} \;
4、如果下载完成,长时间等待下面提示时; 
Fetching projects: 98% (208/211)
  则需要kill掉python进程,去掉 -j16 参数再次同步
repo sync
5、如果下载过程中报某个目录一直出错,则需删除该目录再同步
6、如果想少下载一些文件,则可以不下载针对具体设备的代码(可以减少下载2G左右的内容),方法如下:
a. repo init 执行完毕后,编辑 .repo/manifest.xml 文件,注释掉device相关的projiect,如下
  <project path="dalvik" name="CyanogenMod/android_dalvik" />
  <project path="development" name="CyanogenMod/android_development" />
  <project path="device/common" name="CyanogenMod/android_device_common" />
  <project path="device/sample" name="CyanogenMod/android_device_sample" />
 <!--
  <project path="device/advent/vega" name="CyanogenMod/android_device_advent_vega" />  <project path="device/common" name="CyanogenMod/android_device_common" />  <project path="device/zte/blade" name="CyanogenMod/android_device_zte_blade" />
……
  <project path="device/zte/v9" name="CyanogenMod/android_device_zte_v9" />  
  -->
  <project path="external/alsa-lib" name="CyanogenMod/android_external_alsa-lib" />

b. repo sync 完成后,编辑 vendor/cyanogen/products/AndroidProducts.mk  文件,只保留下面内容

PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/cyanogen_generic.mk 

7、如果在需认证的proxy(如公司网络)下同步,则请务必更新python版本到2.7,否则可能出错。

Download RomManager

NOTE: This only needs to be done when an update to RomManager is released. If you are-up-to date, you may skip toBuilding CyanogenMod.

Download ROM Manager which is needed by the build:

cd ~/android/system/vendor/cyanogen/
./get-rommanager

Building CyanogenMod

Check for updates

First, check for updates in the source:

cd ~/android/system/
repo sync

Configure Build

Now, your environment must be configured to build specifically for the Android Emulator. To set up your build environment:

. build/envsetup.sh
lunch cyanogen_generic-eng

NOTE:
1、新建shell进入工作目录之后都需要执行上述命令
2、如果想彻底重新编译,需执行 make clean
3、FOR OPENSUSE:
   去掉OpenSuSE普通用户下执行envsetup.sh的提示:修改 schedtool 为 /usr/sbin/schedtool 即可。
function mka() {
    case `uname -s` in
        Darwin)
            make -j `sysctl hw.ncpu|cut -d" " -f2` "$@"
            ;;
        *)
            /usr/sbin/schedtool -B -n 1 -e ionice -n 1 make -j `cat /proc/cpuinfo | grep "^processor" | wc -l` "$@"
            ;;
    esac
}


Compile

Next, we will build the actual ROM.

mka

NOTE:

1、参考编译时间:90min(ThinkPad T61 ,3GB RAM )
2、编译出错处理(自己摸索的,非官方)
错误1:编译约1个小时后出现的:
target Strip: libutils (out/target/product/generic/obj/lib/libutils.so)
target Dex: QuickSearchBox
frameworks/base/core/java/android/widget/VideoView.java:46: package com.ti.omap.omap_mm_library does not exist
import com.ti.omap.omap_mm_library.OmapMMLibrary;
                                  ^
frameworks/base/core/java/android/widget/VideoView.java:62: cannot find symbol
symbol  : class OmapMMLibrary
location: class android.widget.VideoView
    private OmapMMLibrary mOmapMMHandle = null;
            ^
frameworks/base/core/java/android/widget/VideoView.java:196: cannot find symbol
symbol  : class OmapMMLibrary
location: class android.widget.VideoView
            mOmapMMHandle = new OmapMMLibrary();
                                ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
错误分析和处理:
看起来是OmapMMLibrary的找不到,后来发现此代码在framework/base/omapmmlib中,修改 build/core/pathmap.mk的FRAMEWORKS_BASE_SUBDIRS,如下


FRAMEWORKS_BASE_SUBDIRS := \
$(addsuffix /java, \
    core \
    graphics \
    location \
    media \
    opengl \
    sax \
    telephony \
    wifi \
    vpn \
    keystore \
    voip \
    omapmmlib\
 )



错误2:编译即将完成时出现的,此时system.img还未生成
Checking API: checkapi-last
Checking API: checkapi-current
(unknown): error 13: Class android.app.Profile changed final qualifier
(unknown): error 13: Class android.app.ProfileGroup changed final qualifier
(unknown): error 24: Method android.app.ProfileManager.getProfile has changed deprecation state
(unknown): error 24: Method android.app.ProfileManager.setActiveProfile has changed deprecation state
(unknown): error 3: Added class MultiSelectListPreference to package android.preference
(unknown): error 4: Added public method android.app.Profile.getProfileGroup
(unknown): error 4: Added public method android.app.Profile.getStatusBarIndicator
(unknown): error 4: Added public method android.app.Profile.getUuid
(unknown): error 4: Added public method android.app.Profile.setStatusBarIndicator
(unknown): error 4: Added public method android.app.ProfileGroup.getUuid
(unknown): error 4: Added public method android.app.ProfileManager.getProfile
(unknown): error 4: Added public method android.app.ProfileManager.profileExists
(unknown): error 4: Added public method android.app.ProfileManager.setActiveProfile
(unknown): error 4: Added public method android.telephony.TelephonyManager.isDormancyRejected
(unknown): error 4: Added public method android.telephony.TelephonyManager.setDormancyRejected
(unknown): error 5: Added public field android.Manifest.permission.RAW_AUDIO
(unknown): error 9: Removed public method android.app.Profile.getProfileGroup
(unknown): error 9: Removed public method android.app.ProfileGroup.getName

******************************
You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
   1) You can add "@hide" javadoc comments to the methods, etc. listed in the
      errors above.

   2) You can update current.xml by executing the following command:
         make update-api

      To submit the revised current.xml to the main Android repository,
      you will need approval.
******************************



make: *** [out/target/common/obj/PACKAGING/checkapi-current-timestamp] Error 38
make: *** Waiting for unfinished jobs....
htmlDir not a directory: out/target/common/docs/gen
DroidDoc took 252 sec. to write docs to out/target/common/docs/doc-comment-check

错误处理:执行一次 make update-api 后编译可以顺利完成。

Install

  1. Create a folder called android-9-cyanogen on Your/Android-SDK/platforms/
  2. Copy the contents of Your/Android-SDK/platforms/android-9 into Your/Android-SDK/platforms/android-9-cyanogen
  3. Copy the ramdisk.img system.img and userdata.img file from ~/android/system/out/target/product/generic toYour/Android-SDK/platforms/android-9-cyanogen/images/
  4. Run the Android AVD Manager and select the second Android 2.3 target.


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 户口年龄上大了怎么办 孩子年龄报小了怎么办 招工档案年龄有涂改怎么办 退伍军被别人顶替上班怎么办 二孩政策前生的怎么办 孩子晕车怎么办最有效方法得当 事业单位编外人员改革工伤怎么办 工伤仲裁后法院一审判决后怎么办 我媳妇删了我该怎么办 老婆离家出走不照顾小孩怎么办 车停在4s店损坏怎么办 车辆年检贴丢了怎么办 卖衣服别人嫌贵怎么办 武汉铁路医保卡丢了怎么办 高铁列车员年龄大了怎么办 尚客优酒店会员怎么办 钢铁雄心4人力不足怎么办 未经车主同意私自将车卖了怎么办 剧本给几个制片人看过怎么办 没有产品经理ui设计师怎么办 老板请朋友吃饭司机应该怎么办 被化妆学校坑了怎么办 快车约得太远怎么办 工资好低2000多怎么办 苹果手机不能下载软件怎么办 苹果手机下不了软件怎么办 苹果6s下不了软件怎么办 苹果6下不了软件怎么办 ipad更新系统卡住了怎么办 ipad卡住了关不了机怎么办 ipad卡住了没反应怎么办 苹果7下不了软件怎么办 苹果手机开机密码忘了怎么办 苹果开机密码忘了怎么办 我的ipad很卡怎么办 6s升级后卡顿严重怎么办 软件升级后手机卡顿怎么办 ps通道抠图模糊怎么办 电脑锁屏死机了怎么办 ipad电源键坏了怎么办 华为平板死机黑屏了怎么办