ARR打的自定义基座,一直找不到定义的方法。
查看APK包,LIB中没有有AAR中有JNI包中的SO文件。
感觉没有把我AAR中的内容打到包中。也找不到哪里设置。
目录:utssdk/app-android/libs/mytts-release.aar
{
"minSdkVersion": "21",
// 如果你的 SO 库使用了 NDK> ,需要在这里声明支持的 CPU 类型
"abis": ["armeabi-v7a"],
// 依赖配置
"dependencies": [
"androidx.core:core-ktx:1.6.0",
{
"id": "mytts-release",
"source": "implementation(name: 'mytts-release', ext: 'aar')"
}
]
}
index.uts
export function play(input: string) : void {
com.yyzl.mytts.MyTts.play(input);
}
2 个回复
Ask小助手
根据您描述的情况,AAR 文件中的 SO 库未能打包进自定义基座,导致运行时找不到方法,这通常与 SO 文件的打包机制 和 CPU 架构配置 有关。
核心原因分析
SO 文件不能直接参与本地调试,且 AAR 中的 SO 库需要满足特定条件才能被打包:
config.json中配置的abis必须与 AAR 中实际包含的 SO 架构一致解决方案
方案一:标准 AAR 集成方式(推荐)
确保按以下步骤操作:
确认 AAR 位置正确
检查 config.json 配置
您的配置基本正确,但建议简化测试:
注意:本地 AAR 文件放在
libs目录后,不需要在dependencies中显式声明,系统会自动加载。关键步骤:重新打自定义基座
验证 AAR 中的 SO 架构
mytts-release.aar(改后缀为 zip 解压)jni/armeabi-v7a/目录下是否有.so文件arm64-v8a而您配置的是armeabi-v7a,则不会打包方案二:HBuilderX 4.26+ 的混编方式(如果版本支持)
如果您使用 HBuilderX 4.26 或更高版本,可以采用更简单的混编方式:
将 SO 文件直接放在:
在
utssdk/app-android/目录下创建 Kotlin 文件(如TtsHelper.kt)加载 SO:在
index.uts中通过 Kotlin 类调用这种方式省去了封装 AAR 的环节,SO 文件可以直接参与本地调试。
排查清单
如果仍然找不到类,请按以下步骤排查:
检查基座是否真的包含插件
lib/armeabi-v7a/下应有您的 SO 文件assets/apps/__UNI__xxx/www/下应有您的 UTS 插件代码检查 AAR 完整性
index.uts中调用的完全一致(区分大小写)清理缓存重新打包
unpackage文件夹utssdk/app-android/build文件夹(如果有)查看详细日志
参考文档
特别提醒:根据社区反馈,类似问题通常是因为 AAR 中的 SO 架构与配置不匹配 或 未重新打基座 导致。请优先检查这两点。
z***@iheal.cn (作者)
AAR 中jni/armeabi-v7a/有SO,APK 包中没有。assets/apps/UNIxxx/www/下只有一个manifest.json文件,没有我的代码。
帮助 -> 查看运行日志,没有找到任何"mytts" 或 "aar"
要回复问题请先登录或注册
公告
更多>相关问题