博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

HutaoW

Open source, world shares.
  wangtao.cublog.cn

关于作者
姓名:王涛
职业:学生
年龄:21
学校:北京邮电大学
|| << >> ||
我的分类


Android命令行下的编译和运行
就自己的习惯来讲,我并不太习惯实用某个IDE来编程。原因有两个,一是电脑运行的慢,要编程还要先等上半天打开IDE;二来就是用IDE容易让人变懒,在输入某个对象名字后等上一会,IDE会自动把对象的方法、接口等一大堆的东西列出来,只要按个方向键选择就行了,很少去查文档,时间长了给人自己很懒的感觉。想学到东西还是要从命令行开始,真正学到之后再考虑用IDE。
    下面总结一下在命令行下android工程的创建、编译、运行和调试的方法。
 
1、工程的创建:
    在要存放工程的目录下用执行"activityCreator.py --out hutaow edu.bupt.hutaow.example"

    说明如下:
        activityCreator.py,创建工程的脚本文件,linux里使用"activityCreator.py",如果是windows,则应当换成"activityCreator.bat"
        --out hutaow,其中hutaow是生成工程的输出目录,执行android工程的所有文件都会放在这个目录里
        edu.bupt.hutaow.example,这个是包的名称以及类的名称,其中最后一个字段是生成的类的名称,edu.bupt.hutaow是example类所在的包

    命令执行后会在hutaow目录下生成工程的所有文件。
 
    执行后终端输出如下:
        package: edu.bupt.hutaow
        out_dir: hutaow
        activity_name: example
        Created directory hutaow/src/edu/bupt/hutaow
        Added file hutaow/src/edu/bupt/hutaow/example.java
        Created directory hutaow/bin
        Created directory hutaow/res/values
        Added file hutaow/res/values/strings.xml
        Created directory hutaow/res/layout
        Added file hutaow/res/layout/main.xml
        Added file hutaow/AndroidManifest.xml
        Added file hutaow/build.xml
 
2、工程的编译:
    这里编译需要用到ant,ant是apache出的用于编译java工程文件的工具,android是基于java设计的,所以这里要用到它,ant可以在http://ant.apache.org下载的到,具体安装过程和java、android差不多,都是解压出来后设置环境变量,可以参考linux中设置java环境变量
    使用ant编译直接在工程目录下执行简单的一条"ant"即可,不用任何参数,ant会根据build.xml文件中的描述自动进行相关的语法检查、依赖分析等等一些工作,最终将编译好的文件输出在工程的bin目录下

    执行后终端输出如下:
        Buildfile: build.xml

        dirs:
            [mkdir] Created dir: /home/wangtao/Documents/android/hutaow/bin/classes

        resource-src:
             [echo] Generating R.java...

        aidl:

        compile:
            [javac] Compiling 2 source files to /home/wangtao/Documents/android/hutaow/bin/classes

        dex:

        package-res:

        package-res-no-assets:
             [echo] Packaging resources...

        package-dex:
             [echo] Packaging dex...

        package:

        BUILD SUCCESSFUL
        Total time: 6 seconds


 
3、程序的运行及调试:
    这里要用到的工具是android的调试工具adb,由它来完成程序的安装工作。 首先在命令行输入"emulator"启动android模拟器。
    然后等模拟器完全启动好后,执行"adb install bin/example.apk",即将example.apk安装到模拟器中。
    最终在模拟器的"Applications"分类中找到"example"执行程序。

    执行后终端输出如下:
        * daemon not running. starting it now *
        33 KB/s (4170 bytes in 0.120s) 

 TAG android ant
发表于: 2008-02-13,修改于: 2008-07-12 11:45,已浏览710次,有评论10条 推荐 投诉


网友评论
网友: aumbrella 时间:2008-04-08 15:13:32 IP地址:210.68.1.★
您好!我在MS XP下,
執行ant之後並沒出現bin/example.apk這個檔案?
而且執行emulator出現android emulator視窗,這時候命令行就無法再輸入任何字元,包括adb install bin/example.apk。我應該在什麼時候才能輸入adb install bin/example.apk?
在命令行按ctrl+c,android emulator也被關掉了,然後我再輸入adb install bin/example.apk,出現can't find "example.apk' to install.
不知道是哪裡出了問題? 謝謝!

网友: aumbrella 时间:2008-04-08 18:14:09 IP地址:210.68.1.★
我發現在執行ant時,出現錯誤訊息:
BUILD FAILED
C:\pq\build.xml:79: Unable to find a javac compiler;
...
...
...

可是我已經在Path裡加入C:\Program Files\Java\jre1.6.0_05\bin了啊,為什麼ant還是找不到javac?

