Android开发
文章平均质量分 87
和平浪子
积小步而至千里
展开
-
Android应用程序的编译和打包
Android系统的APK应用程序可以有以下几种编译方式借助系统编译:利用Android.mk 文件将众多小项目组织起来借助IDE编译:AndroidStudio命令行编译 : 比如利用gradle脚本编译APK应用。原创 2024-02-05 15:32:39 · 2666 阅读 · 0 评论 -
Android系统-应用程序中的View框架
源码分析基于Android 7应用程序中的View框架如图所示。原创 2024-02-02 00:48:24 · 550 阅读 · 0 评论 -
GUI系统--SurfaceFlinger
GUI即是图形用户界面,可以说任何操作系统中都占据非常重要的位置,因为它是用户对操作系统最直接的感官体验。一款优秀的图形界面系统至少满足以下几个条件。流畅性 :评判GUI系统重要准则之一。友好性:GUI直接面向用户,操作友好直接影响用户体验。可拓展性 :意味着用户或者开发者可以在原来基础上延伸,添加新的界面和交互方式。因为Android的GUI系统是基于OpenGL/EGL来实现的,所以掌握一定OpenGL基础只是对于分析Android系统源码会有帮助。原创 2024-01-28 01:30:20 · 976 阅读 · 0 评论 -
管理Activity和组件运行状态的系统进程--ActivityManagerService(AMS)
AMS是Android提供的一个用于管理Activity(和其他组件)运行状态的系统进程,也是我们编写APK应用程序时使用的最频繁的一个系统服务。AMS是寄存于systemServer中的。它会在系统启动时,创建一个线程来循环处理客户的请求。Android 10系统的AMS通过引入活动隔离、后台启动限制、活动栈管理、系统级活动和后台服务限制等功能,提高了系统的性能、安全性和资源管理能力。这些改进使得应用程序在Android 10上更加稳定、高效,并提供了更好的用户体验。原创 2024-01-27 08:58:09 · 678 阅读 · 0 评论 -
Android系统启动-zygote启动分析
Zygote这个词的字面意思是“受精卵”,因而可以孕育出一个新生命。正如其所示Android中大多数应用进程和系统进程都是Zygote来生成的。那么Zygote是如何启动的,也是由init解析rc脚本时启动。原创 2024-01-23 10:42:28 · 992 阅读 · 0 评论 -
JNI数据类型
JNI类型原创 2024-01-22 22:52:04 · 399 阅读 · 0 评论 -
Android的内存泄漏分析
内存溢出: 指程序在申请内存时,没有足够的内存空间供其使用,出现out of memoryAndroid系统为每个应用程序申请到的内存有限,一般为64M或者128M等,我们可以在清单文件中进行配置,android:largeheap = "true" 从而给APP申请更大的内存空间;给APP申请更大的内存空间。 内存溢出又分为 : 堆内存溢出, 栈内溢出。 虚拟机: JVM的作用是把平台无关的.class里面的字节码翻译成平台相关的机器码,来实现跨平台。Dalvik和Art就是安卓中使用的虚拟机。项目原创 2023-07-12 14:03:23 · 1753 阅读 · 0 评论 -
Android Binder进程间通讯原理分析
Android系统是基于Linux内核开发的。Linux开发提供了丰富的进程间通讯机制,例如管道、信号、消息队列、共享内存、插口(Socket)。而Binder是一套新的通讯工具。Binder通信采用了c/s架构,所以我们包含了 Client,Server,ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务。注意:图片来源于网络从进程进度来看IPC机制, 每个Android的进程只能运行在质疑进程所拥有的虚拟地址空间。原创 2023-07-10 11:42:01 · 312 阅读 · 0 评论 -
Android系统启动流程分析
当按下Android系统的开机电源按键时候,硬件会触发引导芯片,执行预定义的代码,然后加载引导程序(BootLoader)到RAM,Bootloader是Android系统起来前第一个程序,主要用来拉起Android系统程序,Android系统被拉起首先肯定会启动Linux内核。备注:我们再刷机时候,经常看到工具软件会让我们切换bootloader/loader模式,其实就是重新激活bootloader程序,然后再拷贝新的镜像文件重新刷机,就是通过这个程序重新初始化硬件设备,建立内存空间映射。原创 2023-07-11 23:49:11 · 12634 阅读 · 5 评论 -
Android AIDL基本使用
功能实现,由客户端发送数据过来,简单保存一下aString。客户端还必须拥有接口类的访问权限,因此如果客户端和服务在不同应用内,则客户端应用的。这样server端服务已经开发好了,只需要在Activity把这个服务启动即可。因为我们给server端记上了权限,那么客户端需要把对应权限加上。文件,使用 Java 编程语言生成接口。接口,进而为客户端提供 AIDL 方法的访问权限)的副本。类并实现 AIDL 接口中的方法。--加上服务权限 -->此文件定义带有方法签名的编程接口。的内部抽象类,用于扩展。原创 2023-07-06 11:50:50 · 1142 阅读 · 1 评论 -
Kotlin集合的函数式API
1. 基础filter和map使用filter函数遍历集合并选出应用给定的lambda后返回true的那些元素例子:val list = listOf(1,2,3,4,5,6,7,8,9)// 只保留偶数 println(list.filter { it % 2 == 0 }) // 打印的到: [2, 4, 6, 8]map函数对集合中的每一个元素应用给定的函数并把结果收集到一个新的集合。例如把数字列表变成平法列表val list = listOf(1,2,3,4)..原创 2021-08-18 00:32:40 · 317 阅读 · 0 评论 -
Android 接口定义语言 (AIDL)
Android 接口定义语言 (AIDL)AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码翻译 2017-06-13 09:07:01 · 470 阅读 · 0 评论 -
Android安装APK详解
转载自:http://cstsinghua.github.io/2016/06/13/Android安装APK详解/Android安装APK详解 引言众所周知,Android应用最终是打包成.apk格式(其实就是一个压缩包),然后安装至手机并运行的。APK即Android Package的缩写,那么,Android安装应用APK的具体方式及其详细过程是转载 2017-06-16 17:25:52 · 8801 阅读 · 0 评论 -
RxJava学习笔记
RxJava学习笔记从以下几个问题来认识RxJava什么是RxJava异步,一个在java vm上使用可观察的序列来组成的异步,基于事件的程序库。RxJava有什么好?简洁。逻辑性强。RxJava的设计模式RxJava采用观察者模式设计,主要核心类有以下几个 Observable ->被观察者 Observer ->观察者 Subscribe ->订阅事件 关系:Observable 和 O原创 2017-01-09 14:33:38 · 595 阅读 · 0 评论 -
Android压力测试Monkey
Monkey压力测试Monkey工具可以模拟各种按键、触屏、轨迹球、导航、Activity事件。此工具的用法如下:adb shell monkey [options] <event-count> // 待定事件adb shell monkey -p packageName -v number // number 随机事件的次数为了进行全面测试,需要在Activity中加入程序入口。配置如下:原创 2017-01-16 08:50:52 · 680 阅读 · 0 评论 -
Git上传代码到OSChina仓库问题
git上传本地项目到oschina仓库,以及SSH公钥的生成配置。原创 2017-01-16 13:34:59 · 827 阅读 · 0 评论 -
Android自动化测试
1、Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。2、MonkeyRunner也是Android SDK提供的测试工具。严格意义上来说MonkeyR转载 2017-01-16 23:10:55 · 758 阅读 · 0 评论 -
最流行的Android组件大全
本文转自:http://blog.csdn.net/qq_16131393/article/details/51465538最流行的Android组件大全 http://www.open-open.com/lib/view/open1409108030307.htmlAndroid开源项目分类汇总 http://www.open-open.com/lib/view/open转载 2017-01-19 00:07:07 · 1254 阅读 · 0 评论 -
Android Studio导入Android源码
Android Studio导入android源码android源码编译官方指南清华大学TUNA镜像源预备工作根据android源码编译官方指南完成在Ubuntu或者Mac上的部署,由于网络原因,需要TUNA提供的初始化包(压缩包大约24G),后续只要执行repo sync同步源码树即可。向导默认初始化的是最新版Android系统的Master分支,如果后续想切换分支的话,转载 2017-02-28 23:06:42 · 994 阅读 · 0 评论 -
浅谈谷歌全新设计理念Material design
本文转自:http://www.androidchina.net/1213.html在今年的谷歌I/O开发者大会上,谷歌设计部门副总裁马提亚斯·杜亚特向世界各地的开发者们展示了其全新的设计语言Material Design。这个设计在Android 5.0 中首次亮相。率先搭载Lollipop的设备分别是Nexus 6智能手机和Nexus 9平板电脑,这两款设备在上个月月初亮相,而这预示着转载 2017-01-24 16:08:10 · 955 阅读 · 1 评论 -
GreenDao2 配置混淆错误解决
配置了混淆后已启动App,就直接Cash。log信息报如下错误:Caused by: java.lang.NoSuchFieldException: TABLENAME检查了proguard-rules文件并且按照官方给出方法去配置混淆规则23456789101112原创 2017-03-22 16:44:29 · 2855 阅读 · 1 评论 -
Android.mk
概览Android.mk 文件位于项目 jni/ 目录的子目录中,用于向构建系统描述源文件和共享库。 它实际上是构建系统解析一次或多次的微小 GNU makefile 片段。 Android.mk 文件用于定义 Application.mk、构建系统和环境变量所未定义的项目范围设置。 它还可替换特定模块的项目范围设置。Android.mk 的语法用于将源文件分组为模块。 模原创 2017-04-16 22:58:32 · 886 阅读 · 0 评论 -
解决AndroidStudio引入Lambda之后导致ButterKnife8.4.0版本无法初始化View问题
那现在问题就来了。发现ButterKnife注解的View都能注解成功但app运行时,View都报空指针异常。。经过查找资料,把ButterKnife配置如下成功解决问题:原创 2017-01-06 11:48:22 · 1141 阅读 · 1 评论