安卓 源码 编译-如何在Linux环境下编译Android源码?

管理员管理员组

文章数:302931

如何在Linux环境下编译Android源码

.htm

JDK安装:

LinuxMint13自带了OpenJDK,但这不是我想要的,我们想要sun-java6。

1、安装sun的jdk之前,先删除OpenJDK,打开Synaptic,搜索OpenJDK,彻底删除所有包。

或者执行 sudoapt-getautoremoveopenjdk-6-jre

2、从sun.html官网下载最新的安装文件(如:jdk-6u34-linux-x64.bin)。

减少执行权限:sudochmodu+xjdk-6u34-linux-x64.bin

将安装文件复制到/usr/lib/java/目录

执行安装命令/jdk-6u34-linux-x64.bin

成功安装JDK后,我们就要配置JDK了。 使用命令 $ sudogedit /etc/environment 更改环境文件,添加以下代码:

路径=“/usr/lib/java/jdk1.6.0_34/bin”

CLASSPATH =“/usr/lib/java/jdk1.6.0_34/lib”

JAVA_HOME="/usr/lib/java/jdk1.6.0_34"

如果PATH已经存在,用逗号作为间隔,加上jdk的bin目录地址,这样java的环境变量就配置成功了,但是默认使用的JDK可能不是我们刚刚安装的,因为ubuntu可能有默认的jdk,比如openjdk; 因此,为了使用我们默认安装的jdk,需要执行以下命令:

$ sudo update-alternatives --install /usr/bin/javajava/usr/lib/java/jdk1.6.0_34/bin/java300

$ sudo update-alternatives --install /usr/bin/javacjavac /usr/lib/java/jdk1.6.0_34/bin/javac300

$ sudo update-alternatives --configjava

成功执行命令后,我们安装的JDK就是系统默认的。 执行命令$java-version成功查看JDK的相关信息,如:

java版本“1.6.0_34”

Java(TM) SERuntimeEnvironment (build1.6.0_34-b04)

JavaHotSpot(TM)64-BitServerVM(build20.9-b04,混合模式)

1、步骤如下:

$cd[android系统所在目录]//第一步进入要编译的目录

$.build/envsetup.sh//该脚本用于设置ANDROID的编译环境(注意旁边有一个空格)

$choosecombo//这个命令也需要在build目录下执行。 用于选择编译目标(如目标硬件、eng或user等)。通常厂商会设置自己特有的编译选项

补充:执行前两步编译系统。 android平台提供了三个编译命令:make、mmm、mm。 使用方法及环境如下:

make:不带任何参数,用于编译整个系统,耗时较长。 如果不想编译整个系统,最好不要使用

make+模块名:编译单个模块,并将与其相关的模块一起编译安卓 源码 编译

mm:该命令需要在源码目录下使用。 它只编译当前目录中的模块。 和mmm是一样的

注意:如果知道模块名称,只需使用make+模块名称即可; 如果不知道模块名但知道模块所在目录,则使用mmh或mmm,这两个的编译时间比较短

$make//编译整个源代码

注意:如果要编译单个项目的源码,必须先编译整个项目的源码,然后再编译单个源码

安卓 源码 编译-如何在Linux环境下编译Android源码?

Android模块编译、mm命令

如果你只需要更改某个模块的内容,但每次都必须执行make,那么你最终会等待很长时间。

使用模块编译,只需要在所在模块的目录或其子目录下执行mm,就可以编译出单独的apk。 岂不是太好了!

具体步骤:

1)打开~/.baserc文件并添加source~/I850/build/envsetup.sh。 添加您自己的文件路径,这样您就不需要在执行 mm 命令之前每次启动新终端时都引用该文件。

2)完成步骤1后,你就可以在你的模块上随便执行mm了。 如果想使用其他快捷命令,可以查看envsetup.sh文件,例如cgrep、jgrep、resgrep对不同类型的文件进行相应的查询。以及m、mmm等。

3)也可以使用adbpush将你的apk推送到模拟器或者移动端,也可以在项目根目录下通过make-snod生成新的system.img

2、源码编译后找到对应apk的位置路径:

/home/wangxianming/aw813/AP/out/target/product/aw813/system/app/Mms.apk//找到邮件对应的apk

3.如何在手机中使用编译好的adb将编译好的adb烧录到手机中:

(1)$cd/aw813/AP/out/host/linux-x86/bin

$./adbkill-server//杀死手机中的adb

(2)$./adbdevices//标识编译好的adb

(3) 如果权限不够安卓 源码 编译,NoPermissions会使用root权限代替:

$ 苏密码:

注意:数据库必须一致! 否则烧写版本会报错!

4.安装APK

$adbinstallxxx.apk//直接安装APK

$adbinstall-rxxx.apk//安装并覆盖现有APK

本文标签:如何在Linux环境下编译Android源码

2019独角兽企业急聘Python工程师标准>>>

