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

相关推荐
v***56531 分钟前
Spring Cloud Gateway
android·前端·后端
苦逼的搬砖工3 小时前
基于 easy_rxdart 的轻量响应式与状态管理架构实践
android·flutter
2501_915918413 小时前
苹果上架 iOS 应用的工程实践,一次从零到上线的完整记录
android·ios·小程序·https·uni-app·iphone·webview
從南走到北4 小时前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
2501_915918414 小时前
如何解析iOS崩溃日志:从获取到符号化分析
android·ios·小程序·https·uni-app·iphone·webview
Entropless5 小时前
OkHttp 深度解析(一) : 从一次完整请求看 OkHttp 整体架构
android·okhttp
v***91305 小时前
Spring+Quartz实现定时任务的配置方法
android·前端·后端
wilsend6 小时前
Android Studio 2024版新建java项目和配置环境下载加速
android
兰琛6 小时前
Android Compose展示PDF文件
android·pdf
走在路上的菜鸟7 小时前
Android学Dart学习笔记第四节 基本类型
android·笔记·学习