- 博客(32)
- 资源 (1)
- 收藏
- 关注

原创 安卓记事本系统设计和模块实现
安卓记事本系统设计和模块实现友情提示记事本是我学习安卓后编写的第一个软件,也是我的毕业设计。它存在着许多不完善的地方,如果你有想法可以进一步去完善它。我当时看的是郭霖《第一行代码》第2版入门的,现在已经出到第3版了,编程语言由Java改成了Kotlin,如果你有时间,也可以把我的项目从Java改成Kotlin编写。目前这两本书都可以在微信读书上面找到。软件演示视频代码地址用到的关键技术语音识别技术和语音合成技术多功能记事本APP采用讯飞的语音识别引擎,相当于给软件加上了“耳朵”,让记事本能“
2021-06-20 01:06:56
4983
1
原创 安卓屏保调试
先看一下在设置点击屏保预览后的调用链(Android 14)fill:#333;点击按钮( performClick())触发 onClick() (lambda 表达式)调用 preview()DreamController的打印信息DreamActivity是一个不需要注册的Activity,运行在各个屏保进程。屏保应用实现DreamService即可。屏保状态时,后台起应用会进入 onStop 状态(该例子 onStop 里面调用了 finish)
2025-03-16 17:44:41
812
原创 安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露
今天用着安卓 14 的板子的时候突然系统卡死。查看日志发现launcher都被干掉了看发现DMA-BUF占了3G多(4G设备),应用free ram基本没了。刚开始以为是scrcpy的问题。后来经调查发现是android studio的屏幕镜像问题。
2025-03-04 21:49:46
1042
原创 安卓组件化之动态依赖功能模块
对于拥有不同渠道的 APP 来说,可能需要集成不同的功能模块,也可能同一个功能有不同实现。最简单的方法可能是通过接口、工厂模式、 flavorImplement 和渠道自定义代码的方法来实现了。但是,如果不想建那么多渠道代码目录,需要通过一套代码来初始化模块,那么上述方法就不行了。那么如何在不依赖模块的前提下动态调用其功能呢?有几种方法:1、反射、接口隔离和工厂模式2、动态功能模块(Dynamic Feature Module),国内不适用。3、利用 Java 的机制,通过配置文件声明接口实现类。
2025-03-03 20:49:57
319
原创 DLNA库Platinum新增安卓64位so编译方法
下载代码(该仓库我已经修改相关编译错误和支持安卓64位so编译)obj和libs目录区别:一个用于追溯和调试,一个用于正式版发布。建议安装conda环境来进行编译。
2025-01-18 19:17:01
974
原创 安卓Activity执行finish后onNewIntent也执行了
测试反应投屏时下一集可能播放不成功。首先看一下日志:onCast看到日志时很迷惑,为什么 finish 了,安卓还会执行onNewIntent,不应该是新建一个 activity 吗?先来看一下场景描述:视频播完后会发送一个 finish 信息,如果 3s 内没有下一个视频进来就会执行 finish,有视频进来就会在 onNewIntent 中 remove 掉这条信息。
2025-01-04 18:43:14
662
原创 安卓多渠道apk配置不同签名
多渠道时,使用配置的优先级从高到低分别是buildTypes、productFlavor、defaultConfig,如果按上面配置的话,根本修改不了签名。,否则编译debug版本时签名会不生效,因为gradle会插入默认签名,替换掉渠道的签名。按上面配置完后,渠道可以按照自己需求替换签名了。特别注意debug类型那里要置。
2024-12-24 21:52:19
368
原创 安卓15预置第三方apk时签名报错问题解决
有同事反馈集成apk时安装失败查看编译后的apk签名信息但是用命令查看我的apk是正常的那么应该是编译过程做了某些变动。
2024-12-24 21:33:46
1817
1
原创 咪咕视频DLNA投屏跳集问题分析
QA在测试公司投屏应用时,发现咪咕视频DLNA投剧集时有时候会跳过一集直接播下一集的问题。尝试自行分析解决不了后,我决定分析一下竞品应用:当贝投屏,结果发现它是正常的。由于当贝投屏是个黑盒子,所以决定抓包看一下。
2024-12-08 21:14:47
508
原创 安卓源码环境:Android.mk如何编译aar包?
make out/target/common/obj/JAVA_LIBRARIES/_intermediates/javalib.aar
2024-11-10 11:34:07
436
原创 哔哩哔哩直播链接报403解决办法
最近投屏接到客诉说苹果哔哩哔哩客户端投直播会显示播放失败。我测试发现安卓端哔哩哔哩是正常的,某投屏软件也能正常播放,我对此感到困惑。通过tcpdump分析,发现它的ijk播放器在访问链接时改变了User Agent。经测试发现含有Android或者stagefright都会导致访问403,其他都正常。而安卓默认的User Agent就包含了Android和stagefright。
2024-09-22 17:10:08
1981
原创 Android java.lang.IncompatibleClassChangeError
最近为了解决一个问题,需要在升级X应用时对其做startInstrumentation。功能上线后,数据监控平台发现存在IncompatibleClassChangeError,主要集中在安卓5.1,6.0,少量在安卓8.0。究竟是怎么回事呢?一起来分析一下。
2024-06-30 21:44:29
590
原创 ubuntu24.04启动黑屏
在vmware安装完ubuntu24.04后,登录进去黑屏。首先关闭虚拟机,然后在虚拟机设置-显示器-3D图形那里关闭加速3D图形。这时候就可以重新登录进去了,但是没有了图形加速,画面就没有那么流畅了。怎么办?
2024-06-15 12:26:25
8290
4
原创 安卓不同gradle版本怎么发布sdk到Maven
一直以来,公司的很多sdk上传时都没有附带源码,对于开发者来说是比较不方便的,所以我就想增加一下。因为不同的项目使用的gradle版本不一样,发布sdk的方式也不一样,特此记录一下,希望能帮到大家。
2024-06-08 20:39:58
1088
1
原创 java.lang.ExceptionInInitializerError原因及解决办法
通常意味着在静态初始化块或静态变量初始化过程中发生了异常。:如果在静态代码块中有任何异常抛出,都会导致此错误。:如果静态变量在初始化时抛出了异常,也会导致此错误。(编译后实际上也是在静态代码块里面)
2024-06-02 17:45:53
1548
1
原创 探究安卓应用类找不到的原因(NoClassDefFoundError和ClassNotFoundException)
探究安卓应用类找不到的原因(NoClassDefFoundError和ClassNotFoundException)最近在公司协助同事解决了几个类找不到的问题,都比较典型,特此记录一下。
2024-05-26 19:16:10
935
原创 在WSL2编译安卓13并在WSL2和windows运行
刚开始的时候,我是在master分支编译安卓的,结果运行emulator起不来,后来切换到android-13.0.0_r35就OK了。
2023-05-28 16:22:33
1491
4
原创 安卓系统应用的卸载和恢复(非data分区)
网上已经有很多预装应用卸载的方法了,但是他们基本都是设法在第一次开机的时候安装到data分区。本文需要达到的目标是预装在system分区的应用能够被卸载,且能恢复安装。
2023-05-03 20:37:59
3903
1
原创 安卓帧率FPS计算原理
- desiredPresentTime:queueBuffer 的时间戳- actualPresentTime:present fence signal 的时间戳- frameReadyTime:acquire fence signal 的时间戳
2022-06-03 22:47:46
3512
原创 安卓TV或者盒子重启后应用使用时间丢失的问题
安卓TV或者盒子重启后应用使用时间丢失的问题Loss of app usage time after android TV or box reboots在搜索引擎我只找到了一篇与这个问题相关的链接,大家可以看一下,他的解决办法是APP自己保存使用数据。android - AndroidTV: UsageStatsManager not returning details for apps results after Reboot - Stack OverflowAs we had experien
2022-04-10 12:54:37
3701
原创 all-makefiles-under vs all-subdir-makefiles vs first-makefiles-under
all-makefiles-under vs all-subdir-makefiles vs first-makefiles-under
2022-01-15 12:11:58
2941
原创 安卓SystemProperties.set()方法权限问题
安卓SystemProperties.set()方法权限问题本文首发于:安卓SystemProperties.set()方法权限问题对于系统中的每个进程来说:读取属性值对任何进程都是没有限制的,直接由本进程从共享区域中读取。修改属性值则必须通过Init进程完成,同时Init进程还需要检查发起请求的进程是否具有相应的权限。安卓5.0之前安卓4.4 system/core/init/property_service.c源代码:........../* White list of permiss
2021-03-27 19:14:04
2551
原创 Linux网络函数send()出错导致进程退出
Linux网络函数send()出错导致进程退出在Linux系统编写socket网络通信程序的时候,如果程序执行send函数,遇到了一个关闭的socket,系统就会抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出当前进程,重新定义这个信号的处理方式可以避免这个情况。//定义一个空函数void signal_send(){ } //注册信号处理方式signal(SIGPIPE, signal_send);...
2021-03-12 23:09:45
532
原创 安卓系统应用比data分区应用版本号新怎么办
安卓系统应用比data分区应用版本号新怎么办安卓9代码:PackageManagerService/** * Adds a new package to the internal data structures during platform initialization. * <p>After adding, the package is known to the system and available for querying. * <p&g.
2021-03-12 23:03:51
180
原创 安卓Android的Textview显示问题:一行没显示满就换行
通过浏览谷歌开发者网站的TextView介绍找到了android:breakStrategy这个属性,具体如图所示:用来控制段落布局。支持的api级别为23及以上。而对于TextView组件默认值是high_quality,对于EditText组件默认值是simple。所以,会出现在这两个组件显示不一致的问题。我们可以在xml文件中给TextView设置成simple。还可以配合android:hyphenationFrequency一起使用,用来设置自动断字的频率。其他还可以参考.
2020-05-14 01:05:44
5752
转载 tcp/ip的一些名词概念
计算机通讯协议:计算机之间,事先达成一个详细的约定,并遵循这一约定进行处理方可建立通信。图来源于《图解TCP IP(第5版)》((日)竹下隆史)分组交换协议:分组交换是指将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法。图来源于《图解TCP IP(第5版)》((日)竹下隆史)...
2019-03-05 14:53:15
516
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人