Android
文章平均质量分 58
ExtraLazy
有些路,总得一个人走,没有人会陪你。
展开
-
用Python 快速一键迁移至AndroidX
强烈推荐FlashText:语料库数据快速清理利器。 flashtext原创 2022-07-14 10:25:26 · 838 阅读 · 1 评论 -
ConstraintLayout(约束布局)开发指南
ConstraintLayout 是一个使用“相对定位”灵活地确定组件的位置和大小的一个布局,解决开发中过于复杂的页面层级嵌套过多的问题——层级过深会增加绘制界面需要的时间。相对定位是在 ConstraintLayout 中创建布局的基本构建块之一。这些约束允许您相对于另一个控件定位给定的控件。您可以在水平和垂直轴上约束一个控件:水平轴:左、右、起点和终点垂直轴:顶部、底部和文本基线一般概念是将控件的给定一侧约束到任何其他控件的另一侧。例如,为了将按钮 B 定位到按钮 A 的右侧(图 1):这告诉系原创 2022-06-20 20:02:21 · 4827 阅读 · 0 评论 -
Android-模块化通信-接口api化include方案
Android-模块化通信-接口api化include方案提示:这里可以查看系列文章Android-模块化-项目实践和探索分享Android-模块化通信-简单实用的android spi机制前言Android-模块化通信,输出一套简单好维护的 api化 方案include 方案从 微信 Android 模块化架构重构实践(上)暴露api 方案 获得灵感, 从每个模块中收集api 文件,采用gradle配置能快速实现apply from: rootProject.file('./bu原创 2022-04-01 21:05:48 · 9614 阅读 · 0 评论 -
Android-模块化通信-简单实用的android spi机制
目录前言一、spi是什么?二、`ServiceLoader`1.`ExportTableLoader`2.`ExportTable`3.`LazyLoader`4.`ServiceLoader`三、应用四、总结前言为了实现Android-模块化通信-需要一套简单实用的android spi机制。一、spi是什么?SPI即 Service Provider Interface,它是为接口提供寻找实现服务类,类似IOC的思想。二、ServiceLoaderjava中的spi, ServiceLo原创 2022-03-29 22:14:18 · 10792 阅读 · 0 评论 -
Android-模块化-项目实践和探索分享
提示:这里需要提前对Android-模块化-基本知识了解本文主要分享个人在项目中实现Android模块化中的gradle统一配置、nexus、maven-publish、动态依赖、模块通信等思路组件化项目demo模块的依赖对应关系应该采用map数据结构构建关系,key为project,value为上面的依赖切换详情项依赖的传递性可以采用递归循环压缩依赖信息为map,project、moudule、dep_option字段必须依赖项配置:、api、、、、等,其中api具有传递性依赖信息为map,原创 2022-03-29 19:53:55 · 12158 阅读 · 2 评论 -
AGP Gradle 的一些问题记录
AGP Gradle 的一些问题记录7.0.4 版本环境, as: Build #AI-211.7628.21.2111.8139111, built on February 2, 2022allprojects {configurations.all { resolutionStrategy.dependencySubstitution { //project&module依赖关系切换处理 substitute(project原创 2022-02-11 17:01:40 · 1725 阅读 · 1 评论 -
马上:头疼:安卓黑屏,白屏,网卡,sdcard挂载等问题深入分析解决
白屏设备一段时间使用后,白屏,需要重启,经线上日志和以下相关代码初步分析是AMS 窗口显示问题。检查相关业务代码,发现Activity有可能被finish多次,导致失败,还有多次startActivityif (isFinishing()) { return;}finish();startActivity //要防止重复启动,在垃圾机型上会出问题黑屏经过排查,发现软件不稳定时,捕到崩溃时,调用了下面杀掉进程方法,在某些机器上,表现很奇怪,主进程无法启动,导致无响应!Process.原创 2022-01-25 23:47:12 · 8465 阅读 · 0 评论 -
马上:系统签名apk和工具
马上:系统签名apk和工具开发一款系统插件app, 系统权限,android:sharedUserId="android.uid.system , 其中涉及系统签名和一下工具使用,记录一下android:sharedUserId官方爸爸警告:API 级别 29 中已弃用此常量。 共享用户 ID 会在软件包管理器中导致具有不确定性的行为。因此,强烈建议您不要使用它,并且我们在未来的 Android 版本中会将其移除。相反,应用应使用适当的通信机制(例如服务和内容提供程序),在共享组件之间实现互操作原创 2022-01-06 23:52:31 · 12464 阅读 · 0 评论 -
马上:测温模块坑
马上:测温模块坑为什么坑呢,环境影响十分大,容易误差,需要各种补偿,校准。就是个噱头欧姆龙测手腕的 (4x1 矩阵点数据)测额头的 (4x4/16x16 矩阵点数据)矩阵点数据由单片机计算输出:温度数据方案:通过串口uart(TTL电平)温度数据已经过黑体出厂矫正,并且提供两种模式的温度数据A:已经补偿到手腕温度范围的温度数据 (数码管显示用此温度)B:物体表面温度数据(未补偿过的)附带一个说明图:看看底下吧,这么多模块都是受环境影响十分大,容易误差,需要各种补偿,校准原创 2022-01-06 23:51:47 · 11670 阅读 · 0 评论 -
马上:安卓5.0以下系统兼容 TLSv1.1 TLSv1.2
马上:安卓5.0以下系统兼容 TLSv1.1 TLSv1.2最近在不知情下,运维升级https证书级别为1.2,导致了安卓5.0以下的设备无法上网(接口证书错误),安卓7.12设备可以访问查阅官方文档SSLSocket借一个表格说明问题:ProtocolSupported (API Levels)Enabled by default (API Levels)SSLv31–251–22TLSv11+1+TLSv1.116+20+TLSv1.2原创 2022-01-04 23:49:06 · 10668 阅读 · 0 评论 -
马上:纸币互动,智能笔数据点压缩
马上:纸币互动,智能笔数据点压缩对接一款智能笔,笔的数据是通过蓝牙传给app, 但是笔的笔迹点数量很多,网络传输用json就不恰当。所以一番调研才起二进制压缩点(数字压缩基本原理)基本数据class Dot implements Serializable { public int Counter; public int SectionID; public int OwnerID; public int BookID; public int PageID;原创 2022-01-03 23:43:21 · 18030 阅读 · 0 评论 -
马上:GPIO
马上:GPIORockchip-瑞芯微RK系列上的板卡,有很多GPIO,可以控制的通用引脚。我司的应用有控制LED灯,接收人体感应器高低状态(高==感应到人),控制4G模块电路开关每个板卡方案上都会预留几组GPIO bank, 看板卡的规格书,一般都会标注着编号,硬件上的编号不是软件上的编号,不同Android版本上计算的方式也有差异,一般方案商会提供api, 或者提供软件编号工作原理I/O 输入输出,简单了解即可linux sysfs 方式控制 GPIOandroid 同样适原创 2022-01-02 22:49:35 · 10910 阅读 · 0 评论 -
马上:硬件开关机
马上:硬件开关机通过多年与RK3288不同产品的方案公司的接触,梳理并总结RK3288方案常用开关机的方案PMU+RTC 方案PMU: RK808RTC: hym8563 (纽扣电池供电)硬件上需要把RTC的中断脚接到RK808的开机引脚上电源管理芯片又称之为PMU(power management unit)或PMIC,它是一种高集成的、针对便携式应用的电源管理方案,是将传统分立的若干类电源芯片,如低压差线性稳压器(LDO)、直流直流转换器(DC/DC)集成于一体的芯片,从而实现更高的电原创 2022-01-02 22:20:39 · 13618 阅读 · 0 评论 -
马上:Android pins 模块化架构
马上:Android pins 模块化架构主工程的代码堆积,造成包目录结构臃肿,难区分。借用pins工程结构暂时,其相互独立的代码进行区分,为后期模块组件化,留下了灵活性。pins ,原理是gradle sourceSets ,sourceSets { main { def dirs = ['p_vpos',//vpos 'p_vbook',//v图 'p_vboo原创 2022-01-02 21:26:12 · 16831 阅读 · 0 评论 -
马上:Zxing、Zbar、HMS Scankit 扫码优化
Zxingzxing 一款Java、Android 很流行的二维码、条形码扫码库。开源,可移植,简单易用的api.相信大家对接触过zxing 库,在高端性能机器扫码效果还是很不错的,但面对复杂的扫码环境而言强光,弯曲,形变等情况,Zxing 的缺陷就被放大了。基于 Zxing 的做优化的话,老手话深有体会, 可优化的空间并不多。无非以下方面, 而且效果不显著摄像头预览,选择合适的size预览,减少解码数据,裁减无用数据区域根据业务去除多余的格式…ZarZBar 是一个开源软件,用于从各种来原创 2022-01-02 14:29:05 · 11250 阅读 · 0 评论 -
Android DNS解析过程
前言一次排查接口404问题,引伸的Android DNS解析过程,简单分析总结一下1、首先明白DNS解析流程操作系统检查自身本地的hosts文件是否有这个网址的映射关系,如果有,直接返回完成域名解析如果hosts文件没有这个域名映射,则查找本地dns解析器缓存,如果有映射关系则完成域名解析如果hosts和本地dns缓存都没有映射关系,则查找TCP/IP中的首选dns服务器(本地dns服务器),收到查询时,如果查询的资源在本地配置区域中,则返回解析地址给客户机,完成域名解析。如果不在本地dns原创 2022-01-02 00:39:59 · 15909 阅读 · 0 评论 -
马上:网络故障排查的思路和方法
马上:网络故障排查的思路和方法安卓日常开发工作中,总会遇上些网络问题需要排查清楚。比如我遇上了,线上app网络状态是良好的,但是上传日志失败、接口404但公司网络能请求成功200、直播推流失败、耗流量大、MQTT连接异常…基本网络知识了解网络通信的基础设备和其对应的OSI层次最基本的网络设备交换机、三层交换机、路由器、防火墙。OSI七层模型中的数据链路层、网络层等TCP/IP五层和四层网络模型网络的基本架构网络组网的经典模型,接入层-汇聚层-核心层-出口层 (中小型企业网络原创 2022-01-01 22:45:47 · 14045 阅读 · 0 评论 -
马上:WiFi设置功能模块 (快速实现和分析要点)
WiFi设置功能模块 (快速实现和分析要点)Android 物联网WIFI模块配置,软件上需要连接WIFI网络1、熟悉系统提供API由于对WIFI相关功能API不是很了解,参考官方源码 androidxref,下面列简单的必要类WifiManager 顾名思义即WIFI服务管理者或官方描述此类提供用于管理 Wi-Fi 连接各个方面的主要 API。…ScanResult 扫描WIFI结果或官方描述有关检测到的接入点的信息。 除了此处描述的属性之外,请求方maxbitrate跟踪q原创 2021-12-26 17:54:08 · 18195 阅读 · 0 评论 -
马上: Android线上OOM问题定位解决分享及总结
官方分析应用性能https://developer.android.com/studio/profile项目现状java.lang.OutOfMemoryErrorpthread_create (1072KB stack) failed: Try again Failed toallocate a 7687692 byte allocation with 2774696 free bytes and 2MB until OOMOutOfMemoryError thrown while try原创 2021-12-19 22:58:12 · 16958 阅读 · 3 评论 -
Android Gradle 之迷惑
报错delete outputFileExecution failed for task ':VScreen:assembleVscreen_baseRelease'.> java.io.IOException: Unable to delete file 'D:\vx-work\android-code\vx-screen\VScreen\build\outputs\apk\vscreen_base\release\VScreen_vscreen_base_v7.0.1_build_21121原创 2021-12-17 23:07:51 · 17615 阅读 · 0 评论 -
scrcpy开源项目分析学习
scrcpy可以显示并控制通过 USB (或 TCP/IP) 连接的安卓设备,且不需要任何 root 权限。本程序支持 GNU/Linux, Windows 和 macOS。scrcpy githubapp mac/windows/linux客户端assetsconfigdatagradleprebuilt-depsscriptsserver android 服务端 android 服务端 share/scrcpy/scrcpy-server 本身是个apk.原创 2021-11-20 22:03:31 · 14061 阅读 · 0 评论 -
termux 开源项目学习分析
Termux - 适用于 Android 操作系统的终端模拟器应用程序,可通过各种软件包进行扩展。termux-app//覆盖下载,Bootstrap zip包 ,地址页:https://github.com/termux/termux-packages/releases/tag/bootstrap-2021.11.07-r1def downloadBootstrap(String arch, String expectedChecksum, String version) {.......原创 2021-11-20 14:15:27 · 20506 阅读 · 2 评论 -
Gradle7.0.0 修改apk输出目录outputDirectory,第二次打包时,上次apk被删除
4.2.2 升级Gradle7.0.0 后,第二次打包时,apk被删除,项目中修改了apk输出目录outputDirectory,故注释outputDirectory=代码排除,具体看了一下gradle 源代码未发现原因//...applicationVariants.all { variant -> if (variant.buildType.name != "debug") {//防止AS无法安装debug包(apk) .原创 2021-10-07 23:13:29 · 4239 阅读 · 2 评论 -
2019、2020、2021年技术知识巩固记录
2020年技术知识巩固记录。资料网上获取,版权归原处所有Java 对象回收处理过程热修复原理原创 2021-09-23 00:13:53 · 130 阅读 · 0 评论 -
安卓热修复很坑
mpaas 热修复很坑Tinker 很坑原创 2021-09-23 00:08:47 · 127 阅读 · 0 评论 -
升级最新4.0.1 踩坑记录
最近项目架构调整,为了更快编译项目以及,支持java8, 从build tools 3.0.1 ==> 4.0.1 其中遇到一下问题,简单记录一下解决过程第三方库依赖打包时冲突,简单办法直接,excludeandroid.enableAapt2=false,,默认强制支持,以及r8proguard 兼容,但会有些地方报错, ignorewarning 不支持,obfuscationdictionary 不能有 if ,do 关键字,应该是已经重复了jar 不能有dex 文件以及重复cla.原创 2020-08-06 14:48:34 · 1057 阅读 · 0 评论 -
Android Log.isLoggable 妙用
近来发现源码里面好多地方用到了 Log.isLoggable , 一查一看,是个东西,适合系统层以及root 主板设备上使用,能实现动态开关android.util.Log.isLoggable(TAG, android.util.Log.DEBUG)如上面代码以及文档说明,setprop log.tag.YOUR_LOG_TAG LEVEL 开启指定级别的日志开关属性,VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT, or SUPPRESS. SUPPRESS原创 2020-06-01 23:15:23 · 1983 阅读 · 0 评论 -
RecyclerView 踩坑记
左图,横屏时,左侧 RecyclerView 高度不需要占满屏幕,但出现被强行占满,只好重写onMeasure由于视频播放View组件要不但要在横竖屏展示,还要双击跳到大屏上,只想到了管理View对象,在onBindViewHolder 时动态添加VideoView,为了刷新图片不闪烁更好的性能,取消动画,itemAnimator.setSupportsChangeAnimations(fa...原创 2020-04-27 23:10:59 · 1927 阅读 · 0 评论 -
Android Studio 升级问题
gradlePluginPortal()-ignorewarning原创 2019-12-13 17:29:29 · 1722 阅读 · 0 评论 -
安卓ble广播数据简析
手环,跳绳各种~广播蓝牙的广播包有两种: 广播包 (Advertising Data)和 响应包 (Scan Response),其中广播包是每个设备必须广播的,而响应包是可选的。每个包都是 31 字节,数据包中分为有效数据(significant)和无效数据(non-significant)两部分。scanRecord数据有效数据部分 :包含若干个广播数据单元,称为 AD Struc...原创 2019-12-13 17:11:58 · 2199 阅读 · 0 评论 -
Android开启WiFi热点失败?androidxref helper
最近想通过代码开启WiFi热点无奈安卓的碎片化,不同系统要作不同适配,网上找某某的代码,压根也是乱拷别人的,还是自己看源码靠谱,Android6.0.1开启WiFi热点代码就没必要贴了,一些反射操作...原创 2019-08-09 10:57:53 · 598 阅读 · 0 评论 -
安卓安装apk后弹窗消失
查源码发现有个EXTRA_RETURN_RESULT private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case INSTALL_COMPLETE: ...原创 2019-08-12 10:43:31 · 1983 阅读 · 0 评论 -
巧妙均分TabLayout tab
/** * 均分TabLayout tab * 利用LinearLayout weight 特性, android.support.design.widget.TabLayout#updateTabViewLayoutParams(android.widget.LinearLayout.LayoutParams) */ public static vo...原创 2019-08-12 14:48:50 · 1648 阅读 · 0 评论 -
解决Kotlin和DataBinding冲突 Unresolved reference: databinding
转换kotlin 代码时,Kotlin与DataBinding冲突 Unresolved reference: databindingTo make it work with Kotlin classes add the kapt dependency:apply plugin: 'kotlin-kapt'dependencies { kapt "com.android....原创 2018-03-23 16:22:34 · 2373 阅读 · 0 评论 -
bintray 发布 再入坑
发布时 Execution failed for task ‘:core:mavenAndroidJavadocs’.FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':library:mavenAndroidJavadocs'.> Javadoc generation fai原创 2017-04-15 23:58:33 · 1263 阅读 · 0 评论 -
人脸识别第三方SDK人脸识别性能
原创 2019-08-03 11:34:02 · 749 阅读 · 2 评论 -
安卓猿的ADB骚操作
前言效果图#adb 快捷命令function adbConnect(){ echo "Your connect is 192.168.$1" # 这个 $1 必须要参考底下命令的下达 adb connect 192.168.$1}function adbDisconnect(){ adb disconnect}function adbShell()...原创 2019-06-11 00:46:33 · 18885 阅读 · 0 评论 -
libserial_port.so text relocations 警告弹窗
TEXTREL是"文本重定位”的术语"。在targetSdkVersion>=23 Android 6.0 以上设备上跑debug版本时,出现一下警告日志,当targetSdkVersion<23且使用debug签名的APK运行在高版本系统上(大于6.0)出现以下弹窗2019-04-26 15:09:45.033 1685-2398/cn.mashang.vscreen W...原创 2019-04-26 16:26:20 · 3939 阅读 · 10 评论 -
我的开源库-SimpleStetho
SimpleStetho SimpleStetho 一款基于Stetho 为Android应用程序提供数据库、LOG日志信息调试桥梁简单工具库。开发人员可以使用 MQTT 框架使用它的功能。Set-upDownloadGradle:compile 'com.roogle.simple.stetho:stetho-mqtt:3.1.1'or Maven:<dependency> <grou原创 2018-01-03 23:17:47 · 598 阅读 · 0 评论 -
软引用、弱引用和虚引用处理
前言之前在Android上使用 Handler 引起了内存泄漏。从而认识了弱引用、软引用、虚引用。今天发现Kotlin 在Android 上Anko库里的async, uiThread 里面居然做了在异步执行过程中Activity销毁了uiThread则不会调用,防止内存泄漏。正是采用了弱引用,先温习一下。Java中有如下四种类型的引用:强引用(Strong Reference)软引用(Soft原创 2017-12-27 00:18:19 · 11784 阅读 · 0 评论