十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
建立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
输入如下命令
之后就进入了容器shell命令界面
git clone
进入EmptyProject文件夹,输入如下命令
输入如下命令
等待命令执行完成(第一次会比较慢),最终apk地址 app/build/outputs/apk/release/app-release.apk
至此我们完成了在docker上搭建了android打包编译环境,并成功编译出了apk文件。
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
我们通过走一下编译步骤,看一下,这些参数的来源吧!
上面这句命令,是编译前准备环境的。
/ 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文件,而这个文件就是定义编译常量的地方!
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.的,选上就好了.