- 博客(178)
- 资源 (11)
- 收藏
- 关注
转载 ubuntu 20.04 通过 sshfs 共享文件夹到 windows
使用sshfs搭建和samba同样功能的远程文件夹共享。安装 sshfs 后,默认可以通过 ssh 共享服务器上文件夹,不再需要额外设置。
2023-06-01 14:12:35
1030
原创 反编译apk分析问题
1.使用apktool反编译使用apktool反编译apk获取apk中的资源文件2.jadx-gui打开apk使用jadx-gui打开apk,查看代码code3.确定错误提示字符串在错误界面找到可查找的字符串信息4.在apk反编译出来的资源文件中查找5.根据查找的字符串id在代码中查找6.根据显示字符串的位置,分析上下文逻辑...
2022-03-19 21:49:53
368
原创 系统性能分析与优化
1.性能分析理论2.可操作性分析从资源角度分析,有CPU、GPU、内存CPU:比较底层,一般情况先更多的是受限于内存。google也提供有CPU优化方式,深入系统之中,对于普通开发着来讲,相对透明,需要更专业的知识。可以不考虑,有芯片方案方优化即可。分析问题可用top命令查看系统cpu状态GPU:有硬件加速。涉及不多,不做赘述,一般也和内存有很大关系内存:如论是...
2021-10-22 14:48:05
3059
原创 (1)网络-发展历史及核心协议的发展历程
诞生 于冷战期间,起源于美国军方,发展行对成熟后,交予大学及商业机构,开发出民用网络。核心协议发展ARPANET(ARPA网)最初的军事研究使用的网络,网络交换的核心是使用专门的小型计算机执行消息交换,专门的计算机被称为接口信息处理器(IMP)。IMP间使用电话线连接,同时期还有英国、法国等国家发展不同类型的计算机网络。NPC(网络控制协议)随着网络的发展,互联的趋势增强。基于互联的需求,发展出了“数据包交换”的数学理论,使用数据包交换成为计算机之间通过网络通信的基...
2021-09-20 15:59:09
1819
转载 python-执行命令(一)
一、os.system方法在子终端运行系统命令,可以获取命令执行后的返回信息以及执行返回的状态。执行后返回两行结果,第一行是结果, 第二行是执行状态信息,如果命令成功执行,这条语句返回0,否则返回1。import osprint(os.system('date'))由于python3默认采用了UTF-8编码,而WIN8的CMD窗口采用的是GBK编码,导致了编码不同。但是,如果简单的通过encode(‘gbk’)之类的方法,不能解决根本问题。尤其是当我们根本不是使用print命令来输出,而是控
2021-05-12 08:48:05
1841
原创 UML diagrams
一、基础语法1.1 元素关系1.2 port一个类和其他类或自身的part进行交互的交互点。Port点提供对外的interface和需要的interface1.3 part类的一个属性,属于组成类中的一员,当类销毁,part也销毁。在UML2.0,part用虚线表示时,不是组成的一员,只是实例属性。1.4 connector是类的一个特性,属性是特性的实例。用于连接port和part,也可以连接port上的provide interface和require interface。1.5
2021-04-22 17:42:36
556
原创 Wi-Fi联盟概览
Wifi频谱Wifi的项目连接方面应用技术及关系Wi-Fi认证Wifi有很多认证项目,包括基本功能以及性能优化。上面列出来的,Wi-Fi联盟都可以认证。可以在联盟官网查找相关认证的产品并购买。联盟链接:https://www.wi-fi.org/wifi联盟官网...
2021-04-22 16:49:19
399
原创 shell 给自己发送信号并接受处理
在Android上测试#获取自身进程号self_pid=$$echo self_pid: ${self_pid}catch_test=0function self_kill() { echo "------------self_kill" #给自己发送信号,信号值为10,可以使用kill -l在linux系统查询支持的信号 kill -s 10 $self_pid}# 处理信号的函数function onSelfKill(){ echo "-----------onSelfK
2021-04-21 12:37:50
491
原创 (一)Android官网概述
Android开发相关技术网站梳理及重点关注章节梳理。熟悉官网资料与技术,在实际开发中有很大帮助,很多客制化放在,在Android原生技术中已经提供。使用好Android,熟悉光网资料很有必要。
2021-04-21 08:48:09
552
原创 selinux-sepolicy配置
一、概念1. 运行模式Selinux有两种运行模式:Permissive和Enforcing。未明确配置权限,当访问时默认权限是拒绝。为方便开发调试权限配置,单个domain可设置为permissive模式,permissivedomain。 语法格式Selinux依赖于标签来匹配操作和策略,标签决定什么是允许的,套接字、文件和进程都在selinux中有标签。 Selinux决策基于分配给这些对象的标签和定义它们如何交互的策略,label的格式:user:role:type:m...
2021-01-21 14:18:54
5443
3
原创 Android10 wifi AP功能
wifi AP功能1.概述2.wifi Ap功能在应用层开发3.配置信息系统时序图4.startTethering时序图1.概述随着网络的广泛应用,广大用户对网络使用的便利性有了更高的要求。为了方便网络的使用,在一些有固定网络信号的设备上,有共享网络的需求。因此,Android实现了三种方式的网络共享(tether):usb 通过usb连接,可以把有网络的设备网络信息通过usb连接线传输给连接的设备蓝牙 网络信息通过wifi天线发送,实现类似wifi的无线网络wifi本篇文章重点说明wifi
2020-11-25 18:30:29
3714
5
原创 Android系统稳定性及性能
单元测试:https://developer.android.google.cn/training/testing性能优化:https://developer.android.google.cn/topic/performance
2020-09-15 09:38:38
1312
翻译 正确理解内存回收log信息
当系统发生内存回收,会有logcat信息。那么如何正确理解内存回收信息呢?有两种类型的回收信息log:虚拟机时代的log和ART时代的log虚拟机时代的log每次产生GC时间,log格式如下:D/dalvikvm(PID): GC_Reason Amount_freed, Heap_stats, External_memory_stats, Pause_time示例:D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9
2020-09-13 20:03:28
1409
原创 app:app启动总结(3)
app启动分为三大部分:launcher至zygote进程接收到启动app消息zygote进程创建子进程,子进程调用ActivityThread的main函数app进程从main开始至启动完成launcher至zygote进程接收到启动app消息launcher启动app和启动一个activity调用接口一样:startActivity,在执行过程中,AMS根据activity栈状态,决定是否通过zygote进程创建一个新的app进程zygote创建子进程和调用app mainzygote
2020-09-03 17:42:04
167
原创 app:activity生命周期-onCreate->onResume(2)
可参考博文Android Activity生命周期是如何实现的:https://www.jianshu.com/p/27d06a6b7007zygote进程创建app进程后,调用app的入口函数main(AactvityThread的main)开始,至调用完成app的activity的onResume。时序图分为两部分:app main的流程app运行过程的主要流程app main流程体现app的运行框架:体现开始和结束app运行过程的主要流程体现app进程和system_serve
2020-09-03 16:56:30
441
原创 app:从launcher启动app(1)
参考博文Android Activity生命周期是如何实现的: https://www.jianshu.com/p/27d06a6b7007从launcher桌面图标启动app,进入app进程。
2020-09-03 16:42:03
315
原创 AMS: native crash处理
system_server启动过程会建立一个socket,其他进程出现crash,debuger进程会把收集到的信息发送给AMS中的crash处理线程。 // file: private void startOtherServices() { final Context context = mSystemContext; VibratorService vibrator = null; IStorageManager storageManager
2020-09-03 14:26:09
327
原创 AMS: 启动launcher(3)
参考博文app 启动流程:https://www.jianshu.com/p/8a1a29073c44主要跟进了主流程,旁支末节可以根据主流程按需分析。
2020-09-02 18:06:26
369
原创 AMS:启动(2)
第一部分: 创建AMS对象及启动服务// file: frameworks\base\services\java\com\android\server\SystemServer.javaprivate void startBootstrapServices() { ... // Activity manager runs the show. traceBeginAndSlog("StartActivityManager"); mActivityMan
2020-09-02 17:50:43
241
原创 system_server:启动流程
涉及源码android-8.0.0_r1\frameworks\base\services\java\com\android\server\SystemServer.javaandroid-8.0.0_r1\frameworks\base\core\java\android\app\ActivityThread.javaandroid-8.0.0_r1\frameworks\base\core\java\android\app\ContextImpl.javaandroid-8.0.0_r1\fra
2020-09-02 15:46:38
760
原创 app_process: 总结(6)
概述app_process是由frameworks\base\cmds\app_process编译而来,是启动java世界的入口程序。在开机过程中,经由app_process启动的进程有:zygote进程system_server进程zygote进程作用启动system_server进程,也即system_process裂变app进程,为每个app其他socket事务处理zygote三个部分zygote运行分为三个主要部分:1、app_process创建虚拟机,设置虚拟机属性
2020-09-02 11:54:30
1572
原创 app_process: zygote处理socket消息请求(5)
涉及源码android-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\ZygoteConnection.javaandroid-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\Zygote.javaandroid-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\ZygoteServer.jav
2020-09-01 16:18:10
452
原创 app_process: zygote启动到system_server(4)
涉及源码android-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\ZygoteInit.javaandroid-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\ZygoteConnection.javaandroid-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\Zygote.java
2020-09-01 15:15:31
246
原创 app_process: zygote启动(3)
涉及源码android-8.0.0_r1\system\core\rootdir\init.rcandroid-8.0.0_r1\system\core\rootdir\init.*.rcandroid-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\Zygote.javaandroid-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\ZygoteInit.ja
2020-09-01 14:16:03
500
9
原创 app_process: 运行一般java可运行程序(2)
概述app_process作为工具,运行java程序。执行流程主要文件android-8.0.0_r1\frameworks\base\core\java\com\android\internal\os\RuntimeInit.java这个流程相对较少,不做赘述,时序图基本完全展示流程,并不是主流程跟踪。...
2020-09-01 11:09:19
661
原创 app_process: 启动java进程(1)
涉及源码Android\android-8.0.0_r1\frameworks\base\cmds\app_processAndroid\android- 8.0.0_r1\frameworks\base\core\jni\AndroidRuntime.cpp概述app_process是Android系统中一个重要的编译出来的可执行文件。该执行文件在开机过程中负责启动Android核心的进程zygote和system_server。app_process也可以用来运行可执行的java程序。主要流
2020-09-01 10:31:36
2073
转载 UML序列图总结(Loop、Opt、Par和Alt)
序列图主要用于展示对象之间交互的顺序。序列图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。序列图中涉及的元素:生命线:生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。2. 同步消息发送人在它继续之前,将等待同
2020-08-27 15:57:32
21105
1
原创 Android6.0手动制作U盘升级包
解压命令:unzip update.zip或者使用windows下的压缩工具打开压缩文件,删除不需要的文件1.修改system文件删除system目录下其它文件只保留build.prop文件,然后需要升级的文件对应进行更新。如果是更新apk也先要进行签名。2.修改updater-script脚本文件。\META-INF\com\google\android\updater-script修改模板如下,getprop(“ro.product.device”) == “rk3288” || abor
2020-07-22 16:36:36
1076
翻译 使用Lint检查提高代码质量
使用Lint检查提高代码质量1、概述2、代码中使用标记2.1 概述2.2 在工程中使用标记2.3 一些标记的使用2.3.1 Nullness标记2.3.2 资源标记2.3.3 线程标记2.3.4 值约束标记2.3.5 权限标记2.3.6 返回值标记2.3.7 CallSuper标记2.3.8 自定义标记类型2.3.9 Keep标记2.3.10 代码可见性标记1、概述开发app,除了通过单元测试确保app满足功能需求,通过lint检查确保代码没有框架上的问题也很重要。使用lint工具,可以找到框架上设计较
2020-07-20 18:32:21
3370
翻译 AndroidStudio-apk瘦身
AndroidStudio-压缩apk1、概述2、打开压缩、混淆、优化功能3、R8的配置文件3.1 概述3.2 添加额外配置文件4、压缩代码4.1 概述4.2 自定义keep规则5、精化本地库5.1 概述5.2 支持本地代码crash分析6、压缩资源6.1 概述6.2 自定义需要保留的资源6.3 使能严格的相关检查6.4 删除无用的供选择的资源6.5 合并重复的资源7、混淆代码7.1 概述7.2 解析混淆代码后的栈信息8、代码优化9、分析解决使用R8的问题1、概述注: 一下文中app压缩功能,均指And
2020-07-16 18:04:31
2314
翻译 AndroidStudio-解决单个dex 64K接口限制
解决单个dex 64K接口限制1、概述2、关于64K接口限制3、避免64K接口的限制4、多dex的一些配置5、编译时优化多dex6、测试多dex app1、概述当app和依赖的库,所有的接口数超过65536,编译时会遇到错误,提示接口超过了限制,log如trouble writing output:Too many field references: 131000; max is 65536.You may try using --multi-dex option.老版本编译系统会报一个不同形
2020-07-15 17:57:38
405
翻译 AndriodStudio实用小技巧
AndroidStudio杂记1、优化编译速度2、分析编译过程1、优化编译速度实时更新编译工具:SDK tools、gradle plugin到最新创建不同的编译变体,代码同步使用单个变体同步单个变体同步代码方法:File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle on a Mac) ,勾选“Only sync the act
2020-07-14 20:01:08
314
翻译 AndroidStudio编译配置
AndroidStudio编译配置1、概述2、命令行编译2.1 查看可编译目标2.2 编译debug版本apk3、配置自动签名3.1 配置签名3.2 编译release版本4、自定义编译变体4.1 Build types4.2 Product flavors4.21 概述4.2.2 多个风味产品和风味盒结合**4.3 过滤变体4.4 创建资源集4.5 修改默认资源集4.6 编译资源集4.7 声明依赖5、增加编译依赖6、配置签名设置1、概述AndroidStudio的编译系统编译app的资源文件和代码,打
2020-07-14 11:44:54
3283
Android systrace运行需要的资源
2020-12-17
射频卡文档及fm17550设备开发代码
2019-11-22
android apk开发单元测试
2015-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人