`
mmdev
  • 浏览: 12915779 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android入门(1) 不一样的HelloWorld

 
阅读更多
1、提要
今天,我们需要特别花一些时间来完成Android的HelloWorld。HelloWorld虽然简单,但是麻雀虽小,五脏俱全,是学习 Android 应用程序的最好示例。事实上,Android 应用程序虽然不是很复杂,但是通常涉及了 JAVA 程序,XML 文件,Makefile多方面的内容。
今天涉及到的内容包括:在Eclipse中建立新的Android项目,模拟器运行,真机调试,Apk打包发布。

2、创建Android项目
启动Eclipse后新建项目(快捷键ctrl+n),选择Android Application Project,接下来出现下面的对话框:



填写好项目名和应用名,设置好版本支持(我选的sdk版本是4.03,最低版本是2.33),下一步。
一路next,保持默认参数,最后就算建立完成了。
建立好的项目实际已经包含了一个显示HelloWorld的Activity,我们不需要修改人们代码。

3.文件及文件夹介绍
█ src文件夹
此文件夹下存放着程序的JAVA程序源码,可以看到已存在包com.android.demo、DemoActivity.java,这是新建工程时自动生成的。以后的编码工作主要在此文件夹下进行。

█ gen文件夹
可看到这个文件夹下存在包com.android.demo,包里面有一个R.java文件,里面保存了用到的资源的相关信息,由IDE自动维护,不需要手动修改。以后用到会详细讲解。

█ Android 4.0.3
这个为SDK包,如果选择其它的SDK这里会有所不同。

█ assets文件夹

存放资产文件的文件夹。


█ bin文件夹
编译生成的apk程序会存放到此文件夹下。

█ res文件夹
也是资源文件夹,但和assets文件夹有所不同:加入此文件夹的资源会被自动添加到gen下的R.java文件夹中,在程序中可通过R.java访问资源,而assets文件夹下的资源需自行维护。

res文件夹下主要放图片、文字、布局等文件。
█ AndroidManifest.xml文件

此文件为程序的配置文件,包含全局变量、应用组件、应用组件用到的类等信息。此文件相当重要,必不可少!

四、模拟器运行及真机调试
在刚在新建好的项目上右击 –> Run As –> Android Application,在你配置好模拟的情况下,Eclipse就会开始跑模拟器了,一般的机器需要跑2-4分钟,差的机子...可以去抽支烟,蹲一下。
记住是右击运行,而不是直接点Eclipse里的Run,否则会报错。
正常的结果如下:
4.0.3的模拟器界面应该是三星的Nex,模拟器起来之后可以到处点一下,熟悉熟悉。

接下来是真机调试。
我用的是小米M1s,可是eclipse 的 Devices里面显示的是unknow设备,哎哟,竟然无法识别。
解决方法:

用数据线链接设备后,输入:lsusb,可以看到类似输出:
liyoro@liyoro-Ideapad-V460:~/文档/android-sdks/platform-tools$
lsusbBus 002 Device 013: ID 1c4f:0003 SiGma Micro HID controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 008: ID 0489:e00d Foxconn / Hon Hai
Bus 001 Device 004: ID 1c7a:0801 LighTuning Technology Inc.
Bus 001 Device 005: ID 04f2:b18a Chicony Electronics Co., Ltd
Bus 001 Device 010: ID 18d1:9025 Google Inc.

拔掉手机的USB连接线,再输入:lsusb:
liyoro@liyoro-Ideapad-V460:~/文档/android-sdks/platform-tools$ lsusb
Bus 002 Device 013: ID 1c4f:0003 SiGma Micro HID controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 008: ID 0489:e00d Foxconn / Hon Hai
Bus 001 Device 004: ID 1c7a:0801 LighTuning Technology Inc.
Bus 001 Device 005: ID 04f2:b18a Chicony Electronics Co., Ltd
对比发现Bus 001 Device 010: ID 18d1:9025 Google Inc.就是小米手机的。

然后:
sudo gedit /etc/udev/rules.d/53-android.rules在打开的文件中增加以下文本:
SUBSYSTEM==”usb”, SYSFS{idVendor}==”04e8″, MODE=”0666
SUBSYSTEM==”usb”, ATTR{idVendor}==”04e8″, ATTR{idProduct}==”685e”, SYMLINK+=”android_adb”
sudo chmod a+rx /etc/udev/rules.d/53-android.rules
sudo /etc/init.d/udev restart

接着:
切换到android sdk的platform-tools目录下(这一步很重要,必须要sudo,否则没效果)

sudo ./adb devices (这个主要是查看下已连接上的android机器)
List of devices attached
???????????? no permission(这个是小米手机,尚未识别)
semulator-5554 device(~。~我开了个android模拟器)

以下命令是:重启adb服务,再输入adb devices就应该能找到设备了。

sudo ./adb kill-server
sudo ./adb devices
终端输出:

* daemon not running. starting it now on port 5037
* daemon started successfully*
List of devices attached
emulator-5554 device
0237036b device(这个就是小米手机了)

看到终端里面有以上输出,就说明设备识别成功了。在eclipse的Devices里面可以看到了。
接下来再运行,你的手机上就会运行你刚才开发的App了。

Eclipse自动查找是否有合适的设备(手机或模拟器),如果没找到会提示添加模拟器。如果找到多个符合条件(设备版本等于或高于程序版本)的设备会优先选择在线状态的设备,如果存在多个在线的设备会弹出选择窗口然你手动选择,然后自动将程序安装到选择的设备上并运行。

你可以在工程属性中指定为手动选择,这样每次运行都需要手动选择设备。

五、打包发布及数字签名
发布之前首先要创建数字签名。
关于签名:Android通过数字证书确定程序包的唯一性,与程序建立信任关系,在使用者的认可下使用预先申报的资源,这个数字证书并不需要权威的数字证书签名机构认证。

建议开发者使用同一个数字证书对你的作品进行签名,有如下好处:

有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。
有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
可以通过权限(permission)的方式在多个程序间共享数据和代码。Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。

扯得有点远了,具体方法,在终端执行命令:
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000生成签名(-alias android.keystore 生存的keystore别名,-keyalg RSA 加密和数字签名的算法,-validity 20000 有效天数)。

然后会出现下面的的提示:




大家可以根据自己的情况来填写。

创建好之后我们就可以来打包发布了。
Eclipse中,右击需要签名的工程-->android tools-->export signed application package...
出现下面对话框,选择需要签名的工程

next,选择上面生成的android.keystore文件位置和设置的密码
next
next,选择签名生成文件的位置和名称
finish,OK

六、参考资料

Android developers:http://developer.android.com/training/basics/firstapp/running-app.html google的官方教程,非常推荐。

雷一的博客:http://www.cnblogs.com/rayee/tag/Android/ 素然只有四篇,但作为入门教程还是很不错的。

Android 开发教程:网上流传的教程,缺点是有点老。









分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics