执行npx react-native run-android至99%时构建失败的问题求助
解决React Native安卓构建99%失败(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED)的问题
问题定位
你遇到的错误核心是:目标SDK为31+(Android 12及以上)时,带有Intent Filter的组件必须显式声明android:exported属性,但报错指向的是androidx.media.session.MediaButtonReceiver,不是你自己的MainActivity——这就是你修改自己Activity的exported属性没用的原因。这个Receiver来自某个依赖库,它的Manifest配置不符合Android 12+的要求。
解决方案
方案1:在你的Manifest中显式声明该Receiver并补全属性
在AndroidManifest.xml的<application>标签内部添加以下代码,强制给这个Receiver加上android:exported属性:
<receiver android:name="androidx.media.session.MediaButtonReceiver" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver>
注:如果你的应用不需要接收媒体按钮事件,也可以设为
android:exported="false",但通常设为true更合理。
方案2:升级相关依赖库
找到引入MediaButtonReceiver的依赖(比如安卓media库、或是React Native的某个第三方依赖),将其升级到适配Android 12+的版本——这些新版本会自动在组件中添加android:exported属性,从根源解决问题。
方案3:临时降低目标SDK版本(不推荐)
如果只是临时需要运行应用,可以在android/app/build.gradle中修改targetSdkVersion为30:
android { defaultConfig { // ... targetSdkVersion 30 // ... } }
注:这只是临时方案,长期来看还是需要适配Android 12+的要求。
验证
完成上述操作后,重新执行命令:
npx react-native run-android
内容的提问来源于stack exchange,提问作者MOHAMMAD SIDDIQUE
相关产品推荐
相关产品推荐

