android之编译 注意事项

 

android之编译[2]

转自:http://oss.lzu.edu.cn/modules/lifetype/index.php?op=ViewArticle&articleId=916&blogId=30

 

 

mumutou | 13 六月, 2009 09:18

by tangke <tangk@lemote.com > 2009-06-13

上一篇android之源码http://oss.lzu.edu.cn/blog/blog.php?do_showone/tid_2183.html

我们已经下载好了源码,可以通过repo checkout master来checkout出来
这样我们在当前目录/root/aup/下面能看到

drwxr-xr-x 9 root root 4096 06-12 14:49 bionic  
//Bionic含义为仿生,这里面是一些基础的库的源代码
drwxr-xr-x 5 root root 4096 06-12 14:49 bootable  
//引导加载器
drwxr-xr-x 8 root root 4096 06-12 14:49 build
//build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具
drwxr-xr-x 18 root root 4096 06-12 14:49 dalvik
//JAVA虚拟机
drwxr-xr-x 16 root root 4096 06-12 14:49 development
//程序开发所需要的模板和工具
drwxr-xr-x 61 root root 4096 06-12 14:50 external
//目标机器使用的一些库
drwxr-xr-x 5 root root 4096 06-12 14:50 frameworks
//应用程序的框架层
drwxr-xr-x 5 root root 4096 06-12 14:50 hardware
//与硬件相关的库
drwxr-xr-x 23 root root 4096 06-12 14:50 kernel
//Linux2.6的源代码
-r--r--r-- 1 root root   87 06-12 14:49 Makefile
//全局的Makefile
drwxr-xr-x 5 root root 4096 06-12 16:55 out
//编译之后的内容存放
drwxr-xr-x 5 root root 4096 06-12 14:50 packages
//Android的各种应用程序
drwxr-xr-x 9 root root 4096 06-12 14:50 prebuilt
//Android在各种平台下编译的预置脚本
drwxr-xr-x 6 root root 4096 06-12 14:50 system
//Android的底层的一些库


好了,我们开始编译吧。

1.下载java jdk环境
首先我们必须要用到java jdk环境,其必须在1.5 update12版本之上的。
我直接在官方网站上面java.sun.com上面下载了一个1.6 update14的版本。
chmod +x之后直接运行解压到/root/jdk1.6.0_14下面。

2.清除机器上面多余的jdk
因为你的机器上面可能安装了openjdk等等一些工具,但是如果路径配置不正确的话,你将无法编译android,可能就是openjdk等一些工具不够完善的缘故吧。
我们还可以update-alternatives --config java来定位一个java可执行程序

3.添加PATH路径,JAVA_HOME,ANDROID_JAVA_HOME

  export JAVA_HOME=/root/jdk1.6.0_14
  export PATH=${JAVA_HOME}/bin:$PATH
  export ANDROID_JAVA_HOME=$JAVA_HOME

必须添加 ANDROID_JAVA_HOME=$JAVA_HOME,不然会发生com.sun.javadoc等库找不到的现象。这个地方我是吃了苦头的。

开始编译吧,你可能缺失一些包而无法编译,这个没有关系,你可以通过apt-get install来安装,我就发生了一个flex包缺失的情况,后来安装之后就编译成功了。

编译完之后,进入out目录du -slh看了一下,大概在2.9G左右,够大的。

那么我们来看看out目录的结构,毕竟东西都在这个里面,如果你对其没有一个了解的话,对于以后的移植是比较麻烦的。

ls -al
-rw-r--r-- 1 root root   2 06-12 16:42 casecheck.txt
-rw-r--r-- 1 root root   2 06-12 16:42 CaseCheck.txt
drwxr-xr-x 4 root root 4096 06-12 16:29 host
drwxr-xr-x 4 root root 4096 06-12 16:35 target
drwxr-xr-x 3 root root 4096 06-12 16:55 tmp

ls -al host
drwxr-xr-x 3 root root 4096 06-12 16:29 common
drwxr-xr-x 6 root root 4096 06-12 16:35 linux-x86

ls -al target
drwxr-xr-x 5 root root 4096 06-12 16:42 common
drwxr-xr-x 3 root root 4096 06-12 16:29 product

下面我们着重来了解一下target目录:
其中common目录表示通用的内容,product中则是针对产品的内容
common目录下面还有三个目录
docs 文档
obj 目标文件
R   资源文件
在obj目录下面有两个比较重要的目录,一个是APPS,还有一个是JAVA_LIBRARIES
APPS         中包含了JAVA应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包。
JAVA_LIBRARIES 中包含了JAVA的库,每个库对应其中一个子目录。

