uni-app 打包为安卓后使用录音并加入官方mp3文件支持模块audio-mp3aac-release.aar出现闪退问题 请uni-app团队答复
uni-app 打包为安卓后使用录音并加入官方mp3文件支持模块audio-mp3aac-release.aar出现闪退问题 请uni-app团队答复
示例代码:
点击录音3秒后必定闪退
### 操作步骤:
点击录音3秒后必定闪退
预期结果:
点击录音不闪退
### 实际结果:
点击录音3秒后必定闪退
bug描述:
将文件打包为安卓app。需要使用mp3格式。需要将压缩包里的audio-mp3aac-release.aar
文件放入安卓sdk中。然后制作为apk,运行在模拟器或者手机中,点击录音3秒后必定闪退。
以下是崩溃日志:
BOARD:EBG
BOOTLOADER:unknown
BRAND:HONOR
CPU_ABI:arm64-v8a
CPU_ABI2:
DEVICE:HWEBG
DISPLAY:EBG-AN00 4.0.0.118(C00E116R4P4)
FINGERPRINT:HONOR/EBG-AN00/HWEBG:12/HUAWEIEBG-AN00/104.0.0.118C00:user/release-keys
FINGERPRINTEX:HONOR/EBG-AN00/HWEBG:12/HUAWEIEBG-AN00/104.0.0.118C00:user/release-keys
HARDWARE:kirin990
HOST:cn-west-hcd-5a-57c670e1698663879709-856645899-vzj77
HWFINGERPRINT:///EBG-LGRP1-CHN 4.0.0.118/EBG-AN00-CUST 4.0.0.116(C00)/EBG-AN00-PRELOAD 4.0.0.4(C00R4)/
ID:HUAWEIEBG-AN00
IS_DEBUGGABLE:false
IS_EMULATOR:false
MANUFACTURER:HUAWEI
MODEL:EBG-AN00
ODM_SKU:EBG-AN00
PERMISSIONS_REVIEW_REQUIRED:true
PRODUCT:EBG-AN00
RADIO:unknown
SERIAL:unknown
SKU:unknown
SOC_MANUFACTURER:hisilicon
SOC_MODEL:kirin
SUPPORTED_32_BIT_ABIS:[Ljava.lang.String;@e078dee
SUPPORTED_64_BIT_ABIS:[Ljava.lang.String;@a8a228f
SUPPORTED_ABIS:[Ljava.lang.String;@cf2791c
TAGS:release-keys
TIME:1698669798000
TYPE:user
UNKNOWN:unknown
USER:test
java.lang.NoClassDefFoundError: Failed resolution of: Lio/dcloud/feature/audio/mp3/SimpleLame;
at io.dcloud.feature.audio.recorder.RecorderTask.init(Unknown Source:18)
at io.dcloud.feature.audio.recorder.RecorderTask.run(Unknown Source:7)
Caused by: java.lang.ClassNotFoundException: io.dcloud.feature.audio.mp3.SimpleLame
... 2 more
附件:
更多关于uni-app 打包为安卓后使用录音并加入官方mp3文件支持模块audio-mp3aac-release.aar出现闪退问题 请uni-app团队答复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
崩溃日志发一下
更多关于uni-app 打包为安卓后使用录音并加入官方mp3文件支持模块audio-mp3aac-release.aar出现闪退问题 请uni-app团队答复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
好的,已经重新修改了问题内容。发出来了
您好,官方大哥。请问有看到吗
试试看,我亲测有效,华为Meta50模拟器。
1、把format改为amr格式,
const options = {
duration: this.duration, // 指定录音的时长,单位 ms
sampleRate: 16000, // 采样率
numberOfChannels: 1, // 录音通道数
encodeBitRate: 96000, // 编码码率
format: ‘amr’,
frameSize: 10, // 指定帧大小,单位 KB
};
uni.getRecorderManager().start(options);
2、把audio-mp3aac-release.aar放到libs中
3、Androidmainfest.xml文件需要修改的项,需要在application节点前添加权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
这位老哥的方法可以,兄弟们可以试一下
看奔溃日志是:这个错误在应用程序在运行时无法加载名为SimpleLame的类,该类应该位于io.dcloud.feature.audio.mp3包中。这可能是由于某些原因,如编译时遗漏该类或动态库,导致在应用运行时出现ClassNotFoundException。
同问,出现一样的问题,我这边要录制的必须录制MP3的文件,报错
FATAL EXCEPTION: Thread-11
Process: com.knock.story, PID: 14262
java.lang.NoClassDefFoundError: Failed resolution of: Lio/dcloud/feature/audio/mp3/SimpleLame;
at io.dcloud.feature.audio.recorder.RecorderTask.init(Unknown Source:18)
at io.dcloud.feature.audio.recorder.RecorderTask.run(Unknown Source:7)
Caused by: java.lang.ClassNotFoundException: Didn’t find class “io.dcloud.feature.audio.mp3.SimpleLame” on path: DexPathList[[zip file “/data/app/ehgiiBhWO2awq15dSVm8qg==/com.knock.story-PQHYOHpj5aKN6bNC7MM-nQ==/base.apk”],nativeLibraryDirectories=[/data/app/ehgiiBhWO2awq15dSVm8qg==/com.knock.story-PQHYOHpj5aKN6bNC7MM-nQ==/lib/arm64, /data/app/~~ehgiiBhWO2awq15dSVm8qg==/com.knock.story-PQHYOHpj5aKN6bNC7MM-nQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at io.dcloud.feature.audio.recorder.RecorderTask.init(Unknown Source:18)
at io.dcloud.feature.audio.recorder.RecorderTask.run(Unknown Source:7)
已解决!!!!
怎么解决的哥
回复 2***@qq.com: 更新官网最新SimpleLame包
大佬,解决了吗
我把audio-mp3aac-release.aar 文件放入到libs里面之后编译就会报下面这个错了
Duplicate class io.dcloud.feature.audio.mp3.SimpleLame found in modules jetified-audio-mp3aac-release-runtime (audio-mp3aac-release.aar) and jetified-lib.5plus.base-release-runtime (lib.5plus.base-release.aar)
删掉audio-mp3aac-release.aar这个库再试一下
回复 DCloud_Android_zl: 删除了不报错,但是使用录音功能的时候会有弹出提示打包时未添加录音支持mp3格式文件模块
在使用 uni-app 打包为安卓应用时,如果集成了官方的 audio-mp3aac-release.aar
模块并出现闪退问题,可能是由于以下几个原因导致的:
1. 模块版本不兼容
- 问题描述:
audio-mp3aac-release.aar
模块的版本可能与当前 uni-app 的版本不兼容。 - 解决方法:确保使用的
audio-mp3aac-release.aar
模块与 uni-app 的版本相匹配。可以尝试更新 uni-app 到最新版本,或者下载与当前 uni-app 版本兼容的audio-mp3aac-release.aar
模块。
2. 权限问题
- 问题描述:录音功能需要获取麦克风权限,如果应用没有正确申请权限,可能会导致闪退。
- 解决方法:在
AndroidManifest.xml
文件中添加以下权限声明:
并且在代码中动态申请这些权限。<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
3. 模块未正确集成
- 问题描述:
audio-mp3aac-release.aar
模块可能没有正确集成到项目中。 - 解决方法:确保
audio-mp3aac-release.aar
文件被正确放置到libs
目录下,并且在build.gradle
文件中正确引用:dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) }
4. 代码逻辑问题
- 问题描述:在调用录音功能时,可能存在代码逻辑错误,导致应用崩溃。
- 解决方法:检查录音相关的代码逻辑,确保在调用录音功能时,相关资源已经正确初始化,并且在适当的时机释放资源。
5. 资源冲突
- 问题描述:
audio-mp3aac-release.aar
模块可能与项目中其他依赖库存在资源冲突。 - 解决方法:检查项目中是否存在其他依赖库与
audio-mp3aac-release.aar
模块冲突,尝试排除冲突的依赖库。
6. 日志分析
- 问题描述:闪退问题可能是由于某些异常或错误导致的。
- 解决方法:通过查看 Android 的日志输出(如 Logcat)来定位具体的错误信息,根据错误信息进行进一步的排查和修复。
7. 联系官方支持
- 问题描述:如果以上方法都无法解决问题,可能是 uni-app 或
audio-mp3aac-release.aar
模块本身存在 bug。 - 解决方法:可以联系 uni-app 官方支持团队,提供详细的错误日志和复现步骤,以便他们进一步排查问题。
示例代码
// 在 uni-app 中调用录音功能
const recorderManager = uni.getRecorderManager();
recorderManager.onStart(() => {
console.log('recorder start');
});
recorderManager.onStop((res) => {
console.log('recorder stop', res.tempFilePath);
});
recorderManager.start({
format: 'mp3'
});