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

相关推荐
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android