
使用 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 查看并引用

rust
// 仓库地址
maven { url 'https://jitpack.io' }
//生成的库地址
implementation 'com.github.wukuiqing49:XPopup:2.10.3'
注意:
- jdk版本问题(库的jdk版本尽量低于或等于项目的版本)
- 梯子问题
- 项目替换成自己生成的库地址
总结
- Fork 原库:在 GitHub 上 Fork 源项目,获得可修改权限的副本。
- 源码修改:本地 clone 仓库并进行功能修复或定制化修改。
- 版本管理 :通过
git tag
打标签,并推送到远程仓库,确保 JitPack 能构建对应版本。 - JitPack 发布 :在
build.gradle
中配置maven { url 'https://jitpack.io' }
,项目即可引用。 - 依赖方式 :通过
implementation 'com.github.<用户名>:<库名>:<Tag版本>'
直接集成。 - 环境兼容性:JitPack 默认使用 JDK 11,推荐搭配 AGP 7.x 构建;如需 JDK 8,可选择 AGP 4.2.2 + Gradle 6.9.1。
借助 JitPack,开发者无需手动上传到 MavenCentral 或 JCenter,就能快速发布和共享修改过的三方库,大幅提升开发效率与可维护性。