您的位置:首页 > 移动开发 > Android开发

Android 菜鸟历程6

2012-02-19 22:32 260 查看
1. Android源码可以编译出android SDK、adb等工具、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不兼容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: