乐于分享
好东西不私藏

实战调试Ruoyi-Android-App技巧

实战调试Ruoyi-Android-App技巧

简介

RuoYi Android App 移动解决方案,采用kotlin框架,实现了与RuoYi-Go 、RuoYi-Vue、RuoYi-Cloud完美对接的移动解决方案!目前已经实现登录、我的、工作台、编辑资料、头像修改、密码修改、常见问题、关于我们等基础功能。

  • 配套后端代码仓库地址RuoYi-Go 或 RuoYi-Vue 或 RuoYi-Cloud 版本。
  • 应用框架基于kotlin,支持Android。
今天讲解的是二开的过程中那些开放调试就技巧
技巧 1
OKHttp请求日志查看

/** * 网络配置初始化 * 配置 OkHttp 相关参数、拦截器、缓存、超时等全局网络设置 */NetConfig.initialize(ConfigApi.baseUrl, context) {    // ====================== 超时设置 ======================    // 连接超时:30秒    connectTimeout(30TimeUnit.SECONDS)    // 读取超时:30秒    readTimeout(30TimeUnit.SECONDS)    // 写入超时:30秒    writeTimeout(30TimeUnit.SECONDS)    // ====================== 缓存配置 ======================    // 启用 Http 缓存协议 + 强制缓存模式    // 缓存目录:context.cacheDir,缓存大小:128MB    // 超过最大缓存大小时,按 LRU(最近最少使用)算法清理缓存    cache(Cache(context.cacheDir1024 * 1024 * 128))    // ====================== 日志配置 ======================    // 根据 Debug 模式控制是否输出异常日志(便于定位网络请求错误)    setDebug(BuildConfig.DEBUG)    // 适配 AndroidStudio OkHttp Profiler 插件,输出网络请求日志    addInterceptor(LogRecordInterceptor(BuildConfig.DEBUG))    // ====================== Cookie 管理 ======================    // 添加持久化 Cookie 管理(避免每次请求重新登录)    cookieJar(PersistentCookieJar(context))    // ====================== 全局异常处理 ======================    // 统一处理网络请求异常(如超时、404、500 等)    setErrorHandler(ErrorHandler())    // ====================== 调试辅助(仅 Debug 模式) ======================    if (BuildConfig.DEBUG) {        // Chucker 拦截器:在通知栏查看网络请求/响应详情(替代 Stetho)        addInterceptor(            ChuckerInterceptor.Builder(context)                .collector(ChuckerCollector(context)) // 数据收集器                .maxContentLength(250000L) // 最大响应内容长度(避免过大)                .redactHeaders(emptySet()) // 不隐藏任何请求头                .alwaysReadResponseBody(false// 按需读取响应体(节省资源)                .build()        )    }    // ====================== 请求拦截器 ======================    // 全局请求拦截:统一添加 token、设备信息、版本号等公共参数    setRequestInterceptor(RequestInterceptor())    // ====================== 数据转换 ======================    // 自定义数据转换器(如 Json -> Model、ProtoBuf 解析等)    setConverter(SerializationConverter())    // ====================== 全局加载弹窗 ======================    // 自定义网络请求时的加载对话框(统一弹窗样式)    setDialogFactory {        BubbleDialog(it, Frame.getString(R.string.bubble_loading_title))    }}

这段代码是 Android 项目中全局网络配置初始化的核心逻辑,基于 OkHttp 封装的网络框架实现,主要作用包括:

  1. 配置网络超时、缓存等基础参数;
  2. 统一管理 Cookie、异常处理、公共请求参数;
  3. 区分 Debug/Release 模式,添加调试辅助工具;
  4. 自定义加载弹窗、数据解析规则。
debug模式下可以看到 通知栏 下 有多少 接口和日志情况。非常方便调试。、
技巧 2

引入 MVVM + ViewModel + LiveData / Flow

  • 彻底解耦启动页、登录页、业务页,代码更稳、更容易维护。

    • 协议状态、启动状态交给 ViewModel 管理
    • 生命周期安全,不会出现内存泄漏
    • 支持状态恢复(后台杀死重启不崩溃)
/*接口相关*/val authRepository: AuthRepoInterfaceget() = ServiceAuthLocator.provideAuthRepository(this)
封装好请求方法在页面之间调用,返回数据调用LiveData 模式减少了其他逻辑。
技巧 3
实体参数的创建
@kotlinx.serialization.Serializableclass AvatarEntity(val codeInt 0,val msgString "",val imgUrlString "")

@kotlinx.serialization.Serializable

 这个是必须的。因为在config中我们使用了kotlinx:kotlinx-serialization-json 第三方lib,解析会更加流畅。
技巧 4
  1. 统一 Kotlin 语法 替换 Java(现在安卓主流)
  2. 统一封装:BaseActivity、BaseDialog、BaseViewModel
  3. 统一网络框架:结合 Ruoyi 后端,封装 Retrofit + 协程
  4. 统一路由:ARouter 页面跳转
  5. 统一主题、样式、状态栏
所以创建项目基本上不用考虑适配问题和主题样式问题,统一配置之后即可。
技巧 5
CI/CD部分,可以直接进行打包,输出路径在gradle-build/app/outputs/apk/release
这样为jenkin 自动打包上传到蒲公英第三方里面做准备。



技巧 6


自定义dialog方式。案例有两个。
1、dialog目录里面
这里是公共的方法。
2、自定义dialog方式,如LikeMeDialog


简单实用
vallikeMeDialog=LikeMeDialog(requireActivity())
if(!likeMeDialog.isShowing){
likeMeDialog.show()
}
即可了。

技巧 7
拦截器和接口加密都是在OKHTTP里面配置的。也是上面第一次进行的。

技巧 8

button 点击防止多重点击功能,自己封装了clickDelay 方法
使用方法
binding.llJiaoliuqun.clickDelay{
ToastUtils.show(Frame.getString(R.string.mine_qq_line))
}

技巧 9
整体使用了BaseBinding 模式,去掉findbyid的多余的代码。代码减少了40%左右。加快开发流程。
技巧 10
统一上拉更多,下拉刷新控件。
回到顶部,基础的技巧。在logActivity中。实用
swiperefreshlayout
方式。代码简单
技巧 11
权限申请 XXPermissions 实用。最小权限配置,动态申请权限,为了上app市场,审核封装,加快审核。
技巧 12
图片显示,使用glide。进行自定义存储战略,内存还是本地策略。
技巧 13
一键清理
一键打包测试和正式都有了
配置文件在config中

更多功能后面会补充。
后面会补充一些实战内容,如权限模块。功能配置模块。


本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 实战调试Ruoyi-Android-App技巧

评论 抢沙发

7 + 8 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