Android Studio阿拉伯语环境下classes٢.dex与classes2.dex不匹配错误求助
解决「Invalid dex file indices, expecting file 'classes٢.dex' but found 'classes2.dex'」错误
问题原因
当设备系统语言为阿拉伯语时,Android构建工具会使用阿拉伯-Indic数字(如٢)生成多DEX文件名,但运行时系统或构建链的部分环节期望的是ASCII阿拉伯数字(如2),导致文件名不匹配触发错误。切换系统语言为英语时,构建工具自动使用ASCII数字,因此错误消失。
解决方案
1. 强制构建工具使用ASCII数字生成DEX文件名
在build.gradle(:app)的android代码块中添加配置,强制构建时使用ASCII字符集处理文件名:
android { // 保留原有配置... dexOptions { javaMaxHeapSize "4g" additionalParameters "--force-utf8" } aaptOptions { additionalParameters "--force-utf8" } }
如果上述配置无效,可补充指定资源语言范围,确保数字格式统一:
android { // 保留原有配置... defaultConfig { // 保留原有配置... resConfigs "en", "ar" } }
2. 清理并重新构建项目
执行Android Studio的以下操作彻底清除旧构建缓存:
- 菜单栏选择
Build > Clean Project - 接着选择
Build > Rebuild Project - 最后选择
File > Invalidate Caches...,点击Invalidate and Restart
3. 优化MultiDex依赖(可选)
你的依赖中使用的是旧版支持库的MultiDex,建议替换为AndroidX版本以适配更高版本的Android系统:
// 替换原有 implementation 'com.android.support:multidex:1.0.3' implementation 'androidx.multidex:multidex:2.0.1'
同时确保自定义Application类正确初始化MultiDex:
public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
4. 清理重复依赖(可选)
你的依赖中存在重复引入的库(如Glide多次引入不同版本),可能导致构建逻辑混乱,建议统一版本并移除重复项:
// 移除重复的Glide依赖,保留最新版本即可 implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
验证方法
完成上述配置后,保持设备语言为阿拉伯语,重新运行项目,检查是否还会出现DEX文件名不匹配的错误。
内容的提问来源于stack exchange,提问作者ABU Ali14Q
相关产品推荐
相关产品推荐

