Android 基于JitPack Fork三方库代码 修改XPopup 资源ID异常BUG 并发布到仓库

博客-本地aar方式修改

项目地址

使用 XPopup 开源库展示底部弹出的弹框时会一直报资源ID找不到,气死强迫症啊,看了下更新时间,已经两年没做代码更新了.大佬提供了轮子,维护这么久万分感谢.

出现了BUG 自己能动手就不瞎BB.

上篇文章提供了,AAR的方式修改了这个库,有道友提出可以Fork方式修改简单方便,这里就fork方式修改三方库的源码然后提交到自己的私有仓库.

1:Fork 开源库代码到自己的Github 仓库

1.1 开源仓库代码Fork

1.2 自己仓库找到Fork的代码

2:修改三方库代码BUG

ini 复制代码
public static boolean isNavBarVisible(Window window) {
    if (window == null) return false;
    boolean isVisible = false;
    ViewGroup decorView = (ViewGroup) window.getDecorView();
    if (decorView == null) return false;
    for (int i = 0, count = decorView.getChildCount(); i < count; i++) {
        final View child = decorView.getChildAt(i);
        final int id = child.getId();
        //增加判断过滤 
        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;
            }
        }
    }
    if (isVisible) {
        // 对于三星手机,android10以下非OneUI2的版本,比如 s8,note8 等设备上,
        // 导航栏显示存在bug:"当用户隐藏导航栏时显示输入法的时候导航栏会跟随显示",会导致隐藏输入法之后判断错误
        // 这个问题在 OneUI 2 & android 10 版本已修复
        if (FuckRomUtils.isSamsung()
                && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1
                && Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
            try {
                return Settings.Global.getInt(window.getContext().getContentResolver(), "navigationbar_hide_bar_enabled") == 0;
            } catch (Exception ignore) {
            }
        }

        int visibility = decorView.getSystemUiVisibility();
        isVisible = (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
    }

    return isVisible;
}

3. 发布到自己仓库

sql 复制代码
git add .

git commit -m '优化XPopup资源ID BUG'

git add tag 2.10.3 

git push origin 2.10.3 

4.Jitpack 查看并引用

Jitpack仓库官网地址

rust 复制代码
// 仓库地址
maven { url 'https://jitpack.io' }

//生成的库地址   
implementation 'com.github.wukuiqing49:XPopup:2.10.3'

注意:

  • jdk版本问题(库的jdk版本尽量低于或等于项目的版本)
  • 梯子问题
  • 项目替换成自己生成的库地址

总结

  1. Fork 原库:在 GitHub 上 Fork 源项目,获得可修改权限的副本。
  2. 源码修改:本地 clone 仓库并进行功能修复或定制化修改。
  3. 版本管理 :通过 git tag 打标签,并推送到远程仓库,确保 JitPack 能构建对应版本。
  4. JitPack 发布 :在 build.gradle 中配置 maven { url 'https://jitpack.io' },项目即可引用。
  5. 依赖方式 :通过 implementation 'com.github.<用户名>:<库名>:<Tag版本>' 直接集成。
  6. 环境兼容性:JitPack 默认使用 JDK 11,推荐搭配 AGP 7.x 构建;如需 JDK 8,可选择 AGP 4.2.2 + Gradle 6.9.1。

借助 JitPack,开发者无需手动上传到 MavenCentral 或 JCenter,就能快速发布和共享修改过的三方库,大幅提升开发效率与可维护性。

相关推荐
TimeFine24 分钟前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m43 分钟前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android
疯华整猫5 小时前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Carson带你学Android5 小时前
AI时代,你的 App 会被 Agent 这三种方式调用
android·ai编程
恋猫de小郭7 小时前
Flutter 下 AOT 一个你怎么都想不出来的 Bug ,JIT 正常的计算,在 AOT 居然算错了
android·前端·flutter
好的佩奇1 天前
Dart 之扩展方法
android·flutter·dart
三少爷的鞋1 天前
换个思路理解:非阻塞挂起
android
好的佩奇1 天前
蓝牙之经典蓝牙
android·flutter·蓝牙
传奇开心果编程1 天前
【Flutter踩坑排雷】第19课:路由硬编码坑|字符串路由书写错误,页面跳转失败排查
android·flutter·ios·移动开发·跨平台·ui框架·声明式ui
微小的鱼1 天前
Linux的渲染与显示系统链路
android·java·linux