- 博客(39)
- 资源 (10)
- 收藏
- 关注
原创 【android Framework 探究】android 13 aosp 全记录 - 烧录
查看 Device States为“lock”再进行如下解锁操作,如果已经是“unlock”,说明已经解锁解锁,直接开始烧录即可。使用手机音量键切换,Unlock the bootloader,按电源键确认,解锁后,Device States为“unlock”export ANDROID_PRODUCT_OUT ,请设置绝对路径,发现我出错时用的。书接上文,编译完后,在二手平台挑挑拣拣最终下手piexl 5,这就开始迫不及待的烧录。~/来代替/home/{usr name}如果之前已经解锁可以跳过这步。
2023-01-01 10:16:45
1706
1
原创 【android Framework 探究】android 13 aosp 全记录 - 编译
自从关注Framework这一块儿,就有了自己编译aosp刷机的想法,模拟器当然是可以的,但是体验感还不能和真机想比,于是买一个二手piexl的想法就有了,根据预算选定piexl 5,支持最新的android 13,二手平台挑挑拣拣时间拉的有点长,不如中间就开始先编译好。
2022-11-20 19:56:22
6575
7
原创 adb shell 命令之service调试
在android上有丰富的shell命令用来调试,非常方便,本文通过一个用法来观察下service命令的用法
2022-11-03 16:15:40
2382
原创 【性能优化】Simpleperf的认识和使用
当前的主要目的是学会Simpleperf的抓取和采集方法,并能识别出一些比较明显的函数耗时问题,其实官网的描述是最全面的,本文也在各个地方插入了超链接方便跳转,如果有想对一些细节或一些其他用法的需要,可以查看官网。
2022-09-16 17:06:52
5198
2
原创 【android Framework 探究】浅谈AIDL和Binder
先聊聊binder,本文不是讲binder,android中的binder框架说实话,要从内核-》驱动-》native-》JNI -》Framework-》app层,牵扯的知识点从内核调度,虚拟内存,内存映射,数据结构,线程管理和设计模式,覆盖面太大了,要真正吃透binder需要大量的时间投入,甚至可能走很多弯路,我的建议对应用开发者,需要熟练掌握AIDL编写方式,理解Binder作者在android框架进程通讯的设计原理,理解常接触的Stub,Proxy这些角色的概念和Parcel序列化传输。当然.
2022-04-23 18:46:32
812
原创 Android Studio Fox 新建项目统一报错:“Cause: javax.xml.bind.UnmarshalException”
Android Studio Fox 新建项目统一报错:“Cause: javax.xml.bind.UnmarshalException”
2022-01-22 22:13:16
2360
原创 看看人家 - Glide的LruCache
public class LruCache<T, Y> { /** * 缓存中是否包含此KEY */ public synchronized boolean contains(T key); /** * 从缓存中获取目标数据 */ public synchronized Y get(T key); /** * 把item放入缓存 */ public synchronized Y put(T key, Y item); /** * 从缓存中移除 */ p
2021-10-09 18:41:40
514
原创 Java 加载RSA私钥pkcs8和pkcs1的问题
问题描述:在使用Java原生API进行RSA私钥加载的时候,报错如下:java.security.InvalidKeyException: IOException : algid parse error, not a sequence原因分析:通常JAVA中使用的RSA私钥格式必须为PKCS8格式,而我使用的私钥是PKCS1格式。解决方案一,格式转换:1,使用openssl进行格式转换,嫌麻烦我没有采用。2,使用在线工具转换(推荐),点击进入解决方案二,使用BouncyCastle1,
2021-07-21 17:18:24
3815
3
原创 Android 修改Hosts
前言:项目中有需要对system/etc/hosts进行修改。环境值系统类型userdebug系统版本9.0问题:system/etc/hosts仅root用户可以修改步骤:1,以root用户进入shelladb rootadbd is already running as root2,重新挂载设备adb remountremount of the / superblock failed: Permission denied2,汗,提示没
2021-04-29 14:50:46
1370
原创 BouncyCastle: Android: Unsupported class file major version 59
BouncyCastle: Android: Unsupported class file major version 59. Failed to transform bcprov-jdk15on-1.67.jar (org.bouncycastle:bcprov-jdk15on:1.67)https://stackoverflow.com/questions/65182975/bouncycastle-android-unsupported-class-file-major-version-59-fai
2021-03-27 21:07:32
2450
原创 android studio Kotlin 单元测试 找不到自定义的类 Class not found
Android studio Kotlin 单元测试, 找不到自定义的类问题描述:在项目里面的一个模块,开始创建的是android-library,没有考虑使用kotiln,后面开始使用kotlin后,单元测试里面import自己的kotlin类,执行会报错“class not found”原因分析:查看此模块的gradle发现问题,没有开启kotlin插件,同时要增加kotlin的测试依赖库引用。解决方案:开启kotlin插件,同时要增加kotlin的测试依赖库引用plugins {
2021-03-15 16:30:24
1524
原创 Android OOM问题及优化总结
OOM和内存优化总结什么是OOM?OOM 即 (java.lang.OutOfMemoryError), JVM没有足够内存给对象分配空间,超过jvm的堆空间最大值(-Xmx参数),此异常就会被触发,导致应用强制被杀死。
2021-02-01 09:19:23
3003
2
原创 ubuntu lftp 执行ls 报 “在 0 [FEAT 协商...]”
lftp 出现问题描述:ubuntu 18.04lftp kjzf@xx.xx.xx.xxls`ls' 在 0 [FEAT 协商...] 解决方案:sudo gedit ~/.config/lftp/rcset use-feat yes这里是引用https://blog.zengrong.net/post/lftp-feat-negotiation/
2021-01-26 18:42:27
3722
原创 Andriod SQLite3 数据库损坏,优化,修复,备份方案研究
Andriod SQLite3 数据库损坏,优化,修复,备份方案研究1、数据库损坏原因我们首先来看 SQLite 损坏的原因,SQLite官网《How To Corrupt An SQLite Database File》上列出以下几点:文件错写文件锁 bug文件 sync 失败设备损坏内存覆盖操作系统 bugSQLite bug但是我们通过收集到的大量案例和日志,分析出实际上移动端数据库损坏的真正原因其实就3个:空间不足设备断电文件 sync 失败我们需要针对这些原因
2021-01-19 19:20:17
3446
原创 java Annotation注解(二)乞丐版ButterKnife
业精于勤荒于嬉,写文章练习表达能力,写代码练习基本工。学习目标:通过自定义注解处理器,实现最简单的ButterKnife,实现代码注入功能。
2020-12-29 09:44:46
191
1
原创 java.lang.UnsatisfiedLinkError,couldn’t find “libc++_shared.so”问题解决
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.demo.hellowcdb-1/base.apk”],nativeLibraryDirectories=[/data/app/com.demo.hellowcdb-1/lib/arm64, /data/app/com.demo.hellowcdb-1/base.apk!/lib/arm64-v8a, /sys.
2020-12-23 10:05:46
6048
原创 Ubuntu MemoryAnalyzer 启动报错:The platform metadata area could not be written
问题描述:Ubuntu 下载MAT独立安装包,解压后启动报错。Ubuntu 18.04MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip分析:![!SESSION 2020-12-10 18:07:29.705 -----------------------------------------------eclipse.buildId=unknownjava.version=1.8.0_275java.vendor=Private
2020-12-22 10:49:50
1153
原创 Android Hook 实战--替换第三方sdk的类
场景:项目中调用了第三方sdk中的方法,此方法返回值为对象,对象为空表示失败,非空表示成功。问题描述:查看jar包的class,对应失败的分支均有log,但log开关设置为false,无法跟踪分析详细日志。设备定制的os为user版本,且关闭了断点调试的功能。和sdk提供商沟通后,暂时没有答复什么时候提供新的sdk(希望对方打开日志开关)沟通等待修改回复迟迟没有下文,又得配合给出解决方法,想到了几个方案进行排查原因分析:提示:这里填写问题的分析:例如:Handler 发送消息有两种方式
2020-12-15 13:36:49
3067
原创 java ForkJoin的用例
练习目标:温习java中“分而治之”思想,编写代码练习ForkJoin的用法练习内容: 分别使用ForkJoin和单线程递归方法,统计同一父目录下,所有文件的个数(不统计目录)的总和,打印耗时。上代码:递归方法 public static class MyRunnable implements Runnable{ File file; int count = 0; public int getCount() {
2020-12-15 13:31:03
117
原创 java CompletionService的理解和练习
练习目标:掌握 Java 8 新增的CompletionService的优点,用法和使用场景。练习题目: 执行1000个任务,顺序获取结果,为了体现CompletionService的优点,这里同时用ExecutorService作为对比。代码 – 子任务 //总共1000个任务 private static final int MAX_NUM = 1000; //使用Callable,适用于需要返回值的场景。 public static class MyCallable i
2020-12-08 10:11:53
160
原创 jvm内存溢出练习记录
理解多少写多少,多删少补当勤奋文章目录练习目标:内存溢出的类别:堆溢出栈溢出1栈溢出2方法区溢出直接内存溢出练习目标:对jvm的几种常见的内存溢出进行回顾练习内存溢出的类别:堆溢出 - java.lang.OutOfMemoryError: Java heap space栈溢出 - java.lang.StackOverflowError栈溢出 - java.lang.OutOfMemoryError方法区(元数据空间)溢出 - java.lang.OutOfMemoryError:.
2020-11-20 10:53:21
229
原创 Android AudioTrack 爆音问题记录
项目场景:通过AudioTrack播放wav音效文件问题描述:声音开头有爆音,“嗒”一声非常明显: 原因分析:经过修改Buffer大小,采样率都不起作用,最后沉下心来查找资料,最终从wav文件格式入手,找到原因:wav文件格式包含文件头和文件体。代码中从文件读取到buffer播放,没有跳过文件头。有人说了,无图不真相,抄了一个图做纪念,方便查看。解决方案:AudioTrack的write方法跳过头部,仅播放data域。//先确定声道,采样率,播放类型,位数,根据实际情况进
2020-11-13 10:08:16
2586
2
原创 AudioTrack播放wav文件的一次问题记录
项目场景:项目场景:使用AudioTrack代替SoundPool播放wav文件,问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -1, b
2020-11-10 15:37:29
370
原创 Android SoundPool 无声音问题记录
项目场景:APP在交易成功,失败等条件下,需要有声音提示(短促音效,共4个),客户制作并提供了wav格式文件,自然的想到了用SoundPool预加载,之后需要的时候进行播放。问题描述:SoundPool在一段时间频繁的切换播放后,没有声音: //初始化 public boolean init(Context context){ mSoundMap = new HashMap<>(); mAssetManager = context.getA
2020-11-10 14:34:40
1885
2
原创 java中的volatile关键字日常用法实践
文章目录前言一、volatile关键字的语义?二、举例实践1.可见性2.DCL单例模式中禁止指令重排序总结前言本篇文章主要记录在读完《深入理解Java虚拟机》中对volatile关键字的用法后,进行个人消化后的总结和代码实践。一、volatile关键字的语义?可见性,子线程修改变量,值立即回写到主内存,其他线程不从缓存而是直接从主内存读取新值。禁止指令优化重排序。二、举例实践1.可见性代码如下(示例):public class Demo { private static
2020-11-06 15:11:18
163
2
原创 记录一次 Integer 自动装箱的翻车经历
怀疑人生现场回顾:1,在JNI开发过程中,遇到需要使用Integer进行参数传入传出的场景,比如结果为3。2,在步骤1的jni层通过Integer传出的结果在一个八竿子打不着的地方使用Gson进行json字符串转换成实体对象的时候,所有int整形的变量都被赋值为3,即使原始字符串的值为0。java接口//不适用返回值传递的原因是,返回值被设计用来指示接口执行成功==0,其他为错误码。当成功时,再通过integer传递结果。public native int func( Integer intege
2020-11-04 19:06:14
169
原创 Android系统设置之勿扰模式
项目场景:智能车载机问题描述:车载机使用4G流量,但客户接入的是带通话功能的sim卡,客户测试过程中遇到有人拨号,来电音量不是静音情况下,居然通了。客户提出禁止来电功能。原因分析:尽管系统进行了裁剪,去掉了拨号和来电APP,但是来电等功能还是可以使用的,最后无人接通,系统通知栏出现了来电未接图标。解决方案:方案1,求助系统开发人员在系统层修改代码,禁止来电及拨号功能,当然是行的通的,但是被告知不能及时修改,那么进行OTA升级可能要过段时间,可是应用马上到了发布日,就先自己想想办法了
2020-09-28 18:14:03
5944
5
原创 一次内存泄漏的问题记录
项目场景:同事在开发一款人脸识别app时,在多次执行,打开--》人脸识别--》关闭--》打开循环测试过程中会耗尽内存。问题描述:测试同学通过用monkey脚本测试,遇到OOM内存溢出的问题。日志片段1:可以看到系统一直在频繁gc,已经超过设定的512mb上限。09-22 13:53:23.045 3052 3806 I zygote : Waiting for a blocking GC Alloc09-22 13:53:23.502 3052 5107 I zy...
2020-09-23 16:47:50
15193
西咸新区控制性详细规划.pdf
2020-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人