Android开发知识总结

Android 基础

背景相关

Android操作系统是一个由Google和开放手持设备联盟共同开发发展的移动设备操作系统。最早的一款系统是2008年9月,谷歌正式发布的Android 1.0系统,也就是Android最早的版本,随后不断的更新Android系统。同时随着版本的更迭,应用程序编程接口(API)等级也不断发生。设备的版本和屏幕大小等层次不齐,因此,开发时要考虑设备兼容性。比如支持不同的屏幕尺寸,支持不同的平台版本等等。
详细版本信息参考网址:https://developer.android.google.cn/preview
详细设备兼容性参考网址: https://developer.android.com/guide/practices/compatibility

平台架构图:

Android系统本身是一套软件堆栈(或称为软件层叠架构),它包含三部分:操作系统、中间件、应用程序。我们通过Android SDK(软件开发工具包)所提供的工具和API来开发各种应用。
何为软件堆栈?首先要知道堆栈是什么,堆栈的实现思想是先进后出(FILO),也就是说栈底的东西是最先进来的,栈底是封死的,只能进去而不能出来;而栈顶的东西都是最后进来的,由于不是封死的,所以它是朝着栈底方向挪移。将这个堆栈概念提升为软件堆栈,假设地说,栈底就是操作系统,栈顶就是实际的应用程序。换句话说就是软件之间的一种层叠的架构,一层叠一层,最底层的当然还是操作系统。
Linux内核
Linux内核作为Android的最低层系统,支撑了整个android平台。承上启下,连接了硬件和软件。
Linux内核:由C语言实现,抽象了硬件和软件。
核心服务:安全性,内存管理,进程管理等驱动:显示驱动,摄像头驱动,WiFi驱动,电源驱动等。从事Android驱动开发的人员会深入研究Android的Linux的内核。
系统库和 Android 运行时环境
有了Linux内核的基础,硬件设备的功能都可以通过代码来调用实现了。
Android 运行时环境 包括核心库和Dalvik虚拟机两部分:
核心库:
提供了基本的java类库,类似jdk,注:不包括全部api,例Swing;打包后的apk在手机中运行时调用Java中api就是来自这里
Dalvik虚拟机:
类似于JVM,是Google公司自己设计用于Android平台的虚拟机,它可以简单的完成进程隔离和线程管理,并且可以提高内存的使用效率,Dalvik虚拟机执行扩展名为.dex的Dalvik可执行文件,该格式文件针对小内存使用做了优化。
每一个app应用程序在其运行进程中都有一个独立的Dalvik虚拟机实例,主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。
Dalvik 基于寄存器,它的特点:不需要很快的CPU计算速度和大量的内存空间。
通过Dx工具将.class转换成.dex文件
系统库
兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.net、android.media等。
系统库是应用程序框架的支撑,是应用程序框架层与Linux内核层的重要纽带。
应用框架
用java实现的一些功能模块,为开发者提供一些功能调用的Api。
用JNI (Java Native Interface, JAVA本地调用) 调用系统库的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。
应用程序层
开发属于自己的应用程序,安装到手机上运行。参考网址: https://www.jianshu.com/p/ce821b201e35

Android 开发需要掌握的技术知识点全面总结

