You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native构建Release成功仅生成app-release-unsigned.apk问题

解决React Native打包仅生成app-release-unsigned.apk的问题

嘿,我完全懂你现在的困惑——明明终端飘着BUILD SUCCESSFUL的提示,翻遍输出目录却只拿到一个未签名的APK,再加上对Gradle打包这块不太熟,肯定有点头大对吧?别慌,咱们一步步把这个问题捋清楚。

首先得先搞明白:生成app-release-unsigned.apk其实是React Native release构建的正常中间步骤,但要得到能用来发布的签名APK,还得完成签名配置这关键一环。你大概率是在文档流程里漏了签名配置的部分,或者配置没生效。

下面是针对你的情况的具体解决步骤,我尽量说得直白点,避开复杂的Gradle术语:

第一步:先确认你有没有生成签名密钥

如果你还没创建过签名密钥,先在终端里执行这个命令(记得把括号里的内容换成你自己的信息):

keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

执行完会生成一个my-upload-key.keystore文件,把它放到你的项目android/app/目录下(别把这个文件提交到版本控制里!)

第二步:配置Android项目的签名信息

打开android/app/build.gradle文件,找到android代码块,按下面的方式添加/修改签名配置:

android {
    // 其他已有的配置...
    
    signingConfigs {
        release {
            // 如果你把密钥文件放在app目录下,路径就这么写
            storeFile file('my-upload-key.keystore')
            storePassword '你创建密钥时设置的密钥库密码'
            keyAlias '你创建密钥时设置的别名(比如上面的my-key-alias)'
            keyPassword '你创建密钥时设置的密钥密码'
        }
    }

    buildTypes {
        release {
            // 其他已有的配置(比如minifyEnabled之类的)...
            
            // 这一行是核心!必须让release构建使用上面的签名配置
            signingConfig signingConfigs.release
        }
    }
}

⚠️ 要是担心密码明文泄露,可以把密码移到android/gradle.properties文件里:
在gradle.properties里添加:

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_STORE_PASSWORD=你的密钥库密码
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_KEY_PASSWORD=你的密钥密码

然后把build.gradle里的签名配置改成:

signingConfigs {
    release {
        storeFile file(MYAPP_UPLOAD_STORE_FILE)
        storePassword MYAPP_UPLOAD_STORE_PASSWORD
        keyAlias MYAPP_UPLOAD_KEY_ALIAS
        keyPassword MYAPP_UPLOAD_KEY_PASSWORD
    }
}

第三步:重新执行构建命令

先清理一下之前的构建缓存,避免旧配置干扰:

cd android && ./gradlew clean

然后重新构建release版本:

./gradlew assembleRelease

(Windows系统直接执行gradlew assembleRelease就行)

现在再去android/app/build/outputs/apk/release/目录看看,应该会同时出现app-release.apk(这就是签名好的可发布APK)和app-release-unsigned.apk(中间产物,不用管它)

几个容易踩的小坑

  • 确认密钥文件的路径正确:如果你的my-upload-key.keystore没放在app目录下,要调整storeFile的路径,比如file('../my-upload-key.keystore')
  • 一定要检查buildTypes的release块里有没有signingConfig signingConfigs.release这一行,很多人就是漏了这个,导致Gradle只生成未签名APK
  • 要是之前配置过签名但没生效,先执行./gradlew clean再重新构建,缓存有时候会搞事情

你的node和npm版本虽然偏旧,但只要和你使用的React Native版本兼容,就不会影响打包,核心问题还是Gradle的签名配置没跟上。

内容的提问来源于stack exchange,提问作者Jamie Jamier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:39:15