免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1711 | 回复: 0
打印 上一主题 下一主题

android 编译[3] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-22 20:13 |只看该作者 |倒序浏览
by tangke  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文件是运行时真正需要的文件。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/100996/showart_2003878.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP