安卓开发—Android基础

article/2025/10/25 9:27:13

安卓开发—Android基础

移动开发

移动开发也叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,业内也称作为无线开发。

移动应用包括早期的WM掌上助理设备,Web os设备、java设备、塞班设备,以及现在现在火热的安卓和苹果设备等移动应用的开发。

谷歌提供安卓平台,要开发,只需要掌握java语言,就可以在安卓平台上进行开发。

三大主流移动开发平台

以下是Android、IOS、Windows phone三大主流移动开发平台的分析对比:

 

Android是一种基于Linux内核的自由及开放源代码的操作系统。做安卓开发可以不买手机,在电脑上搭建一个模拟器就可以进行开发。

选择安卓开发是因为安卓系统是开源的,是采用java语言的。

SDK

软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

安卓的系统架构

Android 系统架构共分为五层 应用层 应用框架层 系统运行库层 硬件抽象层和Linux内核层

 

一、应用层:

系统内置的应用层序以及非系统的应用程序都是属于应用层的,负责与用户直接交互。

二、应用框架层(Framework层)

应用框架层为开发人员提供开发应用层序所需要的API。我们平时开发用到的API都是应用层框架层提供的,当然也包括系统的应用,

这一层是用Java 语言编写的。下图是应用框架层所提共的主要组件

 

三、系统运行库层

1、系统运行库层分为两部分:分别是C/C++程序库和Android运行时库,

C/C++程序库能被Android系统中不同组件使用,并通过应用框架层向开发者提供服务,主要的C/C++程序库如图所示:

 

2、Android运行时库

运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART 的机制与Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。

四、硬件抽象库

硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。

五、Linux层

Android 的核心系统服务基于Linux 内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。这一层和手机硬件进行交互,内存管理、进程、驱动管理。

Dalvik虚拟机与JVM虚拟机的不同

安卓应用是运行在Dalvik虚拟机上的,安卓系统是面向移动设备的,移动设备大多CPU比较弱,内存比较小。在Dalvik虚拟机上运行,可以对程序的执行进一步的优化。

Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。

java虚拟机Dalvik虚拟机
java虚拟机基于。 基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多dalvik虚拟机是基于寄存器
java虚拟机运行的是java字节码。(java类会被编译成一个或多个字节码.class文件,打包到.jar文件中,java虚拟机从相应的.class文件和.jar文件中获取相应的字节码)Dalvik运行的是自定义的.dex字节码格式。(java类被编译成.class文件后,会通过一个dx工具将所有的.class文件转换成一个.dex文件,然后dalvik虚拟机会从其中读取指令和数据)
常量池已被修改为只使用32位的索引,以 简化解释器。dalvik的堆和栈的参数可以通过-Xms和-Xmx更改
一个应用,一个虚拟机实例,一个进程(所有android应用的线程都是对应一个linux线程,都运行在自己的沙盒中,不同的应用在不同的进程中运行。每个android dalvik应用程序都被赋予了一个独立的linux PID(app_*))

.java—>.class—>可执行文件 .java—>.class—>.dex(把成百上千的.class文件变成一个.dex文件)

Dalvik虚拟机运行的是.dex文件


http://chatgpt.dhexx.cn/article/7OUtoC3c.shtml

相关文章

为什么要自建量化交易平台?

量化交易平台概述 量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的投资方式。它从历史数据中选择经数量模型验证的大概率事件制定策略,通过严格执行来获得持续稳定的超额回报。它具有严格的纪律性、完备的系统性、善用套利思想、依靠…

easytrader 量化交易平台连接同花顺软件使用平安证券

参考:https://easytrader.readthedocs.io/zh/master/usage/#_15 https://blog.csdn.net/iycai/article/details/107592462 *** 安装:pip install easytrader import easytraderuser easytrader.use(ths) #其他券商专用同花顺客户端需要提前下载同花…

量化交易平台设计浅谈

“买入前10只现价创一年新高的股票,合计10万元平均分配,限价下单”,这是一个交易策略;运行该交易策略所需要的实时行情、历史行情、事件处理、风控、下单接口、回测统计等模块,就是交易系统平台。 从投资机构的角度考…

Lean — 优秀好用的开源量化交易平台

Lean 是 QuantConnect 开源的一款非常强大的开源量化交易平台,可以回测或运行Python或者C#写的策略,并在代码仓库中内置了上百个C#和Python的策略算法。 这个开源的算法交易引擎,专为让用户方便轻松地进行策略研究、回测和实时交易而构建。它…

基于聚宽量化交易平台实现量化交易策略

一、入门量化策略 JoinQuant聚宽API文档:https://www.joinquant.com/help/api/help?nameapi 1、策略内容 设置股票池为沪深300的所有成分股 如果当前股价小于10元/股且当前不持仓,则买入; 如果当前股价比买入时上涨了25%,则清仓止…

手把手搭建Python量化交易平台-1:系统架构

个人量化交易的系统架构图: 个人量化交易平台特点: 个性化:开源参考设计 自行个性化设计数据化:python数据分析可视化:phthon前台显示智能化:人工智能及机器学习自动化:通过自动化机制&#x…

Python量化交易平台:QMT (日内交易策略示例)

QMT /Ptrade是一款面向个人投资者,尤其是中高净值个人投资者的专业交易系统。系统采用先进的技术框架,具有功能丰富、风控全面、管理灵活、架构精简、高效稳定等核心优势。PTrade终端不仅支持多品种普通交易、日内回转交易、量化交易等场景;还集成了期权组合交易、期权无风险…

量化交易平台Quantopian学习的笔记(一)

最近对量化感兴趣,每周末带孩子上辅导班等候时在星巴克记录的一些笔记,记录一下便于以后查阅,一并分享出来希望对大家有帮助。 Quantopian量化交易平台主要针对美股,国内也有几个针对A股的,对A股感兴趣的可以去网上找…

如何通过量化交易平台接口搭建自己的平台?

市面上其实已经有那么多的可以使用的相对比较完善的量化平台了,但是为什么还是有那么多人选择自己搭平台呢?毕竟重复造轮子,是一件吃力不讨好的事情。因为每个人的选择是不一样的,而且在整个搭建的过程中,也能学习到很…

支持python的量化交易平台

现在支持python的量化平台有很多,其中的“佼佼者”无疑是聚宽量化平台和讯投QMT。 简单介绍下两款量化平台: 迅投QMT量化交易平台:支持VBA、python语言编程,可交易的标的包括股票、ETF、可转债。 优点包括:智能算法行…

主流量化交易与程序化交易平台整理

本文整理了主流的股票、期货与外汇程序化交易的平台与相关资料介绍,部分内容来自网络,图片来自各平台官网截图。 国内大众版 【名称】掘金量化 | MyQquant 【官网】https://www.myquant.cn/ 【简介】成立于2013年,深耕量化投资领域&#xf…

ISE 14.7安装教程——新版(普通安装环境以及难搞的Win10)

对于学习Xilinx系列FPGA的同学们一定少不了和ISE软件的接触,ISE软件最新的版本就是ISE14.7,但是这个版本在win10系统64位的电脑上安装可谓是问题百出,这篇文章的目的是让你会在你的电脑上安装ISE14.7,也是让ISE14.7在64位的win10电…

第2章 Linux操作系统应用入门

嵌入式系统就是一个专用的计算机系统,其上运行的操作系统一般采用Linux系统,既然如此我们就要学会如何使用Linux操作系统。 2.1启动Linux系统 1.在宿主机上启动虚拟机,点击启动Ubuntu系统。 如下图所示: 2、Ubuntu系统启动以后,…

HPS SoC和FPGA联合使用例程

本教程演示了如何使用HPS/ARM与FPGA进行通信。我们将为DE10标准开发板介绍如何根据官方的DE10_Standard_GHRD工程开发出自己的My_GRHD工程。之后,我们会在My_GHRD工程上运行我们自己改造过后的HPS_FPGA_LED应用程序。该应用程序会控制连接到DE10标准开发板上FPGA部分…

RV1126与RV1109 AI系统设计概要(一部分)

RV1109与RV1126参数 主要区别 RV1126处理器(例子) 四核核 Cortex-A7,ARM架构V7-A指令,独立Neon SIMD(一种高级单指令多数据扩展指令集,可执行并行数据处理),与独立FPU(浮点计算)。(RV1109双核A7) 每核有32…

JTAG学习笔记 (3)

因为WIGGLER的一些不可避免的缺点,我们现在将精力集中在JLink上。 JLink是大家都能够买的起的仿真器(当然是D版),已经是白菜价了,可以参考淘宝。他真的是仿真器,虽然目前只能支持ARM系列的芯片&#xff0c…

嵌入式系统设计笔记

难点:第五章,第十章三级流水线组织,第十一章 第一章 嵌入式系统导论 1、ARM是RISC架构 2、Cortex,ARM11以后的产品使用Cortex命名,并分为A/R/M三类 3、ARM指令分为数据处理、数据传递、控制指令 4、CM 2835 在树莓派上…

JTAG接口无法连接的问题

题目:JTAG接口无法连接问题 本文包含两部分内容:1)续写TI DSP连接不上的问题;2)顺便提一下Xilinx FPGA的JTAG口连接不上的问题。 一、TI DSP为啥连接不上? 半年前发过一篇博文《DSP为啥连接不上&#xff1…

STM32夺命100问!你知道几个?

点击上方“小麦大叔”,选择“置顶/星标公众号” 福利干货,第一时间送达 1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2、Stm32f10x.h相当于reg52.…

智能教室控制系统

智能教室控制系统 引言 概述 该系统通过上位机C#控制下位机STM32,实现教室打卡考勤功能,通过打卡对数据库SQLserver进行增删改查,同时能将数据库的数据导出表格,下位机用到RFID的RC522模块,舵机、风扇,w…