android编译环境,安卓系统编译环境

如何在乌班图上 android 源码的编译环境

建立Linux编译环境:

十年的下冶网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整下冶建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“下冶网站设计”,“下冶网站推广”以来,每个客户项目都认真落实执行。

按照惯例,我们在Ubuntu的最新版本上测试编译过程,但是,大多数的Linux发行版都是可以像Ubuntu一样提供编译所需要的环境的。如果您在哪个Linux发行版上编译成功或编译失败,我们很欢迎您能将信息反馈给我们。

注意:也可以在虚拟机上编译Android源代码。如果是在虚拟机中运行Linux,为了能够构建Android项目树,至少需要8GB的RAM/swap和另外12GB的硬盘空间。

总的来说,你需要一下工具:

1. Python2.4 ~ 2.7 python.org .

2. JDK 6(编译Gingerbread),JDK5(编译Froyo),java.sun.com .

3. Git1.5.4或更新版本git-scm.com .

4.(可选)Valgirnd,一个可以帮助你发现内存泄漏、栈溢出和数组越界等问题的工具valgrind.org .

下面,以Ubuntu 10.04为例来说明具体的搭建过程:

下载JDK

Sun JDK已经被从Ubuntu的主安装包仓库中移除。为了下载JDK,需要为系统指定JDK安装包地址

Java 6:编译Gingerbread或更新版本

$ sudo add-apt-repository "deb lucid partner"

$ sudo add-apt-repository "deb-src lucid partner"

$ sudo apt-get update

$ sudo apt-get install sun-java6-jdk

Java 5:编译Froyo和更老版本

$ sudo add-apt-repository "deb dapper main multiverse"

$ sudo add-apt-repository "deb dapper-updates main multiverse"

$ sudo apt-get update

$ sudo apt-get install sun-java5-jdk

在docker搭建android编译打包环境实践

输入如下命令

之后就进入了容器shell命令界面

git clone

进入EmptyProject文件夹,输入如下命令

输入如下命令

等待命令执行完成(第一次会比较慢),最终apk地址 app/build/outputs/apk/release/app-release.apk

至此我们完成了在docker上搭建了android打包编译环境,并成功编译出了apk文件。

android编译命令的说明

android源码目录下的build/envsetup.sh文件,描述编译的命令

- m:       Makes from the top of the tree.

- mm:      Builds all of the modules in the current directory.

- mmm:     Builds all of the modules in the supplied directories.

要想使用这些命令,首先需要设置android脚本编译环境,在源码根目录执行 source build/envsetup.sh

m:编译所有的模块

mm:编译当前目录下的模块,当前目录下要有Android.mk文件

mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

下面举个例子说明,假设我要编译android下的\framework\av\cmds\screenrecord模块,

当前目录为源码根目录,方法如下:

1、source build/envsetup.sh

2、mmm framework/av/cmds/screenrecord

或者 :

1、source build/envsetup.sh

2、cd framework/av/cmds/screenrecord

3、mm

Android杂谈:编译环境参数是从哪里来的?

我们通过走一下编译步骤,看一下,这些参数的来源吧!

上面这句命令,是编译前准备环境的。

/ build / envsetup.sh

可以看到到引进了一堆的函数,有mm,mmm等常用指令

看看跑了啥逻辑,

1.首先判断了下shell的环境,最好使用/bin/bash。

参考:

2.包含厂商vendor目录的vendorsetup.sh

包含后,echo打印出来,像下面这样子~

lunch就是选择一些编译参数,估计就是在这里准备好这些全局的参数的。

lunch函数在envsetup.sh里面定义

set_stuff_for_environment

会进入set_stuff_for_environment,主要是设置title,java环境,paths还有序列号。貌似没多大用处~

printconfig

最后会进入printconfig,就是打印配置信息给我们看啦!

打印一些配置,可以看到TARGET_PRODUCT,TARGET_BUILD_VARIANT和TARGET_BUILD_TYPE。

printconfig包含get_build_var函数,函数执行了一句make指令,make --no-print-directory -C "$T" -f build/core/config.mk dumpvar-$1

(1)make -C "$T" 就是跳转到top目录。

(2)make -f 来指定makefile文件build/core/config.mk,我去config.mk还是个makefile文件。

(3)dumpvary用来打印用的,就是打印第一个参数$1啦,呵呵呵

所以,主要get_build_var主要是执行makefile config.mk。

看看/ build / core / config.mk ,可以看到他进一步包含了envsetup.mk

envsetup.mk就是最后设置一些常用编译环境参数的文件了!!

/ build / core / envsetup.mk

看下面的图,可以看到他定义了很多编译常量了!!

1.通过source envsetup.sh可以引进很多函数,包含vendorsetup.sh

2.通过lunch,选择类型后,会编译build/core/config.mk文件,进而再编译envsetup.mk文件,而这个文件就是定义编译常量的地方!

android编译环境用mmm编译,报错'string' does not name a type

1.androidERROR:unknownvirtualdevicename解决法打开系统属性--环境变量—在“系统变量”那一个GroupBox下面选择“新建”--变量名为"ANDROID_SDK_HOME”(注意,这个变量名不能改变,只能是这个名字!),然后把变量值改为你想把AVD所在的".android”文件夹放置的位置,比如:"F:\AndroidEmulator”,在这里我把它放在AndroidSDK包中,值为:"D:\SDK\Android\android-sdk-windows-1.5_r3”,如下图所示。设定成功的话,在eclipse里preferneces-Android-BulidSetting里为如下结果:Defaultdebugkeystore:F:\Android_Emulator\\.android\debug.keystore然后这样就可以一劳永逸了!!!2.emulator-5554disconnected!Cancelling'oms.Hello.HelloOpone'launch!在eclipse里面改变一下你run的时候的设置就好了.右点你的工程后run里面有一个runconfigrations,在里面有一个选项每次运行都察掉记录wipe.的,选上就好了.


名称栏目:android编译环境,安卓系统编译环境
本文地址:http://hbruida.cn/article/dsedcej.html