编译Android模拟器:

在Ubuntu下,我们可以在源码中编译自己的模拟器和SDK等编译工具。 其实这个和windows下下载的看起来是一样的。

编译Android模拟器的步骤与编译Android系统非常相似:

Øsourcebuild/envsetup.sh

Ølunch sdk-eng

Ømakesdk

每次执行make时安卓源码编译,编译系统都会手动验证之前的编译项和本次编译项。 如果两次不同,所有目标代码都会被删除,当然现在是./build/core/main.mk。

71#这允许在config.make之后强制执行cleanbuild-included

72 #环境设置已完成,但在我们生成任何依赖项之前。

73 #filedoestherm-rfinlinesothedepswhicharealldonebelowwill

第74章

75 包括 $(BUILD_SYSTEM)/cleanbuild.mk

我们把第75行注释掉,这样我们就不用每次都手动删除之前编译的中间代码并重新编译了。

编译完成后效果如右图所示:

sdk安装在以下目录:android_source/out/host/linux-x86/sdk

该目录下有一个压缩包,上面我们从eclipse中更新下载指定Target的sdk包。

如果你做过app开发,你就会知道,我们只有下载不同版本的sdk后,才会创建不同版本的模拟器。 编译好sdk后,我们就可以创建并运行Android4.0模拟器了。

$ cd android_source/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools

首先查看当前编译的sdk的id号来创建模拟器:

$androidlisttargets

可用的 Android 目标:

----------

id:1或“android-14”

名称:Android4.0

类型:平台

API 级别:14

修订:2

外观:WXGA800、WQVGA400、WXGA720、HVGA、WVGA854、WQVGA432、WVGA800(默认)、QVGA、WSVGA

ABI:无 ABI。

创建一个模拟器:

$ androidcreateavd-nmydroid-t1

注:-n表示指定模拟器的名称安卓源码编译,-t表示指定创建模拟的版本id

启动模拟器:

$模拟器-avdmydroid&

因为模拟器需要启动android系统,所以需要用到几个镜像文件,分别是:kernel-qemu、system.img、userdata.img、ramdisk.img

kernel-qemu:内核镜像文件,是Linux操作系统为qemu模拟器编译的内核文件,上面安装了qemu模拟的硬件驱动程序。 如果以后把Android移植到开发板或者手机上,那么第一步首先要做一个支持开发板或者手机的内核。

system.img:是android系统的文件系统,里面包含了android系统的应用程序(apk)、系统使用的各种库(jar、so、a)和资源、配置文件(etc目录下) ,以及系统命令(bin、usr/bin、xbin),镜像文件由out/target/product/generic/system目录打包生成,我们可以将该目录的内容多样化,例如如果想要android系统默认要安装应用程序,请将安装的apk文件复制到out/target/product/PRODUCT/system/app目录下。

userdata.img:用户数据镜像,包含程序安装信息,如windows的C:/ProgramFiles/目录。

ramdisk.img:显存C盘镜像,这个文件对于没有做过Linux移植的人来说不太容易理解,linux内核启动时,需要挂载一个文件系统作为自己的根文件系统,一般文件系统存储在块设备上,即硬盘或者闪存上,富含Linux内核在启动过程中所依赖的一些程序和配置文件。 上述userdata.img和system.img镜像在Linux系统启动后挂起。 下载到其数据、系统目录。

我们可以通过下面的脚本run_emulator.sh指定Android模拟器加载指定的镜像文件:

#!/bin/bash

PWD_PATH=`密码`

IMG_PATH=$PWD_PATH/out/target/product/generic

exportPATH=$PWD_PATH/out/host/linux-x86/sdk/android-sdk_eng.linux_linux-x86/tools:$PATH

exportANDROID_PRODUCT_OUT=$PWD_PATH/out/target/product/generic

exportANDROID_SWT=$PWD_PATH/out/host/linux-x86/framework

模拟器内核 $PWD_PATH/kernel/goldfish/arch/arm/boot/zImage

笔记:

ANDROID_PRODUCT_OUT:必须指定环境变量,模拟器会搜索该环境变量下的所有镜像文件

-kernel:指定内核镜像

事实上,你也可以单独指定每个图像文件,通过以下命令:

$emulator-kernel$PWD_PATH/kernel/goldfish/arch/arm/boot/zImage

-图像$IMG_PATH/system.img

-数据$IMG_PATH/userdata.img

-ramdisk $IMG_PATH/ramdisk.img

笔记:

-system指定system.img

-data 指定userdata.img

-ramdisk 指定ramdisk.img

如果我们以后要运行adbshel​​l连接模拟器,必须使用root权限,否则会出现错误:error: device not found。

通过启动Android系统->SystemSettings->Aboutphone,我们可以看到是用我们自己编译的内核启动的。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 安卓 源码 编译-如何在Linux环境下编译Android源码? https://www.wkzy.net/game/125601.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务