当前位置:首页 » 安卓系统 » ubuntu编译android

ubuntu编译android

发布时间: 2022-12-08 12:57:30

‘壹’ Ubuntu 16.04编译Android5.1系统源码

Android 5.1版本也是一个比较大的版本,目前很多盒子还都采用这个版本。 Ubuntu 14.04 上编译可能遇不了什么问题,但是在 Ubuntu 16.04 上会遇到一些问题。随着一次次编译Android源码,将其总结起来会比较好。

以下是脚本,但是第一步需要手动修改,修改这两处之后编译就没有任何错误了

‘贰’ 如何在ubuntu10.04环境下编译android

安装JDK1.6,使用如下命令
sudo chmod u+x jdk-6u23-linux-x64.bin
sudo cp -a jdk-6u23-linux-x64.bin /opt
sudo /opt/jdk-6u23-linux-x64.bin
sudo rm -f /opt/jdk-6u23-linux-x64.bin
2
设置JDK环境变量,在HOME根目录下按键盘Crtr+H显示HOME目录下所有文件,打开.bashrc,在最后加入以下代码
#set java environment
export JAVA_HOME=/opt/jdk1.6.0_23
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
3
测试JDK是否安装成功,使用命令java -version 如果显示
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)
则JDK安装成功。
END
测试MTK android编译环境是否搭建成功

切换到MTK源码根目录下,使用命令./mk check-env,若显示如下信息则安装成功
**********checking Env************
Your building environment is OK
The detail information is in "checkenv.log"!
*************************************************

同时在MTK源码根目录下生成checkenv.log文件,打开文件,显示ubuntu10.04大部分自带工具都和MTK的推荐的一致,如下:
Build Environment Requirement
===================================================
* ********* Suggested OS and Tool Chain to install *********
*
* OS : Linux distribution Ubuntu 10.04
* Memory Size : 4G or above
* make : GNU Make 3.81 or 3.82
* perl : Version 5.10.X
* python : Version 2.6.X
* arm-linux-androideabi-gcc : Version 4.6.X
* gcc : Version 4.4.3
* jdk : Version 1.6.X
* bison : Version 2.4.X
* flex : Version 2.5.X
* gperf : Version 3.0.X
* mingw : Installed
* unix2dos/tofrodos : Installed
* **********************************************************
===================================================

Build Environment Check Result Report
*************************************************************

[OS]: Ubuntu 10.04.4 (64-bit) [OK]
[Physical Memory Size] : 4052924 K-Bytes [WARNING]
it's smaller than recommendation, may cause out-of-memory build error

[make]: 3.81 (64-bit) [OK]
[perl]: 5.10.1 (64-bit) [OK]
[python]: 2.6.5 (64-bit) [OK]
[arm-linux-androideabi-gcc]: 4.6. (64-bit) [OK]
[gcc]: 4.4.3 (64-bit) [OK]
[jdk]: 1.6.0_45 (64-bit) [OK]
[bison]: 2.4.1 (64-bit) [OK]
[flex]: 2.5.35 (64-bit) [OK]
[gperf]: 3.0.3 (64-bit) [OK]
[mingw]: Installed [OK]
[unix2dos/tofrodos]: Installed [OK]
*************************************************************
步骤阅读
3
也可以解决下这个问题
[Physical Memory Size] : 4052924 K-Bytes [WARNING]
it's smaller than recommendation, may cause out-of-memory build error
打开mediatek/build/tools/checkEnv.py
修改lowMen为0

‘叁’ 如何在Ubuntu 11.10下编译Android 4.0源码

使用gcc4.4.6版本进行编译.

ubuntu 11.10的gcc版本是4.6.1,版本太高,编译Android时出错,要把gcc版本改为4.4.6, 4.5的版本据说可以,但没试过.
通 过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。
ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4

装完后在/usr/bin目录下
$ ls -l gcc*
lrwxrwxrwx 1 root root 7 2011-10-29 09:11 gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6
发现gcc 链接到gcc-4.6, 需要将它改为链接到gcc-4.4 :
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
同理
ls -l g++*
lrwxrwxrwx 1 root root 7 2011-08-14 15:17 g++ -> g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6
需要将g++链接改为g++-4.4:
/usr/bin$ sudo mv g++ g++.bak
/usr/bin$sudo ln -s g++-4.4 g++