Blog作者的回复:
你的Path设置的目录是jre的,而编译所需要的目录应该是jdk的目录,因为jre只是负责运行java程序,而有关编译的工作它是没法进行的,也就是说"javac"以及编译所需要的类库jre是没有的。
而jdk则既可以运行java程序,也可以编译java源文件。jre和jdk两者的关系是jdk包含jre。
所以你的环境变量里的Path应该设置为jdk的目录。


网友: aumbrella 时间:2008-04-09 03:41:41 IP地址:210.68.1.★
我自己解決了!
把C:\Program Files\Java\jdk1.6.0_05\lib\tools.jar這個檔案copy到
C:\Program Files\Java\jre1.6.0_05\lib\ext文件夾底下就可以ant了。謝謝!

Blog作者的回复:
建议你把环境变量Path里的"C:\Program Files\Java\jre1.6.0_05\bin"换成"C:\Program Files\Java\jdk1.6.0_05\bin"。
注意jre和jdk的区别


网友: aUmbrella 时间:2008-04-09 03:45:31 IP地址:210.68.1.★
不過我在命令行執行emulator之後,命令行就不能再打字了!
我要怎麼执行"adb install bin/example.apk"?謝謝!

Blog作者的回复:
如果你用的windows系统的话就需要开两个命令行,一个用来执行emulator,启动好后就放在那里不管它,另一个用来执行"adb install"或其它命令。
如果是linux的话可以执行"emulator&"让模拟器在后台执行,这样就可以在终端里继续输入其它命令。

执行adb首先至少要运行一个emulator才可以的,只要有模拟器运行就可以执行"adb install bin/example.apk"了。


网友: aUmbrella 时间:2008-04-09 14:41:38 IP地址:210.68.1.★
你好!我之前寫過幾個java的homeworks,當時user variables環境變量就已經是C:\Program Files\Java\jdk1.6.0_05\bin。  然後執行ant時出現:
C:\my\build.xml:79: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre1.6.0_05"
現在我把C:\Program Files\Java\jdk1.6.0_05\lib\tools.jar檔案copy到
C:\Program Files\Java\jre1.6.0_05\lib\ext夾底才能正確執行ant。
反正現在能正常使用就好。謝謝!

另外,我開兩個命令行,第二個真的能輸入"adb install bin/example.apk",已經成功載入example.apk,還能看到test button ,謝謝你^^!繼續學習ing

网友: aUmbrella 时间:2008-04-09 14:44:36 IP地址:210.68.1.★
我的Program Files\java裡面有:jre1.6.0_02、jre1.6.0_03、jre1.6.0_04、jre1.6.0_05。
我可以把jre1.6.0_02、jre1.6.0_03、jre1.6.0_04,給移除掉嗎?

Blog作者的回复:
可以的没问题,只保留最新的一个版本就可以了


网友: aumbrella 时间:2008-04-09 16:07:11 IP地址:210.68.1.★
奇怪!我已經把example整個文件夾刪除,為什麼在命令行執行emulator,還是可以看到已經載入的example?

Blog作者的回复:
你在"adb install"的时候其实是将apk文件写入到了模拟器的镜像里,在android目录的tools\lib\images目录中有三个img文件,你自己的apk程序写入到了"userdata.img"这个文件里,所以源程序不管怎么变化都不会影响到模拟器里面的,除非再次用"adb install"安装将原来的程序覆盖。


网友: aumbrella 时间:2008-04-09 17:22:22 IP地址:210.68.1.★
我修改res/valus/strings.xml,重新ant並adb install,但Android Emulator並沒有載入新的.apk,視窗裡都是舊的和更久之前apk,怎麼會這樣?
還有每次開啟Android Emulator都要等視窗中央的小紅點來回跑很久,有什麼辦法可以拿掉或縮短小紅點的等待時間嗎?謝謝!

Blog作者的回复:
会不会是程序的问题?我觉得可能是程序设计使更新之后的程序看起来和以前的没有变化,比如在string里设置了某个字符串,但主程序里又对使用那个字符串的变量设置了新的值?
模拟器启动慢确实是很恼人的,但目前还没有什么太好的办法,我一般是先把模拟器开起来,在编写代码和调试的过程中始终开着它不关闭,随时更新了程序随时"ant"+"adb install"就好~


网友: aUmbrella 时间:2008-04-09 18:10:41 IP地址:210.68.1.★
參考Android中文網->Android集中討論區->请问如何移除Andorid程序!(作者:lordhong版主)
adb shell
cd data
cd app
ls (會看到載入的apk)
rm *.apk  (把不要的apk移除)
小紅點的問題有空再研究,先按照你的方法,编写代码和调试期間不要關閉Android Emulaor,謝謝!^^

网友: hualuo1988 时间:2008-08-05 10:34:07 IP地址:123.127.211.★
说得好专业@@各种不明白

 发表评论