React Native构建VPN应用报错:cannot find symbol资源缺失
解决React Native VPN库编译时找不到
abc_ic_star_black_48dp资源的问题 错误原因
第三方库react-native-ip-sec-vpn引用了AndroidX AppCompat库中已被移除的旧资源abc_ic_star_black_48dp,新版本AppCompat已删除该资源,导致编译失败。
解决方案
方案1:替换图标资源(推荐)
直接将代码中引用的旧图标替换为系统自带图标或自定义图标:
- 打开文件:
node_modules/react-native-ip-sec-vpn/android/src/main/java/org/strongswan/android/logic/CharonVpnService.java - 定位到374、382、409行,将
androidx.appcompat.R.drawable.abc_ic_star_black_48dp替换为:- 系统自带图标,比如
android.R.drawable.ic_notification_overlay(或其他符合需求的系统图标) - 自定义图标:将你的图标文件放到该模块的
android/src/main/res/drawable目录,然后替换为R.drawable.your_custom_icon_name
- 系统自带图标,比如
方案2:锁定AppCompat旧版本
如果不想替换图标,可以指定使用仍包含该资源的AppCompat旧版本:
- 打开该库的安卓模块配置文件:
node_modules/react-native-ip-sec-vpn/android/build.gradle - 在
dependencies块中添加或修改AppCompat依赖:
dependencies { implementation 'androidx.appcompat:appcompat:28.0.0' }
- 重新执行
yarn android编译项目
注意:锁定旧版本可能会和项目中其他依赖产生版本冲突,需谨慎使用。
内容的提问来源于stack exchange,提问作者rurjaf
相关产品推荐
相关产品推荐

