编译android7.1源码环境的配置以及中途可能出现问题的总结

在项目要求将apk文件打包到安卓系统7.1出了一大堆问题,由于我是windows10系统,所以在电脑上装了个virtualbox虚拟机,并且装上了ubuntu-18.04.2。

接下来就是在这个虚拟机系统上搭建编译安卓7.1源码所需要的环境要求了

1.安装jdk并配置环境变量

     sudo apt-get update
     sudo apt-get install openjdk-8-jre
     sudo apt-get install openjdk-8-jdk

    配置环境变量:sudo vim /etc/profile,在打开的文件中输入下面配置即可完成jdk环境变量的配置

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
   export JRE_HOME=${JAVA_HOME}/jre 
   export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
   export PATH=${JAVA_HOME}/bin:$PATH

  注意:当有多套代码需要不同的jdk编译是,可以在指令窗口直接输入下面的命令进行切换,注意,切换只对当前终端有效。(记得路径要根据自己jdk路径修改)export JAVA_HOME=/usr/lib/jvm/jdk1.6;export PATH=/usr/lib/jvm/jdk1.6/bin:$PATH

 

2.安装其他环境要求的配置如下:

  sudo apt-get install libx11-dev:i386 libreadline-dev:i386 libgl1-mesa-dev g++-multilib -y git flex bison gperf build-essential libncurses5-dev:i386 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev  gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev libgl1-mesa-dev libxml2-utils xsltproc unzip m4 lib32z1-dev ccache 

3.为了避免中途安装过程中出现一些奇怪的错误,也可以安装一下如下的配置; 

    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

4.设置缓存

  export USE_CCACHE=1

5.让其永久生效,这样就不用每次重新打开终端时,重新设置ccache环境变量了。

在源码的根目录下执行下述命令,设置缓存最大50G

$ prebuilts/misc/linux-x86/ccache/ccache -M 50G

6. 其他预处理

为防止编译中途出现问题,请先额外安装如下软件包:

$ sudo apt-get install sharutils

$ sudo apt-get install lzop

 

为防止编译时内存不够,请先设置交换分区

$ sudo fallocate -l 4G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
//
如果不执行以下步骤,则关机重启后需要重新设置swap分区,

开机自动挂载swap,需要root权限:
使用 vi  nano  /etc/fstab 文件底部添加如下内容:

$ vi /etc/fstab

或者使用gedit进行编译:

$ gedit /etc/fstab

将下述字符添加到最末尾,保存退出。
/swapfile none swap sw 0 0

7.编译安卓7.0源码出现make: *** [ninja_wrapper] Error 1时

   做如下处理:

   1.在源码根目录下:

      ./prebuilts/sdk/tools/jack-admin list-server
      prebuilts/sdk/tools/jack-admin start -server
      prebuilts/sdk/tools/jack-admin stop -server,如果这几个命令不存在,则执行如下安装操作

      cd prebuilts/sdk/tools/
     ./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar

     再做如下对jack-admin的处理:vim 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 -Xmx8192m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

然后执行如下两条命令:

     ./prebuilts/sdk/tools/jack-admin stop-server

     ./prebuilts/sdk/tools/jack-admin start-server

2.build/envsetup.sh脚本中最后添加:export LC_ALL=C

8.编译步骤

   8.1 内核编译:

    编译内核,进入到kernel目录下:

  $ cd kernel

  $ make rockchip_defconfig(不能执行该步骤,否则编译会不通过)

  $ make rk3288-box.img

 编译完成后查看kernel根目录下是否有kernel.img,resource.img两个镜像文件,若有则表示编译成功。

  8.2 编译源码:

   cd 到源码根目录下,初始化编译环境

  $ source build.sh

  编译源码,后面的数字根据CPU的核心数和线程数而定

  $ make –j4   

 生成用于升级的整包,target包

  $ make otapackage

  执行源码根目录下的mkimage.sh脚本生成镜像,位于/rockdev/Image-rk288目录。

  ./mkimage.sh ota

  此时整个编译过程完成

  一次编译完成后,请备份以下目录中的文件:

  /rockdev/Image-rk3288_box/目录下所有文件:

 

 /kernel/kernel.img

  /kernel/resource.img

 /out/target/product/rk3288_box/system/build.prop

  /out/target/product/rk3288_box/rk3288_box-ota-eng.root.zip  //用于整包升级的zip包,该包可以直接放在SD卡、U盘或 者/mnt/internal-sd根目录下进行升级。

  /out/target/product/rk3288_box/target_files-package.zip     //用于OTA升级生成差分包的target包

8.3升级ubootloader_VXXXXX.bin:

  将需要升级的loader文件拷贝到device/rockchip/common/loader下,make otapackage生成的完整包中会包含这个loader。Loader必须保证版本号比原固件中的loader版本号更高。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值