Android
文章平均质量分 60
小路塔
目前发量还行
展开
-
Android Studio 导入源码
目前做framework开发,仅仅导入framework源码进行查看,发现很多跳转并不能跳转,得益于公司配备的电脑性能超好,查看的时候导入源码进行查看比较方便。1.拷贝android.iml 和android.ipr 放到源码根目下面如下路径development/tools/idegen/templates/android.imldevelopment/tools/idegen/templates/android.ipr2.打开 根目录下拷贝的android.iml 文件 用如下.原创 2021-12-15 11:22:56 · 2790 阅读 · 0 评论 -
ubuntu 18.04 增加或删除swap分区扩展
全编译Android R 系统的时候内存只有16G,编译过程一直报错,查看系统发现交换内存只有2G,每次编译都是处于满的状态,而且电脑比较卡顿,于是将交换内存调整为32G,终于编译通过了。一、增加Swap空间1. 查看当前内存和swap分区在终端输入free~$ free终端输出 总计 已用 空闲 共享 缓冲/缓存 可用内存: 15658948 6803860 88420原创 2021-10-13 09:15:03 · 1477 阅读 · 0 评论 -
Android系统Activity的显示原理
本文查看的源码是Android 7.1所有方法中的代码只保留了本文关注的代码。抽空研究了一下Activity的显示过程,主要是熟悉Android中的Activiy从设置布局到绘制显示的整个流程。按照老惯例先上时序图涉及的文件路径:frameworks/base/core/java/android/app/Activity.javaframeworks/base/core/java/android/view/ViewRootImpl.javaframeworks/base/.原创 2021-07-07 18:00:56 · 843 阅读 · 3 评论 -
Repo下载以及Repo init报错解决
1, repo 下载在工作目录下创建bin文件夹(默认Home下面存在bin文件夹直接放到bin文件夹即可)1.1如果不存在bin文件夹$ mkdir ./bin将bin目录添加到系统环境变量PATH=./bin:$PATH下载repo脚本(清华源)curlhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo-o repochmod +x repo更新repo的运行过程中会尝试访问官方的git源更新自己,可以使用tuna的镜像...原创 2021-07-06 21:02:08 · 11213 阅读 · 0 评论 -
常用adb 命令
1.获取输入命令adb shell getevent2.修改系统shuxingzhi原创 2021-06-18 17:25:57 · 329 阅读 · 0 评论 -
系统添加自定义路径属性到系统属性中
在init.c文件main函数中会调用start_property_service(),而它分别调用load_properties_from_file函数读取PROP_PATH_SYSTEM_BUILD(/system/build.prop)、PROP_PATH_SYSTEM_DEFAULT(/system/default.prop)和PROP_PATH_LOCAL_OVERRIDE(/data/local.prop)存放系统属性的文件并设置到系统属性。编译时由build/tool/buildin.原创 2021-06-16 10:01:19 · 439 阅读 · 0 评论 -
Java 单向列表的几种操作方式(删除,查找环,环入口)
package com.ccl.demo;import java.util.HashSet;import java.util.Stack;public class StackUtils { class Node{ int data; Node next; public Node(int data,Node next) { this.data = data; this.next = next;.原创 2021-06-11 22:58:28 · 606 阅读 · 1 评论 -
Android Hook动态替换目标Activity(免AndroidManifest注册 )
Android 7.1 APP 启动流程分析里面原创 2021-06-07 17:33:38 · 1534 阅读 · 3 评论 -
使用FFMPEG 模仿微信拍视频
难得有点空闲,就想到了微信经常用的聊天是用什么做的,因为之前自己是做系统Camera的所以就看了一眼,就能发现,微信聊天使用的不是原生相机,那么问题来了,微信使用的是什么相机?仔细一想,不同的手机平台原生相机相同的时间录制视频大小,码率大小,帧率大小都不可控,为了统一视频格式微信自己对视频进行自己生成,倒不如自己去进行视频的合成,想到了之前学习的FFMPEG,FFMPEG其功能非常强大(图片和昌视频,视频进行抽帧等等功能)可以对输入的视频流进行独立的合成,不用受用于系统厂家原生相机的限制。原理其实非原创 2021-04-27 20:17:44 · 298 阅读 · 0 评论 -
Android通过adb shell am broadcast发送广播 参数说明
通过命令行执行adb shell am broadcast发送广播通知。adb shell am broadcast 后面的参数有:<INTENT> specifications include these flags and arguments:[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>][-c <CATEGORY> [-c <CATEGORY>] ...][-e|--e原创 2021-03-24 10:53:53 · 7944 阅读 · 1 评论 -
App性能优化分类以及工具介绍
Android性能优化.xmind下载原创 2021-02-05 20:58:27 · 193 阅读 · 0 评论 -
AndroidStudio 配置 性能优化埋点AOP-AspectJ
AOP-AspectJ在buildscript的dependencies中添加如下代码 classpath 'org.aspectj:aspectjtools:1.9.2' classpath 'org.aspectj:aspectjweaver:1.9.2'在library/module中添加依赖implementation 'org.aspectj:aspectjrt:1.9.2'添加gradle任务import org.aspectj.bridge.IMessa...翻译 2021-01-30 14:56:14 · 386 阅读 · 0 评论 -
UbUntu 下反编译APK
反编译需要将apk反编译成jar包,然后使用jadx工具进行查看源码。最好是配合AndroidStudio的 Profile or Debug APk 这样的话可以查看到很多的资源文件名和AndroidManifest.XML的类名代码。总体分为如下几个步骤。1.下载enjarify 反编译apk$ git clonehttps://github.com/google/enjarify.git$ chmod 777 -Renjarify2,下载jadx 并且进行 g...原创 2021-01-19 17:51:54 · 1028 阅读 · 0 评论 -
Android车载蓝牙文件传输自动接受和弹窗接收 (Android5.1 & Android 7.1)
车机蓝牙作为从端的存在,限制了不少的功能,目前公司需要做车载蓝牙文件传输操作,但是车机系统修改的时候把原生的systemUI进行了定制,导致传输的时候不能进行弹窗确认,那么系统蓝牙也要做对应的修改才能进行文件的传输.如果不知道如何进主从设置的可以看看Android 7.1 系统 部分功能修改 汇总这篇文章进行修改 .接收的文件都在/sdcard/bluetooth/目录之下首先将packages/apps/Bluetooth/res/values/config.xml 文件中的profile_s..原创 2020-11-19 16:36:27 · 4604 阅读 · 0 评论 -
android源代码在线查看
国内网络在线查看:http://androidxref.com/https://www.androidos.net.cn/sourcecodehttps://github.com/aosp-mirrorAndroid 官方的网址:https://source.android.com/sourcehttps://android-review.googlesource.com/q/status:open原创 2020-09-09 09:59:45 · 331 阅读 · 0 评论 -
Android 蓝牙启动流程(以及设置蓝牙为作为sink模式 & 接收端模式)
本文以Android 7.1为基础最近在做蓝牙开发,研究了一下蓝牙的启动流程,总结一下Google在Android源码中推出了它和博通公司一起开发的BlueDroid以替代BlueZ。BlueZ的创始者,高通公司也将在基于其芯片的Android参考设计中去除BlueZ,支持BlueDroid。相比BlueZ,BlueDroid最值得称道的地方就是其框架结构变得更为简洁和清晰。对我们工程师来说这也是个不错的福利,清晰、简洁的架构使我们在debug过程中思路更清晰;蓝牙的总体流程图从流程图我们可原创 2020-08-29 13:20:30 · 8884 阅读 · 0 评论 -
Android 7.1 系统 部分功能修改 汇总
1.修改蓝牙为从端device/qcom/msmxxx/system.prop//设置成从模式persist.service.bt.a2dp.sink=truepersist.service.bt.hfp.client=truedevice/qcom/msmxxx/overlay/packages/apps/Bluetooth/res/values/config.xml<?xml version="1.0" encoding="utf-8"?> <resour.原创 2020-06-18 10:47:43 · 1647 阅读 · 0 评论 -
Android 7.1 APP 启动流程分析
本文是基于 Android 7.1 系统进行探讨的.我们都知道Launcher 其实也是一个APP ,安装好的应用的快捷方式都被放在了Launcher中.很多的厂家或者厂商都在定制自己的Launcher,目前我们知道Android现在使用的是Launcher3的版本,下图是 Java应用层创建Activity的过程我们可以在如下路径找到Launcher.javapackages/apps/Launcher3/src/com/android/launcher3/Launcher.j.原创 2020-06-17 10:02:24 · 1131 阅读 · 1 评论 -
Android Studio 生成含第三方jar包 以及引入指定的jar
对于一些要使用修改了系统的API的应用 ,使用AndroidStudio不能编译APK,导入自己编译的framework.jar 进行编译APK整体编译系统后找到classes.jar包classes.jar包就是 framework.jar 如下:fclasses.jar 路径out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jarbuild.gradle 添加dependencies {..原创 2020-05-27 17:57:10 · 1264 阅读 · 0 评论 -
Android 共享内存实现跨进程大文件传输(设计思路和Demo实现绕过Binder传输限制)
项目链接AndroidSharedMemoryDemo最近在学习Binder的东西,发现Binder对跨进程传输文件的大小有要求,系统的Binder传输文件大小的时候限制在1M左右,太大的文件会导致内存溢出,导致跨进程传输失败,当然实现大文件传输的时候我们也可以使用广播,当别人发广播给我们的时候我们可以将文件路径通过广播返回给调用者,今天实现的方式使用的是共享内存共享内存的作用可以是大文件传输,也可以用于共享预览帧数据,比如我camera打开预览的时候,此时别的应用在后台也想使用预览帧,我就可以..原创 2020-05-14 09:56:40 · 5386 阅读 · 8 评论 -
Android 应用提供SDK Jar包给第三方使用 (设计思路 以及实现步骤)
最近想总结一下关于应用如何封装自己的SDK给第三方应用使用,提供jar包给第三方使用是现在比较常见的方式,方式有很多种,但是具体的大体思路都是一样的,今天写了一个SDK封装的大体框架Demo,方便后期查查阅:工具基于AndroidStudio 3.6.3版本AndroidSDKDemo大体的设计思路分为三个步骤第一: 服务端作为服务端 我们需要建立自己的aidl 以及实现类 方便第三方调用的时候 将服务端代理的句柄传给SDK第二: SDK作为服务端和客户端的中间代理,可以直接拿到服务代.原创 2020-05-09 17:59:22 · 4229 阅读 · 0 评论 -
MTK Android User版本实现 root 功能 & 可进行APK的删减 和 系统img的替换
最近项目需要,需要实现一个功能需要Android在user版本的状态下可以进行烧制system.img和 可以进行对系统的system/app下面的APK 以及 data/* 下所有的文件进行烧录.修改过程中也遇到了很多的坑能,在此记录一下,方便后期翻阅,也让修改的同学们别踩到我遇到的坑.遇到最大的坑就是 User版本编译出来之后 可以root 也可以remount$ adb rootadbd is already running as root$ adb remountremount su..原创 2020-05-08 17:32:32 · 3662 阅读 · 0 评论 -
Android 源码本地编译脚本 & 编译Android系统
编译系统的方法有很多种,使用Docker 或者是使用jenkins编译,方法千万种.网上有很多的方法,这里就不再说了篇文章主要是针对本地编译.最近学习了脚本,也尝试写了一个Android系统编译的脚本,重点分析一下脚本,算是对之前学习脚本的一个小小的总结.1.一套Android源码2.Ubuntu环境 以及JDK环境正常本地编译步骤1.source build/envsetu...原创 2020-09-24 11:32:36 · 1330 阅读 · 0 评论 -
Android 7.1 增加屏幕边缘滑动事件(手势滑动)两种方式(Back,Home,Menu功能键) 免开启无障碍功能
目前公司在做新项目开发,项目目前是不让有Back,Home,Menu实体按键,这就导致了一个问题,点开其它应用无法返回到桌面,当然些问题对于做开发的我们肯定是难不到的,如果我们开发碰到这问题肯定是adb链接 终端输入对应的key值 命令就搞定了例如$adb shell input keyevent 4或者我们使用投屏神器 scrcpy也能搞定.问题是产品要面向客户展示,总不...原创 2020-04-23 14:11:31 · 3682 阅读 · 0 评论 -
Android 系统启动流分析 & Zygote启动流程分析
本文是给予Android 7.1进行分析 Zygote在Android系统扮演着不可或缺的角色,Android系统的启动首先需要Zygote参与,比如启动SystemService , 还有一个就是孵化应用的进程,比如我们创建一个Activity也是需要Zygote参与. 那么Zygote是怎么启动的? 首先是开机的时候会Linux会先...原创 2020-04-22 21:13:21 · 1798 阅读 · 0 评论 -
Android 7.1添加一个 系统底层服务
受疫情影响,自己工作目前又比较忙,很长时间没有更细博客了,最近看了一下底层服务,尝试着添加了一个地城服务,之前写过一个文章是 Android在java层添加服务进行通讯,对Java层服务感兴趣的同学可以去看一下Android 7.1 添加一个进程间通讯的系统服务(java层)本次添加一个底层服务,目的是为了应用程序可以获取此服务 与 底层服务通讯分为大概几个步骤1.添加文件2...原创 2020-04-19 15:39:59 · 2424 阅读 · 0 评论 -
Android 7.0 & 9.0 修改源码去掉动态权限 & 权限白名单设置
最近公司集成很多第三方APP,有很多的APP并没有进行动态权限申请,导致很多低版本的应用在大于6.0的系统上不能进行运行的问题,为此公司做出了让步,决定去到弹窗,只要是应用在AndroidManifest.xml进行申请的权限都可以使用.预装的第三方app有两种:一种是adb push 到 pri-app下的另一种是直接把代码放在package下编译出来的app。我们是要所有app都不弹出...原创 2019-12-25 20:25:36 · 4522 阅读 · 0 评论 -
Android 7.1 修改源码实现app的静默安装 & 安装完成之后自动打开安装的应用.
真正的静默安装是不需要用户进行任何点击操作的,目前大部分博客所说的静默安装还是需要弹出确认界面,让用户点击授权安装,我认为真正的静默安装应该是不需要用户任何确定操作,就比如现在的好多应用市场安装软件才是真正的静默安装.目前公司也想要实现和应用市场类似的安装方式,我们不难发现 像小米和华为 google都有个人的应用市场,而这写应用市场的app并不互通,比如我将小米应用市场app安装到华为手机上...原创 2019-12-17 11:41:07 · 2035 阅读 · 1 评论 -
Ubuntu 命令行 安装 OpenJDK ,JDk 以及JDK版本切换
Ubuntu 编译源码必须使用 OpenJDK,而且每个Android版本对应的OpenJDK版本各不相同,因此需要配置多个OpenJDK,配置比较耗时和麻烦,使用命令行安装省时又方便.默认JDK 安装:~$ sudo apt-get update~$ sudo apt-get install default-jreOracle JDK : 6, 7, 8, 版本...原创 2019-12-09 20:30:16 · 1302 阅读 · 0 评论 -
Android FFMPEG 编译脚本
首先下载 FFmpeg下载完成之后解压文件,进入文件中 将configure打开将SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'S...原创 2019-12-09 15:09:32 · 661 阅读 · 0 评论 -
自定义UI渐变色圆形进度条 & 水波进度条
最近公司需要两个动画效果,做出来了,记录一下方便后期使用.一个是渐变色闭合圆环(起始色和结尾色颜色无缝闭合).一个是 未开始下载显示建立下载链接,下载过程中更新进度百分比正在下载以及水波纹更新和下载完成之后显示下载完成以及对勾动画.具体效果如下:具体的功能介绍都在代码中,因UI绘制大部分都是在分部执行动画和绘制,不过多陈述,代码里面有注释,可以在文章尾部下载代码进行查看....原创 2019-12-09 11:55:43 · 687 阅读 · 0 评论 -
Android开机自启自动轮播图片或自动轮播视频APP
之前实验室有很多展示的设备,每次上电之后还需要单个点击打开每个展示设备开发好的APP,因为每个设备没有触屏,需要抱着电脑去实验室 挨个连接USB 使用scrcpy 挨个机器点开,每次搞完都是一身汗,作为一个程序员去过一次之后就不想去了,而且还经常有领导视察,来回断电上点太频繁,索性开发一款开机自启动的APP就可以省去好多时间,只需要管理实验室的人每次上电就行了,不需要我每次报个电脑去实验室了,这样...原创 2019-11-22 23:00:49 · 4441 阅读 · 3 评论 -
Android Q存储SD卡-Android29 存储外置SD卡
最近公司相机升级到AndroidQ 遇到无法存储SD卡,原来是Goole抛弃了原有的API(不是过时,是抛弃,导致之前的存储API不能用)查看Google API 进行了代码更换, 在在更换过程中遇到了比较多的坑,将部分关键代码记录下来,方便下次使用。如果不使用外置可插拔SD卡的AndroidQ存储可以使用如下方法暂时不用 AndroidQ的存储方式在AndroidManifest.xml...原创 2019-08-14 18:37:58 · 5320 阅读 · 4 评论 -
Android 7.1 添加一个进程间通讯的系统服务(java层)
最近需要天机一个应用服务,需要多个应用共享同一个服务,脑海中的第一印象就是系统Service,因此研究了一下系统服务,最后方案未被采纳,但是研究的成果还是需要记录一下,方便后期查看.本博客适应于有 Android源码的同学,要是不是搞系统app开发的请绕行添加Java层系统服务分为三个方面1.添加packages应用.2.添加Frameworks层3.添加system权限....原创 2019-11-18 17:54:40 · 561 阅读 · 0 评论 -
开发一款抓取Android系统Log的APP(logcat, kernel, Memory, cpu)
近期项目需要一款抓取系统log的实用工具,具体的内容包括kernel中的log, cpu中的log, memory 中的log, 以及system中的log,在Android4.1之后 认为应用读取系统的log是不安全的,所以要对apk进行系统签名才能读取系统log,如果不能进行系统签名,那么就通过相应的adb命令进行读取.通过功能分析,做的步骤分为如下大概几步:1.工具可以开启自启动进...原创 2019-11-06 16:02:27 · 3951 阅读 · 4 评论 -
Ubuntu下 生成系统签名以及给APK直接签名
最近在做系统升级,需要很多的系统级别的权限,需要在应用的AndroidManifest.xml中package下面声明如下android:sharedUserId="android.uid.system"当我们使用了如上声明,而有没有给系统进行签名的时候可以就汇报如下错误INSTALL_FAILED_SHARED_USER_INCOMPATIBLE~$ adb install -...原创 2019-10-28 17:38:33 · 1777 阅读 · 0 评论 -
系统源码预制APK检测是否可以进行ODEX抽取
odex抽取会导致增加内存,开机时间变短,公司公司的要求是增加内存可以接受.增加开机时间不能接受.公司每次打包系统都会遇到预制公司内部apk和第三方apk进行源码编译进行报错,导致编译失败的问题.如果是预制纯正的第三方apk不能进行odex抽取,那只能进行在对应的Android.mk关闭odex抽取LOCAL_DEX_PREOPT := false要是预制的大部分是自己公司...原创 2019-10-26 11:58:36 · 1676 阅读 · 2 评论 -
生成Image对象
Image对象在 拍照的时候在底层可以获取到,主要是拍照的时候用的ZSL拍照需要两次处理,当第一次拍照获取到Image之后然后设置用ImageWrite 的queueInputImage 方法进行降噪处理和曝光值处理,目前公司的需求是需要 第一次拍照的时候 就将一个Image传递下去,Image不能直接获取,最后想到了一个方法,读取一个byte 然后再填充到 Image里面具体关键代码...原创 2019-08-22 15:36:21 · 1300 阅读 · 0 评论 -
Android开发中使用的Utils 持续更新
public class FileUtils { private static final char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; /** * 判断目录是否存在,不存在则判断是否创建成功 * ...原创 2019-10-14 20:01:06 · 225 阅读 · 0 评论 -
Android 7.1 车机 下载 Android 系统 在线升级,将安装包放到/data/下进行升级
最近按项目要求,需要做一个车机Android在线升级操作,但是cache内存太小了,最后只能寄存希望在 data/文件夹下,但是data/目录在6.0之后禁止recovery读取data文件.最后的解决方案是在/data/文件下创建一个系统app能够操作的文件夹,进行升级操作.1.升级流程Android自带升级流程 API RecoverySystem.java(framewo...原创 2019-10-14 17:48:57 · 25556 阅读 · 2 评论