ls -al APPS
drwxr-xr-x 4 root root 4096 06-12 16:56 AlarmClock_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:56 AliasActivity_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:56 AndroidTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:57 ApiDemos_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:57 ApiDemosTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:57 AppWidgetHostTest_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:57 AppWidgetProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:57 Browser_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:57 Calculator_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:57 CalculatorTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 Calendar_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:57 CalendarProvider_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:57 CalendarProviderTests_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:58 CalendarTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 Camera_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:58 CameraTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 Compass_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 Contacts_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 ContactsProvider_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:58 ContactsTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 CoreTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 CustomLocale_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:58 DensityTest_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 Development_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:59 DisabledTestApp_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 DownloadProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 DrmProvider_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:59 DumpRenderTree_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 Email_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:59 EmailTests_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:59 EnabledTestApp_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 Fallback_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 FixedGridLayout_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 FontLab_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:42 framework-res_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:59 FrameworkTest_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:00 FrameworkTestTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 GlobalTime_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 GoogleContactsProvider_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:00 GoogleContactsProviderTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 GoogleSearch_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 GoogleSubscribedFeedsProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 HelloActivity_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:00 HelloActivityTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 Home_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:00 HTMLViewer_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:01 ImfTest_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:01 ImfTestTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 IM_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:00 ImProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:01 JETBoy_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:10 LatinIME_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:10 Launcher_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 launchperf_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:10 LunarLander_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:10 LunarLanderTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 mediaframeworktest_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:10 MediaProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:10 Mms_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 Music_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:11 MusicTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 NotePad_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:11 NotePadTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 PackageInstaller_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 Phone_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:11 PlatformLibraryClient_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 RSSReader_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:11 SdkSetup_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 Settings_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:11 SettingsProvider_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SettingsTests_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SimpleJNI_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 SkeletonApp_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SkeletonAppTests_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SmokeTestApp_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SmokeTest_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 Snake_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SnakeTests_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 SoftKeyboard_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 SoundRecorder_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 SpareParts_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 SslLoad_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 StatusBarTest_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 Stk_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 SubscribedFeedsProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 TelephonyProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 Term_intermediates
drwxr-xr-x 3 root root 4096 06-12 17:12 UserDictionaryProvider_intermediates
drwxr-xr-x 4 root root 4096 06-12 17:12 VoiceDialer_intermediates


ls -al JAVA_LIBRARIES
drwxr-xr-x 3 root root 4096 06-12 16:53 am_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:53 android.awt_intermediates
drwxr-xr-x 2 root root 4096 06-12 16:53 android.policy_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:54 android.policy_mid_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:53 android.policy_phone_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:56 android_stubs_current_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:54 android.test.runner_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:54 com.android.im.plugin_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:54 com.example.android.platform_library_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:37 core_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:55 core-tests_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:55 emma_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:37 ext_intermediates
drwxr-xr-x 4 root root 4096 06-12 16:43 framework_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:55 framework-tests_intermediates
drwxr-xr-x 2 root root 4096 06-12 16:55 google-framework_intermediates
drwxr-xr-x 2 root root 4096 06-12 16:55 googlelogin-client_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:55 ime_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:55 input_intermediates
drwxr-xr-x 2 root root 4096 06-12 16:55 libarity_intermediates
drwxr-xr-x 2 root root 4096 06-12 16:37 libgoogleclient_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:55 monkey_intermediates
drwxr-xr-x 2 root root 4096 06-12 16:43 offline-sdk_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:56 pm_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:56 services_intermediates
drwxr-xr-x 3 root root 4096 06-12 16:56 svc_intermediates

我们再来看看project目录
在默认的情况下,Android编译将生成generic目录,如果选定产品还可以生成其他的目录。
ls -al generic
-rw-r--r-- 1 root root     7 06-12 17:57 android-info.txt
-rw-r--r-- 1 root root     285 06-12 16:42 clean_steps.mk
drwxr-xr-x 2 root root   4096 06-12 16:49 data
-rw-r--r-- 1 root root   12228 06-12 17:57 installed-files.txt
drwxr-xr-x 12 root root   4096 06-12 17:57 obj
-rw-r--r-- 1 root root     40 06-12 16:42 previous_build_config.mk
-rw-r--r-- 1 root root   146010 06-12 17:57 ramdisk.img
drwxr-xr-x 8 root root   4096 06-12 17:57 root
drwxr-xr-x 4 root root   4096 06-12 17:15 symbols
drwxr-xr-x 10 root root   4096 06-12 17:57 system
-rw------- 1 root root 46529472 06-12 17:57 system.img
-rw------- 1 root root   2112 06-12 17:57 userdata.img

在generic/obj/APPS目录中包含了各种JAVA应用,与common/APPS相对应,但是已经打成了APK包。
system目录是主要的文件系统,data目录是存放数据的文件系统。
obj/SHARED_LIBRARIES中存放所有动态库。
obj/STATIC_LIBRARIES中存放所有静态库。
几个以img为结尾的文件是几个目标映像文件,其中ramdisk是作为内存盘的根文件系统映像,system.img是主要文件系统的映像,这是一个比较大的文件,data.img是数据内容映像。这几个image文件是运行时真正需要的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值