Android 菜鸟历程6


1. Android源码可以编译出android SDKadb等工具、android文件系统,以及ADT插件,也就是说,我们可以从android源码编译出所有android相关的东西。

2. 获取当前时间的后一个月

Date currentTime = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(currentTime);
calendar.add(Calendar.MONTH, backup.getInterval_months());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(calendar.getTime()));

3. make -j 命令行参数 指同时运行命令的个数。如果没有这个参数,make运行命令时能运行多少就运行多少。如果有一个以上的“-j”参数,那么仅最后一个“-j”才是有效的。(注意这个参数在MS-DOS中是无用的)

4. ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 

    它的主要功能有:
   * 运行设备的shell(命令行)
  * 管理模拟器或设备的端口映射
  * 计算机和设备之间上传/下载文件
  * 将本地apk软件安装至模拟器或android设备

    ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.

    先说安装方法, 电脑上需要安装客户端. 客户端包含在sdk里. 设备上不需要安装, 只需要在手机上打开选项settings-applications-development-USBdebugging.

    对于Mac和Linux用户, 下载好的sdk解压后, 可以放~或者任意目录. 然后修改~/.bash_profile文件, 设置运行环境指向sdk的tools目录.(最新的版的已经移动到platform-tools下)

5. Linux export命令

  1. 功能说明:设置或显示环境变量。
      语 法:export [-fnp][变量名称]=[变量设置值]
      补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登录操作
       2. 声明全局变量,可以被其子shell使用。
6. ubuntu环境变量在/etc/environment 定义初始化,在其他配置文件中可通过export 追加。
7. ubuntu 11.10 编译Android4.0.3时遇到的错误:
    make: *** [out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang]
   /bin/bash: out/host/linux-x86/bin/clang: 权限不够
 Install: out/host/linux-x86/bin/clang
 /bin/bash: out/host/linux-x86/bin/clang: 无法执行二进制文件 make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/rs_cl.bc] 错误 126
   target Strip: libwebcore (out/target/product/generic/obj/lib/libwebcore.so)
 prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-strip:out/target/product/generic/symbols/system/lib/libwebcore.so: File format not recognized make: *** [out/target/product/generic/obj/lib/libwebcore.so] 错误 1
 在网上搜索,没有找到一模一样的问题,但做了以下两项修改。这里面有的问题是通过重新编译就解决的,也不知道以下的两个解决办法到底起作用了没有。
  个人总结:  除了按照官方网站推荐的编译环境进行正确配置外,编译的时候还要有耐心,我是足足折腾了两天才编译成功,期间死了五次机,遇到了上边的编译问题,在网上搜索,没有找到和我遇到问题相同的童鞋,遇到感觉沾上点边的就试试,好像也没起什么作用,最后make clean ,重新编译,还是出问题,在make clean什么都不做,就两只眼瞪着终端,最终取得了胜利。另外要说一点,下载的源代码有3.7G,使用make完全编译出12.8G的东西,所以系统磁盘要留足空间。为避免出错和死机,最好什么都不要做,连网页也别看了,准备好零食或闲书就可以了,我的机子是2G的内存,i5处理器双核2.3G,整个过程历时六个小时(期间死过一次机) 
 初始化编译环境 . build/envsetup.sh


 由于Ubuntu 11.10采用了GCC4.6.1,版本太高。

解决:
使用gcc4.4.6版本进行编译.

Ubuntu 11.10的gcc版本是4.6.1,版本太高,编译Android时出错,要把gcc版本改为4.4.6, 4.5的版本据说可以,但没试过.
通 过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。
Ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4


装完后在/usr/bin目录下
$ ls -l gcc*
lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6
发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
同理
ls -l g++*
lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6
需要将g++链接改为g++-4.4:
/usr/bin$ sudo mv g++ g++.bak
/usr/bin$sudo ln -s g++-4.4 g++


再查看gcc和g++版本号:
gcc -v
g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。
测试:
编译Android,从2011-10-29 23:58开始,到2011-10-30 01:42编译完成,没有错误。这验证了gcc 4.4安装正确,也验证了android文件与高版本的gcc不兼容。



你可能感兴趣的:(android,shell,gcc,calendar,ubuntu,工具)