系统开发

 

下载系统源码


版本 下载地址 提取密码
android4.3-work http://pan.baidu.com/s/1bnwnAUF 5c74
android5.1-work https://pan.baidu.com/s/1slCeWaD sn7u
android4.3-mirror http://pan.baidu.com/s/1o7A2OuI 4pxg
android5.1-mirror http://pan.baidu.com/s/1c24rEQs jnv8

源码下载完成后请仔细阅读 readme.txt

强烈建议:先将我们提供的repo工具替换掉服务器上的repo工具, 以免出现循环引用问题。repo工具下载方法:


 $ wget http://git1.ingenic.com.cn:8082/bj/repo 
 $ chmod +x repo 
后续如果需要同步更新,首先提供 ~/.ssh/id_rsa.pub 文件于我司项目人员,待我司赋予相应权限后,检查同步源码权限(此步骤不可省,因为 ssh 首次连接需要用户输入 yes 以确认对方 key fingerprint 正确,而在 repo 工具中交互往往会失败):

$ ssh -p 29418 sz_watch@git1.ingenic.com.cn

关于mirror版本使用的Tips(此处以android4.3-mirror版本为例):

1.源码下载完成后,其他员工(即客户端)由内部服务器下载代码(需将 localhost 替换为服务器真实地址;假设将源码解压在内部服务器/mnt/data/elf-mirror/目录,用户可自行更改其它途径;此处以标准 ssh 协议为例):

$ repo init -u ssh://name@localhost/mnt/data/elf-mirror/manifests.git  -b release-4.3 -m elf-from-mirror.xml
$ repo sync
2.团队内部代码修改之后不可以直接提交至默认分支,否则后续内部服务器从我司同步代码会发生冲突,为需要修改的代码库新建分支, 譬如要修改 kernel 代码,需要先为 kernel 建立分支(客户端):

kernel $ git checkout -b new-branch
kernel $ echo "new file" > new file
kernel $ git add . && git commit -m "new change"
kernel $ git push os new-branch:new-branch
Counting objects: 4, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 278 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://name@localhost/mnt/data/elf-mirror/android/kernel/kernel-3.0.8
 * [new branch]      new-branch -> new-branch
3.为 manifests xml 建立新分支然后修改(客户端):

.repo/manifests $ git checkout -b new-branch
.repo/manifests $ vi elf-from-mirror.xml
-  <project path="kernel" name="android/kernel/kernel-3.0.8" remote="os" />
+ <project path="kernel" name="android/kernel/kernel-3.0.8" remote="os" revision="new-branch" />
.repo/manifests $ git add . && git commit -m "new change" .repo/manifests $ git push origin new-branch:new-branch Counting objects: 5, done. Delta compression using up to 24 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 353 bytes, done. Total 3 (delta 2), reused 0 (delta 0) To ssh://name@localhost/mnt/data/elf-mirror/manifests.git * [new branch] new-branch -> new-branch
4.通知其他同事执行下述命令切换代码分支(客户端):

$ repo init -u ssh://name@localhost/mnt/data/elf-mirror/manifests.git -b new-branch -m elf-from-mirror.xml
$ repo sync # 不需要跟额外参数因为内部服务器不存在其它分支代码

温馨提示

repo 工具版本 v1.12.14 之后才能同时支持 --current-branch 和 --no-tags 参数,如果不用 tar 包自带工具,使用系统默认 repo 或 ./repo 来操作,请确保其版本不低于此要求,自带工具版本:

