Orange Pi PC Android 源码编译

Orange Pi PC Android 源码编译


公司需要用Orange Pi PC 作为贩卖机台的主板,发现这板子的破系统,只能横屏,adb 调试默认关闭。只好下载源码编译系统,其中遇坑,幸好官方文档写得挺详细的。

构建编译环境

  • Linux主机 硬盘空间至少 50G(可满足一次完全编译)
  • Linux主机中需要:
    • Python 的 2.7.3 版本;
    • GNU Make 的 3.81-3.82 版本;
    • git 的 1.7 或更高版本;
    • Java 1.6 版本

安装JDK

  1. oracle jdk-6u31下载Java JDK 。
  2. 点击接受许可协议
  3. 点击jdk-6u31-linux-x64.bin
  4. 用您的Oracle帐户登录到Oracle.com
  5. 将JDK下载到您的〜/ Downloads目录
  6. 下载后,打开一个终端,然后输入以下命令。
cd ~/Downloads
chmod +x jdk-6u31-linux-x64.bin
./jdk-6u31-linux-x64.bin

根据生成jdk 目录配置环境变量, 执行命令: vi ~/.bashrc

export JAVA_HOME=/home/jfn/androidDevelop/jdk1.6.0_31 #jdk的主目录
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ANDROID_SDK/platform-tools:$PATH

使jdk环境变量生效, 执行 source ~/.bashrc

查看jdk版本, 执行 java -version、javac –version

安装make-3.81

1.下载并解压make-3.81.tar.bz2,进入make-3.81目录并执行 ./configure

2.执行完后make-3.81目录会多出一个build.sh文件,执行./build.sh 即可得到make文件

3.验证编译出来的make是不是我们想要的3.81版本。make -v

4.替换系统原有的make。(记得备份原有文件。)

cd /usr/bin/
sudo mv ./make ./make.backup
mv ~/make-3.81/make ./

安装所需的软件包(Ubuntu 16.04)

您将需要一个64位版本的Ubuntu。推荐Ubuntu 16.04。

sudo apt-get install git gnupg flex texinfo bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 g++-multilib tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

遇到arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6:cannot open shared object
file: No such file or directory 这种坑爹事,sudo apt-get install lib32stdc++6 就OK了

/home/Jfn/work/H3-homlet-1.0/lichee/out/sun8iw7p1/linux/common/buildroot/build/host-m4-1.4.15/lib
stdio.h 第456#if defined gets
#undef gets
_GL_WARN_ON_USE (gets, "getsis a security hole - use fgetsinstead");
#endif
出现错误:awk: line 2: function strtonum never defined
awk: line 2: function strtonum never defined
ERROR: build kernelFailed

解决办法:

sudo dpkg-reconfigure dash
sudo apt-get install gawk
sudo apt-get install u-boot-tools

使用网络 adb 调试

在 android/device/softwinner/dolphin-common/init.sun8i.rc 添加下面的语句:

on boot
setprop service.adb.tcp.port 5555
stop adbd
start adbd

源码解压后会有android 和 lichee 两个目录.lichee 下的./build.sh 文件权限root,所以切换root 用户执行脚本吧

编译lichee 代码(内核)

cd lichee
sh build.sh config

接着选择构建方案号

All available chips:
   0. sun8iw6p1
   1. sun8iw7p1
   2. sun8iw8p1
   3. sun9iw1p1
Choice: 1
All available platforms:
   0. android
   1. dragonboard
   2. linux
Choice: 0
All available business:
   0. dolphin
   1. secure
   2. karaok
Choice: 0

编译成功

sun8iw7p1 compile Kernel successful


INFO: build kernel OK.
INFO: build rootfs ...
INFO: skip make rootfs for android
INFO: build rootfs OK.
----------------------------------------
build sun8iw7p1 android dolphin lichee OK
----------------------------------------

Android 源码编译命令

cd android/
source ./build/envsetup.sh
lunch dolphin_fvd_p1-eng
extract-bsp #拷贝内核及驱动模块
make –j8 #后面的数值为同时编译的进程,依赖于主机的配置
pack #打包生成固件

在 Android Studio中导入 Android 源码

/development/ide 下分别有eclipse/emacs/intellij 这3个ide 的配置文件。因为源码文件十分多,强烈建议as增加jvm 内存大小。

生成导入AS所需配置文件(*.ipr)

  • 编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)

  • 检查out/host/linux-x86/framework/目录下是否有idegen.jar

如果idegen.jar不存在, 执行:

mmm development/tools/idegen/
development/tools/idegen/idegen.sh

等待出现类似下面的结果:

Read excludes: 5ms
Traversed tree: 44078ms

这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件.

Tips:AS在导入代码时比较慢,建议先修改android.iml,将自己用不到的代码exclude出去.可以仿照过滤.repo文件夹的语法,如:

<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
...

还可以通过as 的module settings - dependents 删除掉所有不需要的module-library项

这样在导入时就会跳过abi和art文件夹.过滤的越多,AS的处理速度就会越快.最后在AS中打开源码根目录下新生成的android.ipr

解决源码中跳转错误问题

要为当前工程设置正确的SDK和JDK,需要Android API 19 Platform,jdk 则无所谓,因为libcore 目录下包括了jdk 的源码。添加一个jdk 接着把classpath 所有项remove 掉,接着Android API 19 Platform 选择空的jdk.如下图
步骤1

点击Project
步骤2

点击Modules, 选择相应的代码模块,比如frameworks、packages 等源码目录,且把它们移动到最前优先从这两个文件夹下查找,而不是在Android.jar中查找
这里写图片描述
NOTE: Empty Library 不要紧的。

DEBUG源码

在’Modules’中添加’Android Framework’来让AS将它作为一个Android工程,从而方便我们调试代码.
这里写图片描述

在代码中加断点,然后选择’Run’->’Attach debugger to Android process’或者直接点击ToolBar 上的Attach debugger图标。在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值