继续ANDROID学习第二步,不使用Eclipse创建JAVA工程

来源:互联网 发布:游戏多核优化的多吗 编辑:程序博客网 时间:2024/06/15 16:43

    作为一个C++程序员,都有刨根问底的习惯。看作同事们使用eclipse开发ANDROID程序,配置环境时首先要这样,然后要这样,甚是神秘。其实,我们都明白eclipse不过是一个IDE环境,它能够做的,通过命令行方式也可以完成,只是便捷性问题。当然开发中使用IDE环境还是比较好,对代码错误,检查,如果对快捷键使用属性对提高开发效率很有帮助。但我现在是想看看原理。

    在android的sdk目录的tools目录下我们会发现一个andriod脚本,创建工程就是和改脚本打交道。当然该脚本的目的其实就是调用其它程序来处理我们传入的参数。目前没有进行详细的分析。

使用该脚本创建android工程的命令为:

mkdir HelloWorld

cd HelloWorld

android project -p./ -t 1 -a HelloWorld -k com.byfeng

其中-p 是--path 表示工程所在路径,此处./表示当前路径

-t 是--target表示目标版本,可以使用android list查看,其中的Revsion的值

-a是--activity 表示创建的activity名称是HelloWorld

-k是--package 表示包名

可以通过输入 android project 查看具体某个标签代表的意思。

执行上面的命令,发报错,是can't acess build.template 这样的错误,意思是生成工程的时候需要找模板吧,找不到就出错了。如果是用SDK来创建应该不会有这样的错误,有的话应该是tools文件夹放的位置不对,build.template文件就在他下面。我是用源码的,发现我在前面用make snod编译system.img时候把先前编译的sdk给搞掉了。从来一编。

在完成这个命令后,就可以发现生成了对应的工程,和在eclipse下创建的差不多(我都忘了eclipse下具体情况,只在下面写过HelloWorld),目录下面有一个build.xml文件。该文件是ant的默认目标文件 ,可以用来编译,安装我们的工程。ant在持续集成中常常使用,感谢曾经做个一段时间的持续集成,虽然不深入,但是对这些东西能够知道是什么,不那么陌生。

使用ant命令编译工程,糟糕,出错了。提示

 W/ResourceType(27670): Unable to get buffer of resource asset file

。。。。。。后面是一大堆main.xml中的标签某某资源标签未识别的。

第一反应,难道要向C++中引入头文件吗,或使用import 或是域空间不对。但是使用eclipse创建的时候应该也是只执行这样一个命令生成的工程就可以编译通过的阿。

最后在网上得知,这是SDK本身的问题,可以通过修改sdk的编译选项来解决问题。因为默认情况下android系统对资源大小进行了限制。android手机在处理资源文件时不能大于1M.目前解决的方法只 有将文件放入到sdcard,但这样除了microsd的读取IO效率和耗电量解决不是很好,同时sd卡移除时可能存在问题,解决的方法如果数据量大的化 通过sqlite是一种解决方法,同时openFileOutput方式读取也是不错的选择,看来android操作系统中最安全控制的严格,但犯了一个 不小的错误。

所以需要修改编译选项重新编译SDK,

1. 使用lunch更改配置:

cd ~/android/src
. build/envsetup.sh
lunch sdk-eng
make sdk

2. 直接用make参数:

make PRODUCT-sdk-sdk

.build/envsetup.sh是导出环境变量,使能够使用lunch函数。

我编译完了好像不行,要炒菜去了,回来再找原因,先发帖了。另外的一种解决方法是:

Problems  
When building you might run into the Unable to get buffer of resource asset file error. The root cause of this is that the new android resource file resources.arsc is larger than the aapt tool allows. You can exchange the .arsc file inside android.jar with an older version or patch the aapt tool by editing frameworks/base/include/utils/Asset.h.

Change both lines UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024 to something bigger. As the new resources file currently has a size of 2.3Mb you should change the lines (both lines mind you) to at least 3*1024*1024.

吃了饭再研究喽,有收获就高兴,哈哈