基础部分:
1 扎实的JAVA基础,熟练掌握面向对象(OOP)思想,熟悉java序列化机制实现Android下IPC的机制。
2 好的开发习惯,一心追求流畅顺滑的UI体验,对代码有洁癖。
3 熟练掌握Android四大组件(Activity,Service与intentService,LocalBroadcastManager的BroadcastReceiver,ContentProvider)。
4 熟练使用集合、IO流及多线程断点上传下载,和线程池的使用。
5 熟悉掌握RecyclerView,ListView等重要控件的使用和优化及(AsyncTask)异步任务加载网络数据。
6 熟练掌握Android中的多点触控(手势识别器)、熟悉Android下View的事件分发机制与并能处理滑动事件冲突处理。
7 熟练处理Activity和Fragment和ViewPage的配合使用,并能熟练处理Activity和Fragment,Fragment和Fragment之间的通信。
8 熟悉掌握Android系统下的广播(耳机的插拔,网络状态变化等)的相关功能开发。
9 熟悉Android下数据的加解密base64,DES,MD5加密和9patch图制作来完成UI,熟悉Android图像处理之Bitmap类。
界面UI:
10 熟练使用Android下常用的布局设计,新版本Material Design布局和设计,熟练自定义控件和一些主流的第三方控件的使用等。
11 熟悉Android中的动画,选择器,样式和主题的使用,能够实现市面上大多数动画效果。
12 熟练并能独立解决市面上各种Android机型屏幕的适配(图片适配,Dimens适配和AutoLayout适配等等)。
网络与通信:
13 熟悉Android下的Handler消息机制(Handler,Message,MessageQueen,Looper,HandlerThread),并能熟练使用Handler和熟悉使用EventBus 3.0和RXandroid机制。
14 熟悉XML/JSON数据解析和生成JSON/XML,以及Android下SQLiter数据库存储方式(greendao,ormlite)。
15 熟练使用ContentProvider来获取和更改手机系统中通讯录、短信的数据。
16 熟悉Android下混合开发,原生App和HTML5的使用,和js交互,数据通信。
17 熟练使用Android开发中重要模块的开发如:网络请求(AsyncHttpClient,Volley,OkHtttp,NoHttp,Xutils3.0里的网络请求API等)。
18 熟悉基于Xmpp通信协议的IM(即时通信)开发,和第三方IM的开发SDK(融云SDK等)。
19 熟悉界面间的数据传递(intent和EventBus3.0等等),进程间通信(AIDL,文件共享等等)。
20 熟悉Android下网络通信技术,对Socket通信、TCP/IP、Http有一定的了解和熟练使用。
数据持久化:
21 熟悉Android开发的数据(图片,文字,文件等)的缓存技术,并且能够对图片的优化进行相应的处理,熟悉ASimpleCache,LruCache缓存和DiskLruCache缓存使用。
框架模式:
22 熟悉掌握MVC模式,单例、工厂,观察者,模板等设计模式。
23 熟练使用市面上主流技术的Android开发常用框架(greedao,ormlite,EventBus3.0,PullToRefresh,Xutils3.0等等)。
异常与调试:
24 掌握OOM、ANR异常和各类友盟统计上的BUG的处理和熟练处理App全局Crash异常处理,并可以对应用进行相应的优化。
25 熟练使用代码质量检测工具FindBugs和内存泄漏检测工具 LeakCanary,更好的修正代码质量。
第三方及功扩展:
26 熟悉android 的JNI/NDK开发,通过JNI实现JAVA与C程序间的调用及回调数据通信。
27 熟悉使用支付宝,微信支付的SDK和银行的卡SDK的接入,为App增加支付模块。
28 熟练使用Android下的GPS定位和(接入百度地图定位SDK实现定位,标记,搜索等功能)。
29 熟悉主流常用的第三方SDK(友盟统计,极光送,QQ和微信的三方登陆和分享SDK,基于讯飞语音的文字和语音的相互转化开发)。
30 熟悉Android环境下的各类手机传感器开发(光传感器,方向传感器等等)。
31 熟悉Android的二维码开发,生成码和解析码,扫描码的开发。
32 熟练掌握Android手机中的3G/蓝牙/wifi的网络通信机制。
33 熟悉安卓技术中的视频播放开发技术(videoview,MediaPlayer ,Vitamo,VLC)。
34 熟练使用Android开发中图片处理(imageloarder,fresco,picasso,Xutils3.0里的图片加载API等)。
其他:
35 熟练掌握SVN版本控制工具及Eclipse、尤其是Android Studio和Studio下的DEBUG调试工具的使用。
36 熟悉android各版本SDK的差异及特性。
37 熟悉Android5.0和6.0以及7.0新特性(RecyclerView,MD设计,ART模式等)。
38 熟悉安卓App的线上App的热修复技术(Andfix和Hotfix),熟练使用的Hotfix热修复功能。
39 熟悉Android代码的混淆机制和多渠道打包,和后期的市场发布上线App的BUG修复维护和优化。
40 熟悉App(需求,评审,开发,测试,打包,发布市场,后期维护和迭代等一系列流程)和独立开发经验。

android打包签名,从生成keystore到完成签名

输入指令并获得结果:(对应自己的java安装目录)
首先,我们需要一个keystore,当然已经有了的话就不用这一步了:
cmd下:
进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件
C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
输入keystore密码:(例如:kingstone)
再次输入新密码:
按照提示填写,输入<android.keystore>的主密码(如果和 keystore 密码相同,按回车):
其中参数-validity为证书有效天数,这里我们写的大些10000天。还有在输入密码时没有回显(尽管输就是啦) 并且 退格,tab等都属于密码内容,这个密码在给.apk文件签名的时候需要.
然后签名:
Eclipse中,右击需要签名的工程–>android tools–>export signed application package…
出现下面对话框,选择需要签名的工程
next,选择上面生成的android.keystore文件位置和设置的密码
next,选择签名生成文件的位置和名称
原文链接:http://www.cppblog.com/fwxjj/archive/2010/05/24/116208.html

创建项目

参考博客:
https://blog.csdn.net/qq_39400113/article/details/116210189?utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-6.nonecasedepth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-6.nonecase

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值