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

15 回复

崩溃日志发一下

更多关于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'
});
回到顶部