作为一个有Java基础的开发者来说,初步学习Android开发是很容易的一件事情,我身边就有同学是学java的,由于对Android开发感兴趣,就开始学习它,不到一个月的时间就做出了一款简单实用的小应用软件。可能会有好多人会问那专门搞Android开发的人和“半路进来”的人有哪些差距那?这里我想说的是,会做Android应用的人,并不一定代表他很懂Android,Android系统之所以作为当前世面上主流的智能手机系统,除了开源外,还有它自身系统的优势(博客:http://smallwoniu.blog.51cto.com/blog/3911954/1248169)想要彻底掌握Android应用层开发也不是那么容易的。


今天我就总结了一些Android开发中的琐碎细节,希望能帮助到大家!


一。ADB(Android Debug Bridge)

打开我们的android中sdk/platform-tools文件夹,里面存放着许多android开发过程中所需要的系统工具。

adb.exe

介绍:起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运行。

说明:借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作(获取手机数据)


常用adb命令:

adb devices 列出所有的连接设备 (DDMS左侧的窗口)

reset adb 重启adb的调试桥

adb kill-server 杀死adb调试桥

adb start-server 启动adb调试桥

adb install helloworld.apk 安装命令

(找到apk后可以直接将其拖入dos窗口即可,省的手动拷路径)

adb uninstall com.zhf.helloworld 卸载命令

adb shell 来到手机终端 执行linux命令

adb -s emulator-5554 install helloworld.apk 往指定设备安装 

注:重启不了情况:端口可能被占用,在命令行中敲 netstat -ano, 查看端口号命令),这里我们就知道了像豌豆荚,360手机助手等软件都有自己的adb,每当有手机连接电脑时会执行自己adb.exe,来对手机进行一系列的操作。


二。andriod和java虚拟机的区别

区别 JVM Dalvik JVM
编译后的文件格式 .java->.class->.jar .java->.class->.dex->.odex
编译程序

jdk中javac.exe

sdk 中dex.exe
基于的架构

基于栈的结构

基于寄存器的结构

注:jar效率低,但通用性强,非智能手机也能玩,而APK是android的专属安装文件,非android的手机就不能运行,效率高,一般有apk的优先要apk格式的

上面这张结构图我们可以清晰的知道,二者的执行过程:

