- 博客(132)
- 资源 (1)
- 收藏
- 关注
原创 Android 因为混淆文件配置,打release包提示running R8问题处理
处理思路:根据报错提示,采用-dontwarn 去除警告,后面就可以打包成功了。
2024-12-09 19:40:38 224
原创 Android AIDL中,in、out、inout修饰符的作用
由于inout参数允许客户端和服务端双向修改,这会增加系统的开销。因此,在设计AIDL接口时,应根据实际需求合理选择使用in、out或inout修饰符,以优化性能和资源利用。3、inout:表示数据可以在服务端与客户端之间双向流通。客户端可以传递参数给服务端,服务端也可以修改这些参数并返回给客户端。2、out:表示数据只能由服务端流向客户端。服务端可以将数据传递给客户端,但客户端不能修改这些参数。1、in:表示数据只能由客户端流向服务端。客户端传递参数给服务端,但服务端不能修改这些参数。
2024-12-07 11:35:48 188
原创 Android 文件分段上传和下载方案
Android 中的大文件下载需要使用分段下载,下载通常是在线程中进行的,假如有5段,那同时5个线程去执行下载,请求http返回文件流后,需要将多个文件流同时写进同一个文件,这里用到。分段上传的话,只需要根据每段文件阀值,例如,50M为一段,将文件按照设置的阀值,分段上传即可。忽略网络请求和状态码,每个人接口定义的的请求参数和返回code不一样。
2024-11-21 10:13:35 321
原创 Android 使用Retrofit 以纯二进制文件流上传文件
1. 上传文件API 端点:/service/upload● 方法:PUT● 请求参数:○ filename:文件名(必选)○ 请求头:○ Authorization:用于身份验证的 token(必选)○ X-Request-ID:请求的唯一标识符(必选)○ Upload-Offset:当前上传块的偏移量(必选)■ 单位:byte○ Upload-Type:文件上传方式(必选)■ 1 上传到相册(/storage/emulated/0/Pictures/)
2024-11-18 20:37:11 341
原创 Android WebSocket ping pong机制
博主项目中用的是第二种,Android 项目中作为客户端,服务端会发送ping,要求收到ping后发送pong给服务端。其实框架内部是自动处理了的。如果收到ping后需要自定义发送发送pong消息回应怎么办?1、使用的库版本:org.java-websocket:Java-WebSocket:1.5.2。2、WebSocket 中,有时候需要保持连接,会采用发送心跳或者发送ping回应pong。onWebsocketPing函数即可,里面编辑发送自己想要发送的消息。
2024-11-09 14:20:10 478
原创 Android AGP升级到8.x导致的混淆问题(Class cannot be cast to java.lang.reflect.ParameterizedType)
最近在gradle8.0(gradle-8.0-bin.zip) 的项目中,添加混淆,网络框架使用的是retrofit,当发送http请求时,接口包400,提示:类型转换异常(Class cannot be cast to java.lang.reflect.ParameterizedType),刚开始还以为是解析定义的泛型和注解被混淆导致,配置了后还是一样报错,最后发现是gradle8.x引发Retrofit的混淆问题导致的。在混淆规则proguard-rules.pro里面添加下面语句,问题得到处理。
2024-11-08 14:00:11 173
原创 Android 开启混淆R8编译问题处理
Android R8是一个代码混淆和压缩工具,可以将应用程序的大小和安全性优化。它引入了一些新功能,如成员内省、混淆指针、类内省等。但R8使用起来一直不友好,因为自从使用R8之后编译问题不断。把上面这些提示信息加入到模块的proguard-rules.pro混淆配置文件中即可解决。
2024-11-08 10:46:52 541
原创 Android 延时操作的常用方法
在Android开发中我们可能会有延时执行某个操作的需求,例如我们启动应用的时候,一开始呈现的是引导页面,3秒后进入主界面,这就是一个延时操作。还有一种是执行某些接口任务时,需要有超时机制。下面介绍常用的几种方法。@Override// 休眠1秒/*** 延时执行的代码*/}).start();
2024-11-06 17:55:13 447
原创 Android Studio插件版本与Gradle 版本对应关系
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。虽然 Android 插件通常会与 Android Studio 的更新步调保持一致,但插件(以及 Gradle 系统的其余部分)可独立于 Android Studio 运行并单独更新。Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。
2024-10-29 17:21:31 1430
原创 Android 常用官网网站连接汇总
3、Android Studio国内官方地址 https://developer.android.google.cn/studio/2、Kotlin插件最新版本: https://github.com/JetBrains/kotlin/releases。1、Gradle插件最新版本: https://developer.android.com/studio。
2024-10-29 16:56:50 149
原创 Android AAR嵌套AAR打包出现问题解决方案
打包一般会打包成 aar 的形式。例如 App 引用了两个 aar(1.aar 和 2.aar),1.aar 和 2.aar 都依赖了第三方的 3.aar,如果1.aar 和 2.aar 都把 3.aar 打包进去的话,App 再引用 1.aar 和 2.aar 的时候就会因为都有 3.aar 发生引用冲突。这里注意,有时候将第三方库打包进aar时,第三方库中又用了其他库,没打进去的话,使用aar时会闪退,这里就要根据报错,找到缺少的日志库和版本,将缺少的库在moudle中使用embed打包进aar库。
2024-10-26 19:18:53 1354
原创 Android EditText调起键盘,阻止Recyclerview调整大小方法
但当调用弹窗,点击弹窗中的EditText时,会触发弹出键盘,导致触发了RecycleView底部的item不可见,这种情景其实应该是算可见的 ,不然业务流程会有会问题,因此,尝试修改不触发。通过设置RecycleView的addOnChildAttachStateChangeListener,判断网格布局可见和不可见,1、在Android中,可以通过设置RecyclerView的属性来实现阻止调整大小的效果。,可以将RecyclerView作为一个可滚动的容器,从而避免键盘弹出时调整大小。
2024-10-22 16:43:35 352
原创 kotlin data class 内部类字段首字母大写被转为小写问题处理
【代码】kotlin data class 内部类字段首字母大写被转为小写问题处理。
2024-09-27 14:13:52 196
原创 Android Studio 真机USB调试运行频繁掉线问题
检查Android SDK-Platforms需不需要更新(status变为update Available…Android Studio使用手机运行项目时,总是频繁掉线,连接很不稳定,动不动就消失,基本上无法使用。换条数据线试试,如果可以,那就是数据线的问题。
2024-09-23 14:15:52 620
原创 使用 Gradle 引入 AAR 库的两种方式
AAR 文件是 Android 的一个归档格式,类似于 JAR 文件,但它除了包含编译后的代码外,还包含资源文件、AndroidManifest.xml 文件等。这使得 AAR 文件可以更完整地封装一个 Android 库。
2024-09-20 20:22:31 855
原创 Android kotlin使用Netty网络框架实践(客户端、服务端)
kotlin通讯协议:头+类型+长度+数据+尾,自定义编解码器,解析和包装发送数据流,以下贴出部分关键代码代码中封装了client和server端,可以点击按钮进行通讯,可以直接在项目中使用,尤其是处理了粘包和分包问题。
2024-09-02 17:31:28 1303
原创 Android 常用三种日志框架[Logger、Timber、XLog]
这里主要说下XLog的用法,也是博主目前在项目中采用的日志框架,其他两种如果需要,自行研究,这里简单介绍。1、LoggerLogger是一个比较早期的日志框架,积累到现在的人气超高,拥有将近 14K 的 Star。这个库非常轻量,满打满算整个库只有 13 个类日志输出格式还是挺好看的,可以直接输出 Collection、json、xml 类型数据,但是不能自定义输出格式。日志可以保存到磁盘,但不能配置文件相关策略(文件名、备份、删除等),可以理解为,有存储文件功能,但不多。
2024-09-02 16:10:44 1845
原创 Android 12中读写SD卡,提示Operation not permitted问题处理
安卓11开始,强化了对SD卡读写的管理,引入了MANAGE_EXTERNAL_STORAGE权限,而之前的WRITE_EXTERNAL_STORAGE已经失效了。并且MANAGE_EXTERNAL_STORAGE权限只能跳转设置页面申请。
2024-08-23 15:45:33 930
原创 adb 获取手机电池信息与修改恢复
1、dumpsys battery set wireless 电池是否无线供电 0-false 1-true。3、dumpsys battery set status 电池状态:2:正充电;7、dumpsys battery set usb 电池是否USB供电 0-false 1-true。6、dumpsys battery set ac 电池是否电源充电 0-无线充电 1-交流充电。4、dumpsys battery set temp 电池温度。这将返回当前设备有关电池的所有信息。
2024-08-22 16:56:55 1123
原创 ConnectivityManager里面的连接类型
int TYPE_MOBILE_DUN ://网络桥接,很老的一个网络 提供了通过 Bluetooth 无线技术接入 Internet 和其它拨号服务的标准。int TYPE_MOBILE_HIPRI ://高优先级的移动数据连接。int TYPE_WIFI ://wifi服务,当激活时,默认情况下,所有的数据流量将使用此连接。int TYPE_MOBILE_SUPL ://平面定位特定移动数据连接。int TYPE_MOBILE_MMS ://运营商的多媒体消息服务。
2024-08-22 16:40:19 219
原创 Android- Framework 非Root权限实现修改hosts
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”
2024-07-01 17:14:51 2053
原创 Android app和aar包混淆
注意:特别是aar包提供给第三方的时候,切记提供给人家的时候混淆要把人家要调用到的类跟方法排除掉,不然别人便调用不到你这个类跟方法,因为被混淆改了名字。而且,一般引入第三方库的时候,就该把混淆规则加上,不要等到最后才加。先把 minifyEnabled 设为true,然后编写proguard-rules.pro文件。仅作参考,需要根据自己引入的三方库等配置混淆。
2024-05-28 11:35:35 456
原创 Android Sensor 介绍
(3)陀螺仪传感器:测量设备自身的旋转运动。原理:角动量守恒,中间有一个陀螺,周围三个轴的定位组件,根据旋转过程给出三个角速度。(2)磁力计传感器:定位设备的方位。温度传感器,距离传感器,重力传感器,线性加速度,翻转传感器,性对湿度传感器等。加速度传感器,磁感应传感器,方向传感器,陀螺仪,光线传感器,压力传感器,原理:使加速度传感器内部发生变形,输出三个与之相对应的电压信号。(1)加速度传感器:测试设备重力情况,相对于外部参照物;(3)压力传感器:测试手机距离地面的距离;应用:指南针,定位设备的方位等。
2024-05-23 19:10:24 178
原创 Android Low Storage机制之DeviceStorageMonitorService
设备存储监视器服务是一个模块,主要用来:1.监视设备存储(“/ data”)。2.每60秒扫描一次免费存储空间(谷歌默认值)3.当设备的存储空间不足时生成“低存储”通知。4.引导用户管理设备中安装的所有应用程序,并发送意图。5.存储严重不足时显示警告对话框。6.为AMS/PMS提供公共API以查询存储状态DeviceStorageMonitorService初始化handler用于check。
2024-05-20 16:23:16 563
原创 Android Settings系统属性读写
写为settings put secure 系统属性key 系统属性值。源码地址:frameworks/base/core/java/android/provider/Settings.java。对应xml路径:/data/system/users/0/settings_global.xml。对应xml路径:/data/system/users/0/settings_system.xml。对应xml路径:/data/system/users/0/settings_secure.xml。
2024-05-20 11:41:12 994
原创 Android 13 有线以太网静态ip保存逻辑梳理分析
这个类主要就是用来配置静态IP的,这个类之前也是在frameworks/base/core/java/android/net/路径下,12里面也移到了packages/modules/Connectivity/framework/src/android/net/下。,所以如果之前只在11上面适配过,那么对于12来说,适配还是需要花费一点功夫,具体的差异在之后的部分会记录,但是12与13的有线网络差异就较小了,并且看起来,13的以太网接口以及逻辑比12来说更为完善。源码环境:高通Android 13。
2024-04-17 16:16:11 1930 3
原创 Android 手机出现 FASTBOOT模式问题分析
FASTBOOT是一种基于 Android系统的开发工具,可以用于刷机、恢复等操作。在手机上,FASTBOOT模式通常是由于系统出现问题或者需要进行刷机操作时出现的。二、手机出现 FASTBOOT的原因1. 系统出现问题:手机的系统可能会出现各种错误或崩溃,导致无法正常启动。此时,手机会自动进入 FASTBOOT模式,以尝试修复或恢复系统。2. 刷机操作失误:如果你手动刷机或者使用第三方工具进行刷机,出现操作失误或者刷入不兼容的ROM,也会导致手机出现FASTBOOT模式。
2024-04-11 11:23:34 1504
原创 Android 系统大致启动流程
启动swapper进程(pid=0),该进程又称为idle进程,,系统初始化过程Kernel由无到有开创的第一个进程,,用于初始化进程管理、内存管理,加载Display、Camera Driver、Binder Driver等相关工作(图中kernel层蓝色区块)。kthreadd进程是所有内核进程的父进程。init进程孵化出Zygote进程,Zygote进程是Android系统的第一个Java进程,Zygote是所有Java进程的父进程,Zygote进程本身是由init进程孵化而来的。
2024-04-01 18:58:03 871 1
原创 Android-System SELinux 权限
标志性 log: avc: denied { 操作权限 } for pid=7201 comm=“进程名” scontext=u:r:源类型:s0 tcontext=u:r:目标类型:s0 tclass=访问类型 permissive=0。在Android系统开发中, 可能会遇到SELinux的权限不足而引起的各种问题. 可以尝试将SELinux工作模式临时改为宽容模式看问题是否解决, 来判定是否是SELinux引起的问题。目标类型:客体的类型,它被授权可以访问的类型。访问类型:客体的类可。
2024-03-25 13:52:21 420
Android kotlin使用Netty网络框架实践(客户端、服务端)
2024-09-02
修改hosts patch
2024-07-01
golang 安卓 环境sdk
2023-04-18
NDK或C++开发根据内存地址定位报错代码方法和步骤
2022-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人