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,就能快速发布和共享修改过的三方库,大幅提升开发效率与可维护性。

相关推荐
xhbh6661 分钟前
【实战避坑】MySQL自增主键(AUTO_INCREMENT)全解:从锁机制、间隙问题到分库分表替代方案
android·数据库·mysql·mysql自增主键
TimeFine18 分钟前
Android 通过Dialog实现全屏
android
用户20187928316738 分钟前
Android Input 的 “快递双车道”:为什么要用 Pair Socket?
android
ajassi20001 小时前
开源 java android app 开发(十八)最新编译器Android Studio 2025.1.3.7
android·java·开源
用户2018792831671 小时前
Java 泛型:快递站老板的 "类型魔法" 故事
android
Knight_AL1 小时前
浅拷贝与深拷贝详解:概念、代码示例与后端应用场景
android·java·开发语言
夜晚中的人海2 小时前
【C++】智能指针介绍
android·java·c++
用户2018792831673 小时前
后台Activity输入分发超时ANR分析(无焦点窗口)
android
用户2018792831673 小时前
Activity配置变化后ViewModel 的 “不死之谜”
android
游戏开发爱好者84 小时前
BShare HTTPS 集成与排查实战,从 SDK 接入到 iOS 真机调试(bshare https、签名、回调、抓包)
android·ios·小程序·https·uni-app·iphone·webview