开源库 XPopup 资源 ID 异常修复:从发现 BUG 到本地 AAR 部署全流程

各种各样的轮子在项目中用的飞起,节约了大量的开发时间,同时也增加了风险.例如断更,跑路,已读不回哈哈.毕竟开源开发者都是为爱发电,咱也不能说什么

那么问题就这么悄悄的来了,开源项目发现BUG我们要怎么处理呢.地球爆炸吧,这二比Android 狗都不干.

问题:

使用 XPopup 开源库展示底部弹出的弹框时会一直报资源ID找不到,气死强迫症啊,看了下更新时间,已经两年没做代码更新了,所以还是自立更生动手干吧.

问题处理流程

  • 找到问题并修改
  • 将修改后的三方库打包成AAR
  • 项目去除网络引用 重新信用AAR资源

1.问题梳理

如图资源ID不合法触发了异常 ,系统打印了资源ID找不到,

修改方式:

bash 复制代码
// 判断资源id是否合法 (id >>> 24) != 0


if (id != View.NO_ID&&(id >>> 24) != 0) {
    try {

        String resourceEntryName = window.getContext().getResources().getResourceEntryName(id);
        if ("navigationBarBackground".equals(resourceEntryName)
                && child.getVisibility() == View.VISIBLE) {
            isVisible = true;
            break;
        }
    } catch (Resources.NotFoundException e) {
        break;
    }
}

2.将moudle库打包成AAR

如图所示

  • 配置 com.android.library
  • 执行 moudle名字/tasks/other/assembleRelease
  • AAR生成位置 moudle/bulid/output/aar

3.项目引用AAR(Gradle 高版本引用)

AAR在高版本中的配置

流程:

  • 创建一个文件夹统一管理AAR文件
  • 创建要引用的AAR的文件夹
  • 将aar文件放进创建好的文件夹
  • 编写 build.gradle文件
  • Setting.gradle文件配置一下
  • 要使用的库引用就可以了

3.1 build.gradle 代码

csharp 复制代码
configurations.maybeCreate("default")
artifacts.add("default", file("XPopup.aar"))

3.2引用方式

java 复制代码
api project(path:':LibAAR:AAR_XPopup')

总结

三方库出问题,修改甚至是魔改.日常开发过程中常见的场景,这里总结一下自己的操作,方便以后查看.各位大佬有什么好的方案,欢迎滴滴.

相关推荐
Godikov1 小时前
硬件异步事件下的业务一致性:智能柜领取/归还流程的竞态设计
android
Godikov1 小时前
不用 Netty:Android 手写 TCP 客户端实战——自定义协议帧、粘包处理与可靠重连
android
事圆则缓1 小时前
Java 面向对象如何落到 Android View 体系
android
iPad协议个微协议2 小时前
# 微信自动营销系统如何基于 WechatApi 做事件驱动设计
android·微信·企业微信·个人开发·wechatapi·微信个人号开发
AirDroid_cn2 小时前
隐私沙盒:第三方应用读取剪切板内容如何拦截?
android·gitee
2501_915918414 小时前
怎么把 Python 写的 Flet 应用打包成 iOS App 并上架 App Store?
android·ios·小程序·https·uni-app·iphone·webview
邪修king6 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
又见情义6 小时前
RK3568 Android 13 版本号管理实战:基于 ROCKCHIP_BUILD_NUMBER 的定制化方案
android
终端安全笔记7 小时前
iOS 27 强制 TLS 1.2:租赁设备的注册链路会在哪一环断
android·网络·安全·ios·智能手机
mmsx7 小时前
MapLibre 实战 11|用户说"我的地块丢了":一个 sealed class 图层模型,和四个让我重构三版的坑
android·前端·开源