You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React Native+Expo ejected项目安卓INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME报错求助

解决React Native Expo Eject后Android的INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME错误

嘿,我来帮你搞定这个Android打包错误!这个报错的核心原因其实很明确:Android系统强制要求应用包名必须包含至少一个.分隔符,这是为了保证包名的唯一性(遵循反向域名的命名规范,比如com.yourname.yourapp这类格式)。

虽然你觉得包名合规,但咱们先仔细核对一下关键配置里的细节:

常见错误场景及修复步骤

  1. 检查AndroidManifest的package属性
    打开你的AndroidManifest.xml,找到根标签<manifest>package属性。如果它是类似下面这种没有点的格式:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="MyReactApp"> <!-- 这里没有点,不符合Android要求 -->
    

    那这就是问题根源!你需要把它改成带点的合法格式,比如结合你的名字或项目名来命名:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.jamesjohnson.myreactapp">
    
  2. 同步build.gradle的applicationId
    修改Manifest后,还要确保android/app/build.gradle里的applicationId和Manifest的package值完全一致——Android最终是用applicationId作为应用的唯一标识的:

    defaultConfig {
        applicationId "com.jamesjohnson.myreactapp" // 必须和Manifest的package匹配
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
    }
    
  3. 同步项目并重新编译
    在Android Studio里点击File > Sync Project with Gradle Files,等同步完成后再重新运行项目,这个错误应该就会消失了。

为什么iOS没问题?

因为iOS对Bundle ID的命名规则虽然也推荐反向域名格式,但并没有强制要求必须包含点分隔符,所以你的应用在iOS上能正常运行,而Android会严格校验这一点。

内容的提问来源于stack exchange,提问作者James Johnson

火山引擎 最新活动