.jar--->包含许多.class文件,内部执行javac.exe编译过程是把每个单独的.java文件转换成.class文件(包括Header、Class、Filed、Method、Attributes等)统一遍历一遍所需时间较长,执行安装程序速度慢(windows上setup.exe安装过程就是解压文件到电脑硬盘上

.apk--->只含有一个.dex文件,内部执行dx.bat将所有class文件中的Header、Class、Filed、Method、Attributes 等统一分类放在一起,转换成.dex文件,效率较高。


三。android应用程序的安装过程

首先,我们看一下工程下面的bin文件夹

里面包含了我们最后生成的apk文件,所有的res的资源,以及重要的classes.dex

这张图清晰的反映了我们的Android项目打包、安装过程:

打包:首先通过javac.exe将.java文件转换成.class文件,之后通过dx.bat将其转换成classes.dex文件,最后就是将其和整个项目对应的文件夹打成.apk安装包

安装:首先是对应用程序的签名,之后先将apk复制到手机上,其次是在手机上对apk的解压缩过程


四、启动应用程序

我们双击apk文件,如果电脑装了豌豆荚,就会自动关联豌豆荚将软件撞到手机上,这是为什么那?

原因就是类似于我们在Windows上双击.txt文件会打开记事本程序,是因为我们在系统盘的注册表上注册了该应用程序所关联的文件类型,那么我们在手机上打开应用程序,首先我们打开Android系统的注册表文件:

打开DDMS下的File Explore选项,会列出手机的所有文件信息,在/data目录下system系统目录下netstats文件夹下有两个目录

packages.xml : android系统的注册表(每安装一个应用程序都会在此写上配置信息,上以后要是加载这个程序,会首先去读取这个注册表加载到内存中获取其数据)

packages.list : 所有应用程序的包列表 和 对应数据的目录

五、模拟器

我们创建好的一个模拟器启动后(相当一个应用程序启动),会在C盘用户目录下.android/avd下生成一个文件夹目录


以上这些都是作为一个Android应用开发者你应该知道的一些东西,因为本人也是在学习Android,边学边总结,有遗漏或者有误的地方还请指正,谢谢!





     本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1320635,如需转载请自行联系原作者



【移动开发】Android应用开发者应该知道的东西相关推荐

  1. android游戏开发者大会,第二届中国Android应用开发大会将开

    2011年,是Android平台取得突破性发展的一年,下半年Android4.0的发布,则为Android在2012年的发展留下了充分的想象空间.在这一年里,Android不但巩固了其在国内移动应用开 ...

  2. 开发Android应用用Kotlin还是Java?

    还记得多年前有关Android与iOS孰优孰劣的辩论吗?如今,Kotlin与Java的争论,时常广泛地发生在开发人员之中.不过,由于大家往往关注的是Java所不具备的Kotlin功能,因此他们的结论可 ...

  3. android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码

    /** 版本:1.0 日期:2009-04-01 作者:HKjinzhao 备注: 转自:http://blog.csdn.net/hkjinzhao/article/details/4043997 ...

  4. 开发Android必知的工具

    程序开发有时候非常依赖使用的开发工具,好的完备的开发工具可以让开发人员的工作效率有大幅度的提高.开发Android也是如此,大家可能都离不开Eclipse或Android Studio这些工具,但他们 ...

  5. 在vs2012中用C#开发Android应用Xamarin环境搭建

    Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 简介 Xamarin是基于Mono ...

  6. 如何使用Android SDK开发Android应用?

    这是一个根源性问题,Android作为一个还是新兴的平台因为有Google罩着体现出强大的优势,加上现在的Java已经被手机商控制住了咽喉,所以相对而言,Sun对Java的控制力非常之弱,所以学Jav ...

  7. Android Wear开发者预览版入门

    Android Wear开发者预览版包括工具和API,增强了应用程序通知功能,提供针对Android可穿戴设备的最佳用户体验. 利用Android Wear开发者预览,你可以: 在Android模拟器 ...

  8. 用Kotlin开发android平台语音识别语义理解应用

    用Kotlin开发android平台语音识别,语义理解应用(olamisdk) 转载请注明CSDN博文地址:http://blog.csdn.net/ls0609/article/details/75 ...

  9. 【Xamarin开发 Android 系列 4】 Android 基础知识

    什么是Android? Android一词的本义指"机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件. ...

最新文章

  1. R语言dplyr包的slice函数提取数据集的数据行实战
  2. es6之扩展运算符...
  3. 如何制作linux文件系统,linux文件系统制作(一)
  4. Python_time模块
  5. 天气预测频繁2项集_986天气| 今年冬天比往年更冷?官方回应来了
  6. Sanic 连接postgresql数据库
  7. Golang并发(五) - Select
  8. vue_devtools的安装及资源(chrome and edge上的安装)
  9. 苹果6换屏多钱_iphone12换屏多少钱 苹果12/12pro换屏幕官方价格报价
  10. 利用TCN网络实现MNIST手写体数据集的识别
  11. matlab如何把散点放大,如何在matlab中更新散点3图(循环)
  12. 阿里云云计算 46 阿里云DDoS防护
  13. Linux深度学习框架安装
  14. [计算机网络]七、IP地址规划和静态路由
  15. Linux 操作系统的体系结构
  16. MDCC 2016参会总结
  17. 英文中常见连读规律总结
  18. Julia-第一章简介和资源汇总
  19. 网页编码与数据传递中的中文字符编码
  20. 虚拟研讨会:如何设计好的RESTful API?

热门文章

  1. Java异常信息处理
  2. atitit.软件开发方法总结O6
  3. iOS程序启动过程笔记
  4. selectpselect/pollppoll/epoll
  5. 【转载】RHEL系统crontab计划任务管理
  6. OpenDataSource,sql开放式数据源
  7. OpenGL中的reshape函数(整理)
  8. C++ 学习路线推荐
  9. python3 的 zip
  10. bootstrap框架中data-xxx 的属性