找不到用于签署配置'release'的密钥库.- React native

问题描述 投票:6回答:5

我正在尝试为本机项目生成一个Signed APK。跟随android的步骤并反应原生文档。

我的Build.gradle文件

android {
compileSdkVersion 23
buildToolsVersion '26.0.2'

defaultConfig {
    applicationId "com.appmobile"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
signingConfigs {
    release {
        if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
        // minifyEnabled enableProguardInReleaseBuilds
        // proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86"
    }
}
// buildTypes {
//     release {
//         minifyEnabled enableProguardInReleaseBuilds
//         proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
//     }
// }
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
        def versionCodes = ["armeabi-v7a":1, "x86":2]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }
    }
}

}

我已将密钥库文件放在Android/app目录中

我的grade.properties

    android.useDeprecatedNdk=true
MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore.jks
MYAPP_RELEASE_KEY_ALIAS=*****
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

执行cd android && ./gradlew assembleRelease时。

它投掷Build失败了

任务':app:validateSigningRelease'的执行失败。密钥库文件/用户/用户名/项目/应用程序移动/ android / app / sample发现未找到用于签署配置'发布'的keyStore.jks。

我正在使用Mac环境。请让我知道我哪里出错了。

android react-native mobile signed-apk
5个回答
4
投票

它对我有用!

  1. https://facebook.github.io/react-native/docs/signed-apk-android.html
  2. 像图片一样打开终端(图书馆 - > Android - > ...)
  3. keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
  4. 当前文件夹中的xxxx.keystore。

enter image description here


2
投票
  1. 打开Android Studio
  2. 将密钥库文件拖放到app文件夹上
  3. 单击文件 - >同步项目

1
投票

尝试从.jks删除MYAPP_RELEASE_STORE_FILE,它对我有用。

MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore

0
投票

我注意到Gradle总是在android / app路径中查找这个文件。 (硬编码也许)

在您的情况下,将sampleReleasekeyStore.jks放在路径中;

/Users/username/Projects/appMobile/android/app/

提示:只需查看错误并将文件放在错误中指定的文件夹中。


0
投票

只需将rootProject.File添加到storeFile即可访问密钥库。

if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
        storeFile rootProject.file(MYAPP_RELEASE_STORE_FILE)
        storePassword MYAPP_RELEASE_STORE_PASSWORD
        keyAlias MYAPP_RELEASE_KEY_ALIAS
        keyPassword MYAPP_RELEASE_KEY_PASSWORD
    }
© www.soinside.com 2019 - 2024. All rights reserved.