再查看gcc和g++版本号:
gcc -v
g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。
测试:
编译android,从2011-10-29 23:58开始,到2011-10-30 01:42编译完成,没有错误。这验证了gcc 4.4安装正确,也验证了android文件与高版本的gcc不兼容。

编译过程大概花了2+个小时.

3.4 运行

$emulator

‘肆’ 如何在ubuntu10.04环境下编译android

apt-get install build-essential 安装编译环境, apt-get install linux-source 安装源码 cd /usr/src tar xvjf linux-source-2.6.24.tar.bz2 cd linux-srouce-2.6.24 下面就可以按照一般的方式编译了

‘伍’ Android:Ubuntu编译OpenSSL步骤

NDK版本:android-ndk-r14b

OpenSSL版本:1.1.1k/3.0.0

Ubuntu版本:15.5

1、配置ndk环境变量
OpenSSL版本:1.1.1k:export ANDROID_NDK_HOME=/home/linrendi/Desktop/Compile/android-ndk-r14b/
OpenSSL版本:3.0.0: export ANDROID_NDK=/home/linrendi/Desktop/Compile/android-ndk-r14b/
如果是
编译32位:
OpenSSL版本:1.1.1k:1、export PATH= PATH
OpenSSL版本:3.0.0:1、export PATH= PATH
2、./Configure android-arm -D__ANDROID_API__=21 --prefix=/home/linrendi/Desktop/openssl-1.1.1k/armv7a
3、make -j7 && make install
编译64位:
OpenSSL版本:1.1.1k:1、export PATH= PATH
OpenSSL版本:3.0.0:1、export PATH= PATH
2、./Configure android-arm64 -D__ANDROID_API__=21 --prefix=/home/linrendi/Desktop/openssl-1.1.1k/arm64
3、make -j7 && make install

注意:当编译完32位后,又想编译64位,必须重新解压,避免一些配置没有更新导致编译失败

‘陆’ 如何用ubuntu 12.04 32bit 编译android 4.4.4

系统环境

系统:Ubuntu12.04 64位系统。

源码:Android4.4源码。

选择Ubuntu12.04,是因为在14.04上没能折腾成功,在上面兼容32位程序的配置有点烦。12.04必须要用64位的,编译Android4.4时需要64位环境,同时要兼容32位程序,折腾。

步骤

配置jdk6

Android官方给的步骤是用OpenJdk,实测是不行的。网上找到https://jdk6.java.net/download.html
这个网址有需要的jdk,下载自解压安装包。自解压后在当前目录下生成一个jdk的目录,打开/etc/environment,增加自己的jdk
bin目录到PATH里面。同时新增如下环境变量:
CLASSPATH=/path/to/your/local/jdk/dir/lib
JAVA_HOME=/path/to/your/local/jdk/dir

然后执行如下命令,设置系统的默认jdk:
$ sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/local/java/jdk1.6.0_38/bin/javaws 300
$ sudo update-alternatives --install /usr/bin/jar jar /usr/local/java/jdk1.6.0_38/bin/jar 300
$ sudo update-alternatives --install /usr/bin/javap javap /usr/local/java/jdk1.6.0_38/bin/javap 300
$ sudo update-alternatives --config java

安装软件包
能装的都要装上,以免编译失败,又要回过头重装,如下:

$ sudo apt-get install build-essential make gcc g++ libc6-dev texinfo
libncurses-dev git-core gnupg flex bison zip curl ncurses-dev libsdl-dev
zlib1g-dev ia32-libs libxml2-utils lzma

编译源码
到源码目录下,如下:

$ source build/envsetup.sh
$ lunch
选择arm平台。

$ make -jn
n为CPU个数的两倍,主要是提高编译速度。

可能的错误

编译过程碰到如下错误:
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

一般情况是因为前面的javap没有配置所致。如果必须的软件包没有安装,也会有类似的提示,仔细向上翻看错误提示,找到真正的错误地方,安装对应的软件包即可。

