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

相关推荐
饭小猿人10 小时前
Android 腾讯X5WebView如何禁止系统自带剪切板和自定义剪切板视图
android·java
_李小白10 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
美狐美颜SDK开放平台10 小时前
多场景美颜SDK解决方案:直播APP(iOS/安卓)开发接入详解
android·人工智能·ios·音视频·美颜sdk·第三方美颜sdk·短视频美颜sdk
嗷o嗷o11 小时前
Android BLE 里,MTU、分包和长数据发送到底该怎么处理
android
Gary Studio12 小时前
Android AIDL HAL工程结构示例
android
y = xⁿ13 小时前
MySQL八股知识合集
android·mysql·adb
andr_gale13 小时前
04_rc文件语法规则
android·framework·aosp
祖国的好青年14 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
黄林晴15 小时前
警惕!AGP 9.2 别只改版本号,R8 规则与构建链路全线收紧
android·gradle