Android 源码下载、编译以及编译自己的apk

一、Android源码下载与编译

基于VMware 7.0 ubuntu10.04 64位

1、Git工具。

    若无则安装   ~$ sudo apt-get install git-core gnupg

2、Java  sdk 。

     ~sudo add-apt-repository ppa:ferramroberto/java

     ~$ sudo apt-get update
     ~$ sudo apt-get install sun-java6-jre sun-java6-plugin
     ~$ sudo apt-get install sun-java6-jdk
     另:接受安装条件时,tab键切换焦点。
3、安装其他需要的命令
     ~$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
4、调试工具
   ~ $ sudo apt-get install valgrind
5、安装repo工具
     修改/etc/hosts文件,在文件末尾加上(地址有可能会变,先ping一下再加)
     74.125.237.1 dl-ssl.google.com
     74.125.31.82 www.googlesource.com
     74.125.31.82 android.googlesource.com
     203.208.46.172 cache.pack.google.com
     59.24.3.173 cache.pack.google.com

      安装repo:
    ~$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    ~$ chmod a+x ~/bin/repo
   另外一个地址  :  
$ curl " http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo
    修改文件.bashrc
    ~$ vi .bashrc
   在最后一行加入 export PATH=$PATH:~/bin
   保存,执行 ~$ ./.bashrc
6、创建下载目录android并初始化repo
    ~$ mkdir android
    ~$ cd android/
    初始化
  ~/android$ repo init -u https://android.googlesource.com/platform/manifest
    ~/android$ repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.1_r1
   下载(慢慢等吧)
     ~/android$ repo sync
    注意:最好是把自己创建的下载目录下面的.repo 里面manifest.xml属性fetch改为:fetch= "https://android.googlesource.com/"
7、编译(这里也慢慢等)
     ~/android$ make
注意:
出现错误,首先,全部赋予可执行权限

      错误:find: `frameworks/base/frameworks/base/docs/html': No such file or directory
        find: `out/target/common/docs/gen': No such file or directory
      此错误忽略,不影响编译

      错误:/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: No such file or directory
      解决方法:apt-get install lib32z1-dev

      错误:/usr/include/gnu/stubs.h:7: fatal error: gnu/stubs-32.h: No such file or directory
      解决方法: ~/android$ sudo apt-get install libc6-dev-i386

     错误:external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory

     解决方法:~/androidsudo apt-get install zlib1g-dev


   错误:/usr/bin/ld: cannot find -lncurses

     解决方法:sudo apt-get install lib32ncurses5-dev


     错误:/usr/bin/ld: cannot find -lstdc++
     collect2: ld returned 1 exit status
     make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] Error 1

     解决方法:~/androidsudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so

                   ubuntu 10.04,默认的gcc版本为4.4,gcc-4.4太严格,有可能要从gcc-4.4降到gcc- 4.3
                   1、安装gcc-4.3
                   $ sudo apt-get install gcc-4.3 g++-4.3
                   2、修gcc相关链接
                   $ cd /usr/bin
                   $sudo ln -snf gcc-4.3 gcc
                   $sudo ln -snf g++-4.3 g++
                   $sudo ln -snf cpp-4.3 cpp
                   3、64bit系统需装如下包
                   $ sudo apt-get install g++-multilib g++-4.3-multilib

    中间或许还有其他各种错误,遇到了自己百度去。

   编译成功会有如下输出
     Target system fs image:
     out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
     Install system fs image: out/target/product/generic/system.img
     Target ram disk: out/target/product/generic/ramdisk.img
     Target userdata fs image: out/target/product/generic/userdata.img
     Installed file list: out/target/product/generic/installed-files.txt

8、运行
      启动模拟器,运行$ emulator
       错误:No command 'emulator' found, did you mean:骂人
      Command 'qemulator' from package 'qemulator' (universe)
      emulator: command not found
      解决方法:编辑 /etc/environment
 加入环境变量
      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:usr/lib/jvm/java-6-sun-1.6.0.26/bin:/home/nanlus2/android/out/host/linux-x86/bin"
      CLASSPATH="/usr/lib/jvm/java-6-sun-1.6.0.26/lib"
      JAVA_HOME="usr/lib/jvm/java-6-sun-1.6.0.26"
      ANDROID_PRODUCT_OUT="/home/nanlus2/android/out/target/product/generic"
注:/home/nanlus2/android为源码目录
保存,重启。运行$ emulator
       错误:SDL init failure, reason is: No available video device尴尬
      解决方法:$ apt-get install ia32-libs lib32stdc++6

再次运行$ emulator 
成功羡慕


二、编译自己的apk
1、编写完成工程。
2、编写Android.mk文件,放入工程目录下
      LOCAL_PATH:= $(call my-dir)
      include $(CLEAR_VARS)
      LOCAL_MODULE_TAGS := optional
      LOCAL_SRC_FILES := $(call all-java-files-under, src)
      LOCAL_PACKAGE_NAME := helloworld
      LOCAL_CERTIFICATE := platform
      include $(BUILD_PACKAGE)
      # Use the folloing include to make our test apk.
      include $(call all-makefiles-under,$(LOCAL_PATH))

3、编译
拷贝工程至packages/apps/下
      ~$ cp -ri helloworld   ~/android/packages/apps/helloworld
        进入目录  ~/...../helloworld$ mm
        编译成功:out/target/product/product_name/system/app/helloworld.apk
4、运行
安装在机子上运行之。 adb install xxx/helloworld.apk

      在这里也可以一起打包,
      $ make snod
然后,再运行,启动模拟器即可。大笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值