‘柒’ Ubuntu编译Android错误,compilation terminated

  1. 没找到srtp.h这个头文件,倒数第6行那个路径肯定不对。

  2. 你要在Android.mk文件中指定正确的头文件所在目录的路径。

‘捌’ android.mk ubuntu怎么编译

一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块。每个模块属下列类型之一:
1)APK程序,一般的Android程序,编译打包生成apk文件
2)Java库,java类库,编译打包生成jar文件
3) CC++应用程序,可执行的CC++应用程序
4)CC++静态库,编译生成CC++静态库,并打包成.a文件
5)CC++共享库,编译生成共享库(动态链接库),并打包成.so, 有且只有共享库才能被安装/复制到您的应用软件(APK)包中。
(1)先看一个简单的例子:一个简单的"hello world",比如下面的文件:
sources/helloworld/helloworld.c
sources/helloworld/Android.mk
相应的Android.mk文件会像下面这样:

---------- cut here ------------------

普通的.mk一样

=====================================m、mm、mmm编译命令===========================================

android源码目录下的build/envsetup.sh文件,描述编译的命令
- m: Makes from the top of the tree.
- mm: Builds all of the moles in the current directory.
- mmm: Builds all of the moles in the supplied directories.

所以要想使用这些命令,首先需要在android源码根目录执行build/envsetup.sh 脚本设置环境。
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

下面举个例子说明,假设我要编译android下的hardwarelibhardware_legacypower模块,当前目录为源码根目录,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
或者 :
1、. build/envsetup.sh
2、cd hardware/libhardware_legacy/power/
3、mm

m没有试过。默认上述两个编译命令,只编译发生变化的文件。如果要编译模块的所有文件,需要-b选项,例如mm -b或者mmm -b

make命令,也可以用来编译。如果是include $(BUILD_PACKAGE),用makeLOCAL_PACKAGE_NAME值;如果是include $(BUILD_EXECUTABLE)或者include $(BUILD_JAVA_LIBRARY),用makeLOCAL_MODULE值(未验证)。

‘玖’ 如何用ubuntu编译android 源码

点击任务栏中的“应用程序”-----“附件”------“终端”,打开终端命令行关机,英文版本的系统操作就如下图所示

进入到下载好的Android4.4源码目录中,小编的源码目录就在宿主目录下的android4.4中,如下图

为了提高编译的效率,我们最好先设置一下编译器的高速缓存从而加快编译速度,使用下面的命令
prebuilts/misc/linux-x86/ccache/ccache -M 50G

注意事项:
1、前提是已经在 .bashrc文件中添加:export USE_CCACHE = 1
2、ccache是一个可执行文件
3、-M 50G 两个参数表示设置50G大小的空间作为缓存,这个数值可以根据自己时间硬盘空间大小继续调整

‘拾’ 怎么在ubuntu上编译android源码

步骤一:
安装Ubuntu系统。我们既可以通过虚拟机的方式安装Ubuntu,也可以直接在电脑上安装,为了获得更好的Linux操作体验,我建议直接在电脑上面安装Ubuntu,我在自己电脑上安装了win10和Ubunut Server14.04双系统,使用的时候可以根据自己的需要随时切换系统,非常方便。关于如何搭建双系统,网上有很多教程,我就不在此叙述了,但是我想说明的一点是在安装Ununtu的时候,分配给Ubuntu的磁盘空间一定要尽可能大一点,至少60G,我分配了105G,编译完成之后还剩下50多G,也就是说差不多用了近50G的空间,所以安装Ubuntu的时候一定得分配大一点的磁盘空间,不然编译会因为空间不足而中断。
步骤二:
搭建好Ubuntu系统之后,我们需要下载一份Android6.0的源码,网上很多文章都介绍了如何通过repo的方式来下载源码,但是通过这种方式下载速度可能并不是很理想,直接下载网络云的Android6.0源码,
因为Android6.0的源码所占空间非常大,所以上传者把Android源码分成了很多个文件,待全部下载完毕之后,我们可以通过命令把这些分开的文件合并为一个文件。
步骤三:
如果我们是在Windows上下载的源码,那么当我们打开Ubuntu之后,要做的第一件事请就是把Windows中的Android源码拷贝到Ubuntu系统下面,我直接利用复制粘贴的方式将源码拷贝到了Ubuntu的Home目录下面,拷贝之后的目录结构Home/android6_r1/各个分开的源码文件。
步骤四:
合并这些被分开的源码文件。我们按下键盘上的ctrl + alt + T打开控制台,通过cd命令进入到Home/android6_r1/目录下面,然后执行命令:cat Android6_r1_* > M.tgz,不用多久,在Home/android6_r1/目录下面就会生成一个新的文件——M.tgz,M.tgz就是合并之后的压缩文件。
步骤五:
解压步骤四生成的压缩文件。同样是在Home/android6_r1/目录下面,我们在控制台执行命令:tar zxvf M.tgz,开始解压。解压的过程大概需要20分钟左右的时间,请耐心等待。解压好了之后,在Home/android6_r1/会生成一个mydroid的文件夹,这个文件夹就是Android源码的根文件夹了,里面有abi、devices、hardware、packages、sdk、art等文件夹和文件。
步骤六:
安装编译源码所需要的软件。在控制台中我们通过cd..命令退回到Unbuntu用户的根目录下,然后依次执行以下命令:
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
以上命令每一条都必须分开单独执行,目的是为了获取1.7版本的jdk并设置环境变量。当我们安装完Ubuntu之后可能会自带一个jdk,但是如果用自带的jdk编译Android源码很可能会提示jdk版本不符合要求的错误,因此我们需要重新下载1.7版本的jdk,我用openjdk-7-jdk编译未出现任何问题。
接下来继续执行以下命令,同样每一行都是分开单独执行的:
sudo apt-get install git gnupg flex bison gperf build-essential
sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
以上命令主要是安装编译源码时需要用到的各种软件,如果没有安装这些软件,编译的过程中会提示缺少必要的软件而无法继续编译,因此,在正式编译源码之前,一定要先安装这些软件。
步骤七:
开始编译。在控制台中通过cd命令进入到Home/android6_r1/mydroid/目录下,然后执行命令:source build/envsetup.sh,导入编译Android源码所需的环境变量和其它参数。
步骤八:
在控制台中执行命令:lunch,运行命令之后会提示我们选择编译目标。这里我选择的的默认目标,即aosp_arm_eng。
步骤九:
在控制台中执行命令:make -j8,开始编译。注意,make -j8命令中的数字8和我们电脑的CPU核心数以及线程数有关系,一般这个数字的数值最大不能超过CPU线程数的2倍,例如我电脑的处理器是i5 6200U,为双核四线程,因此编译Android源码的时候,我可以设置的最大工作线程数量为4 * 2 = 8。在执行make命令的时候我们应该根据自己的CPU参数设置合理的工作线程数值。
以上步骤执行完之后,就是一段非常漫长的等待了,我从中午十二点多开始编译,一直到晚上九点多编译完成,整个编译过程耗时九个多小时,幸好我的运气还不错,编译过程中没有出现任何错误,只是中途意外中断了一次,但是Android源码是可以接着上次中断的位置继续编译的,已经编译的部分不会重复编译,因此并未对我造成大的影响。同志们,我想说的是,编译的过程中一定要有耐心哟!
整个源码编译完成之后,如果提示如下信息,那么Congratulations, you are successful!!!

热点内容
怎么看清被涂鸦的内容安卓手机 发布:2024-05-07 05:16:52 浏览:702
配置业务分类时主要考虑哪些原因 发布:2024-05-07 05:12:40 浏览:184
外网如何访问内网ip 发布:2024-05-07 05:12:30 浏览:814
网易版有拔刀剑的服务器叫什么 发布:2024-05-07 04:56:35 浏览:751
中国好源码 发布:2024-05-07 04:56:29 浏览:872
小兵的服务器是什么 发布:2024-05-07 04:55:46 浏览:186
网易我的世界四月服务器维护 发布:2024-05-07 04:24:58 浏览:214
gdb调试文件夹 发布:2024-05-07 04:03:25 浏览:155
玩5款大型游戏需要什么配置 发布:2024-05-07 03:59:09 浏览:91
什么安卓游戏画面炫酷 发布:2024-05-07 03:58:18 浏览:74