$ .repo/repo/repo --version
repo version v1.12.16
       (from http://194.169.1.26:8080/tools/git-repo)
repo launcher version 1.21
       (from /mnt/data/duke/pack/elf-work/.repo/repo/repo)
git version 1.7.9.5
Python 2.7.3 (default, Jun 22 2015, 19:33:41) 
[GCC 4.6.3]

电信服务器: git.ingenic.com.cn

联通服务器: git1.ingenic.com.cn

如果当前使用服务器比较慢, 可以切换使用

 

配置开发环境


 

相关工具下载列表


名称 下载地址 提取密码
android-SDK-linux http://pan.baidu.com/s/1pJ1hB7t epgk
android-NDK http://pan.baidu.com/s/1kTCfiKJ 56w5
JDK http://pan.baidu.com/s/1c2qKB8s xbh7

编译主机建议使用Ubuntu 64Bit系统(以下以Ubuntu 12.04 64Bit系统为例),编译主机需要安装jdk,sdk和ndk。

1.JDK

编译android4.3 使用jdk1.6版本,android5.0及以上才能支持jdk1.7及以上版本,此处以jdk1.6.0_34为例:

配置环境变量

修改 ~/.bashrc,在文件末添加java文件夹的路径,例如:


export JAVA_HOME=/work/soft/jdk1.6.0_34  
export PATH=$PATH:$JAVA_HOME/bin
检查是否安装成功

此时输入java -version,显示如下则表示安装成功:


$java -version
java version "1.6.0_34"
Java(TM) SE Runtime Environment (build 1.6.0_34-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)

2.SDK

下载地址:

ftp://58.250.243.11/android-sdks-elf.tar.gz

注意:此处提供的android-sdks是用来配置ant编译elf工程的android sdk包,做了一些裁剪,分别把add-ons docs samples system-images文件夹内容清空,所以不能用来配置eclipse。.

配置环境变量

修改 ~/.bashrc,在文件末添加SDK文件夹的路径,例如:


export ANDROID_HOME=~/work/soft/android-sdk-linux  
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/build-tools

3.NDK

配置环境变量

修改 ~/.bashrc,在文件末添加NDK文件夹的路径,例如:


export NDK_HOME=~/work/soft/android-ndk-r12b
export PATH=$PATH:$NDK_HOME
  
检查是否安装成功

此时输入ndk-build,如果不是显示ndk-build not found则说明ndk安装成功

安装编译时所需要的软件


$ sudo apt-get install git-core gnupg flex bison gperf build-essential \  
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \  
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \  
  libgl1-mesa-dev g++-multilib mingw32 tofrodos xsltproc \  
  python-markdown libxml2-utils zlib1g-dev:i386 ant 
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so  

 

编译方法


首先进行一次完整编译,编译命令如下:

./build/smk.sh  --preset=aw808_v11_wisesquare_iwop //方屏

./build/smk.sh  --preset=aw808_v11_naturalround_iwop //圆屏

编译完成后,在out/target/product/aw808_iwop/会产生输出文件,主要用于烧录的镜像文件有:

u-boot-with-spl-mbr-gpt.bin、 boot.img、 system.img、 recovery.img

如果只需单独编译某个镜像文件,参考方法如下(前提是已经进行过一次完整编译):

以编译 aw808_iwop-userdebug 为例说明, 假设代码TOP目录是 ANDROID

1. 单独编译 u-boot-with-spl-mbr-gpt.bin 的步骤


cd ANDROID
. build/envsetup.sh
lunch aw808_iwop-userdebug
cd bootable/bootloader/uboot/
make clean
make aw808_wisesquare_an51_msc0_config
make

注意: 如果当前目录中生成 U-Boot 固件,名字为"u-boot-with-spl-mbr-gpt.bin", 则 U-Boot 固件编译完成. 
若当前目录中没有"u-boot-with-spl-mbr-gpt.bin" 则需要执行接下来的步骤

cd floader-m200/ 
make clean
make CROSS=mipsel-linux-android- CONFIG_BOARD=boards/aw808_board.h CONFIG_PART_TAB=boards/partitions.tab
cp floader_m200_with_mbr_gpt_and_sleeplib.bin ../
cd ../ 
./mk_floader_m200_with_mbr_gpt_sleeplib_and_uboot.sh
至此,U-Boot 固件"u-boot-with-spl-mbr-gpt.bin"编译完成

2. 单独编译 boot.img 的步骤


cd ANDROID
. build/envsetup.sh
lunch aw808_iwop-userdebug
cd kernel/
make aw808_wisesquare_defconfig
make -j8
cp arch/mips/boot/compressed/zImage ../device/ingenic/watch/products/aw808_iwop/kernel -vf
cd ANDROID 
make bootimage -j8
生成 boot.img 固件, 位置 out/target/product/aw808_iwop/boot.img  

3. 单独编译 system.img 的步骤


cd ANDROID
. build/envsetup.sh
lunch aw808_iwop-userdebug
make systemimage -j8
生成 system.img 固件, 位置 out/target/product/aw808_iwop/system.img     

4. 单独编译 recovery.img 的步骤


cd ANDROID
. build/envsetup.sh
lunch aw808_iwop-userdebug
make recoveryimage -j8
生成 recovery.img 固件, 位置 out/target/product/aw808_iwop/recovery.img  

5. 注意事项

最好新打开一个 shell 终端用于编译, 因为旧的 shell 终端(使用了一段时间的 shell 终端)会对环境变量造成干扰, 影响 Android 的编译. 编译 Android 4.3 需要使用 JDK 1.6, 编译 Android 5.1 需要使用 JDK 1.7

 



烧录方法


详细烧录方法指南