Android开发基础(1)--SDK

    技术2026-09-10  19

        刚听说Android的时候,只知道是个Google开发的,有Linux内核的系统,等我想往上面移植Linux程序的时候,我傻眼了,我错了。。。 I.Android的基本构造和运行过程

        简单地说,Android运行在一个修剪过的Linux内核上;其上的“用户”程序都是Java程序,运行在非标准的Dalvik JVM上;Android会运行一个Zygote(受精卵!#@)进程,它是所有实际“用户”进程的父进程,为每一个用户进程创建JVM并运行之。 II.SDK 和 NDK

        这样说来,Android上的用户程序都得用Java开发咯,没错,这就是Anroid SDK的工作。但是,碰到注重效率,关联底层,或者移植现有的C/C++ 程序/库时,非得用C/C++不可,Google很“周到”地提供了NDK(Native Dev. Kit),但是让人抓狂的就是这个NDK:首先它不是标准的POSIX兼容C库,使用的是一个古怪的Bionic C lib:没有SYS V shm/sem,pthread残疾,fcntl残疾,没有regex,passwd.h残疾...再者与它配合的“Android内核”也是怪胎:不开放tty,非标准/dev/fb0,不开放声卡接口,就算本版开放,说不定下版就关了...最要命的惨不忍睹的C++支持(几乎没有),没有STL,想写个cout<<"fuck android!";都不行!(NDK r5 号称有,我费了大白天功夫都没配置出来。)

        这就是必将在接下来数年红透世界的Android,Google的用意很明确,底层的NDK是给它自个儿用的,其他开发者也就是用JAVA写UI的命了!太TMD的让人不爽了!世无英雄,竖子成名!我可怜的MeeGo,还有可恨的Nokia!!     发完牢骚回归正题,我的重点在NDK上,但是还必须说下SDK. III.SDK 配置和使用

        前面说到SDK是Android的标准开发环境,开发在Dalvik JVM上跑的Java程序。SDK的资料很多,恐怕很多都是Windows 下用Eclipse进行Java开发的(有的还用Cygwin),我是Ubuntu 9.04-amd64 下用ant纯粹命令行开发的,有些不同,恕不指出。    1.准备依赖环境和工具:

       sudo apt- get  install ant git-core gnupg flex bison gperf build-essential zip curl /

    zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs /

    x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

     

        2.下载android-sdk(满地都是 ),按你开发平台的需要下载1.5/2.1/2.2/3.0,解压即可用。

        3.假设$SDK=/opt/android-sdk-version/, 则关键工具在$SDK/tools/ 下:android(sdk及工程管理) 、emulator(模拟器)和adb(调试和设备管理),不妨将此目录加入$PATH.     4.管理android sdk工程 : 1)创建工程

    #mkdir helloworld #cd helloworld #android create project --name HelloWorld --path ./ --package my.helloworld --activity Helloworld --target anroid-2.2 或者简单点

    #android create project -n HelloWorld -p ./ -k my.helloworld -a Helloworld -t 4 (可查看#android --help) 就此建立名为HelloWorld的工程

    #ls AndroidManifest.xml build.xml default.properties build.properties src/ bin/ gen/ libs/ res/ tests/

    工程的主文件生成为src/my/helloworld/Helloword.java,例如:

     

    1. /* 2. * Copyright (C) 2009 The Android Open Source Project 3. * 4. .... 5. */ 6. package my.helloworld; 7. import android.app.Activity; 8. import android.widget.TextView; 9. import android.os.Bundle; 10. 11. public class HelloWorld extends Activity 12. { 13. /** Called when the activity is first created. */ 14. @Override 15. public void onCreate(Bundle savedInstanceState) 16. { 17. super.onCreate(savedInstanceState); 18. /* Create a TextView and set its content. 19. * the text is retrieved by calling a native 20. * function. 21. */ 22. TextView tv = new TextView(this); 23. tv.setText("Hello world!/n"); 24. setContentView(tv); 25. } 26. }  要想更新工程, #android update project -p ./ 2)生成程序

    所有能放到android 商店的程序都需签名(此处省去500字),开发时不用管。 #ant debug

    若成功,则在 ./bin/文件夹下生成打包好的Helloworld-debug.apk文件。 3)运行程序

    可以在设备(手机、平板)或模拟器运行的虚拟机上运行Android 程序

    3.1)设备连接 将android 设备的”usb 设置“设为”仅充电“(charge only),在”设置-->开发“内选择"开启调试”。usb接入电脑后,运行 #adb devices 若成功识别则显示为 List of devices attached MOTO xt800...等等 若显示No device detected,则仔细检查上面步骤。 3.2)创建和使用anroid 虚拟机

    #anroid create avd -n Mydroid -t 4 也可以直接

    #android

    进入界面管理sdk和avd(android virtualdevices).

    #emulator -avd Mydroid & 启动刚才创建的Android虚拟设备(实际是qemu 模拟出来的),会出现手机界面之类的。对其使用与物理设备相同的adb 命令进行管理。 3.3)安装运行程序

    #adb install ../.../Myproject/helloworld/bin/Helloworld- debug.apk 成功后(失败的原因基本两个:1.已有,要先卸载 2.API版本不对)可以发现设备的程序库里多了个Helloworld,点击运行。 卸载的话: #adb uninstall my.helloword (注意名称)

    这就是基本SDK命令行配置开发的大致内容,相关工具:比如adb 的更多内容会在NDK使用中讲到。

     

    最新回复(0)