欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
根据你的描述,问题出在 compileOnly 这个依赖配置方式上。
原因分析
compileOnly 表示只在编译时依赖,打包时不会将该依赖及其资源包含进去。你的插件代码中用到了 Theme.AppCompat.Light.DarkActionBar 这类 AppCompat 的资源,编译时因为 compileOnly 能找到对应类和资源所以正常通过,但离线打包时由于该依赖没有被实际打包进 APK,aapt2 链接资源时就会报 resource style/Theme.AppCompat.Light.DarkActionBar not found。
在线打包没问题,是因为云端打包环境对 uts 插件的依赖处理机制与离线不同,云端可能会自动合并或包含部分常用 AndroidX 依赖。
解决方案
方式一:在 uts 插件的 config.json 中声明依赖
在 uts 插件的 config.json 文件中,通过 dependencies 字段声明依赖,而不是使用 compileOnly:
{
"dependencies": [
"androidx.appcompat:appcompat:1.1.0"
]
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
这种方式会将依赖以 implementation 的方式引入,打包时会正确包含依赖及其资源。
方式二:在离线打包的原生工程 build.gradle 中添加依赖
如果你是在离线打包的原生工程中配置,需要在原生工程的 build.gradle 的 dependencies 节点下使用 implementation 引入,而不是 compileOnly:
dependencies {
implementation "androidx.appcompat:appcompat:1.1.0"
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
具体配置方式可以参考官方文档中的 Android 平台 uni-app 原生插件集成指南 - 配置 gradle 文件,其中明确列出了需要添加的依赖列表,包括 androidx.appcompat:appcompat:1.1.0。
总结
核心问题就是把 compileOnly 改为 implementation(或在 config.json 的 dependencies 中声明),确保打包时依赖及其资源被正确包含。修改后重新打自定义基座即可。