Tunable-在App工程中开发调试独立SDK工程(gradle复合构建)

Tunable-在App工程中开发调试独立SDK工程

1. 使用场景-你的痛点

各 SDK 独立开发调试,拥有自己的 sample 工程,通过发布 aar 方式集成到宿主。当出现 bug/需要在宿主中进行调试时,我们通常会怎么做?

  • 方式1:在宿主工程中进行断点调试 (只能用于定位问题)
  • 方式2:修改 SDK 重新发布集成进行测试
  • 方式3:源码导入宿主工程,修改配置,最后再回滚宿主工程

Tunable 利用复合构建 + 依赖替换 + 模版脚本,帮助你快速解决这些痛点,它具有如下优势:

Tunable
1对宿主工程、SDK 工程无侵入,开发过程中的代码修改直接作用在原工程
2使用简单,只需在 Tunable 中配置宿主工程、SDK 工程相关路径
3一个 IDE 窗口,同时开发宿主工程和 SDK 工程

关于复合构建的介绍:gradle复合构建

2. 使用教程

01. clone Tunable

https://github.com/kuangzhongwen/Tunable

git clone git@github.com:kuangzhongwen/Tunable.git
02. 打开 Tunable 工程,进行配置

配置 tun-config.gradle,参考下面的 demo:

ext {
    // APP 工程路径
    app_project_path = '/Users/kuangzhongwen/Desktop/project/58TownClientProject/58ClientProject'

    // APP 工程 run task,eg: appModuleName:install{$flavor}Debug/appModuleName:assemble{$flavor}Debug
    // 如果是 AAB 工程,建议关闭 AAB 模式后进行调试
    app_run_task = '58WuxianClient:installDebug'

    // SDK 工程配置,可配置多个
    sdk_projects = [
            [
                    'sdk_project_path': '/Users/kuangzhongwen/Desktop/project/ActionLogSDK',
                    'aar': 'com.wuba.wuxian.sdk:actionlog',
                    'sdk_module': 'actionlog'
            ]
    ]
}
参数说明
app_project_path本地的 app 宿主工程路径
app_run_taskapp 宿主工程运行 task,格式为:appModuleName:install{KaTeX parse error: Expected 'EOF', got '}' at position 7: flavor}̲Debug or appMod…flavor}Debug
sdk_projectssdk 工程配置,数组形式,可配置多个
sdk_project_path本地 sdk 工程路径
aarsdk 远程 aar 配置,格式为:group:artifact,宿主 app 中存在该 aar 的依赖
sdk_modulesdk 工程中的 sdk module 名,复合构建时会使用该 module 替换宿主工程中的 aar,达到本地开发调试的目的

备注,配置多个 SDK:

ext {
    app_project_path = '/Users/kuangzhongwen/Desktop/project/58TownClientProject/58ClientProject'
    app_run_task = '58WuxianClient:installDebug'
    sdk_projects = [
            [
                    'sdk_project_path': '/Users/kuangzhongwen/Desktop/project/ActionLogSDK',
                    'aar': 'com.wuba.wuxian.sdk:actionlog',
                    'sdk_module': 'actionlog'
            ],
            [
                   ...
            ]
    ]
}
03. sync Tunable 工程

同步 gradle,成功后,将看到如下画面:

<1> 如果 sync 过程中报错,参考 Q&A 进行解决
<2> IDE 窗口中的几个工程,不是拷贝的方式,而是链接到你配置的本地工程
<3> 开始愉快地开发调试,在 SDK 代码中修改的代码,运行宿主 app 后都可以直接看到效果~

04. 运行宿主 app 调试

运行采用委托的方式,执行 gradle task,或点击 IDE 对应的 task 执行:

./gradlew runApp

最终会调用配置中的 app_run_task

3. Q&A

RD: kuangzhongwen@58.com

(1) Minimum supported Gradle version is x.x.x. Current version is x.x.x.

统一 APP 工程 & SDK 工程的 /gradle/wrapper/gradle-wrapper.properties 中的 gradle 版本 (建议提交,避免下次修改)

(2) Using multiple versions of the Android Gradle plugin in the same build is not allowed.

统一 APP 工程 & SDK 工程的 gradle 插件版本 (建议提交,避免下次修改)

(3) This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled.

统一 APP 工程 & SDK 工程 androidx 设置 (android.useAndroidX=true),如果一个开启一个不开启则会报此问题 (建议提交,避免下次修改)

(4) 关于 app_run_task

(1) app 宿主工程运行 task,格式为 appModuleName:install{KaTeX parse error: Expected 'EOF', got '}' at position 7: flavor}̲Debug or appMod…flavor}Debug,比如 app module 为 58WuxianClient, flavor 为 ‘wuba’,那么 app_run_task 为 58WuxianClient:installWubaDebug,如果无 flavor,则为 58WuxianClient:installDebug

(2) 如果宿主工程为 AAB 模式,建议关闭,否则需要在宿主 App 中定义 AAB 运行任务供 Tunable 配置

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值