找不到用于签名配置'release'的密钥库。-React Native

Kar*_*eya 13 mobile android react-native signed-apk

我正在尝试生成一个Signed APKfor react本机项目。按照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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我已将密钥库文件放在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=*****
Run Code Online (Sandbox Code Playgroud)

执行时cd android && ./gradlew assembleRelease

它的构建失败

任务':app:validateSigningRelease'的执行失败。找不到用于签名配置“发布”的密钥库文件/Users/username/Projects/appMobile/android/app/sampleReleasekeyStore.jks。

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

Ale*_*Pad 13

这种情况下的问题是路径。正如您上面已经提到的,在应用程序文件夹中输入密钥。然后在您的 .properties 中,不要命名整个路径,因为您已经在您的项目/应用程序中..您只需要输入密钥的名称:

storePassword=my_password
keyPassword=my_password
keyAlias=key
storeFile=key.jks
Run Code Online (Sandbox Code Playgroud)


小智 5

它对我有用!

  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。

在此处输入图片说明


Rod*_*res 5

  1. 开启Android Studio
  2. 将密钥库文件拖放到应用程序文件夹中
  3. 单击文件->同步项目

  • 尝试了一切,这是唯一有效的方法。谢谢。 (2认同)

Dev*_*ski 5

// 对于 Mac 用户 第 1 步命令。

keytool -genkey -v -keystore ~/ksk.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ksk 
Run Code Online (Sandbox Code Playgroud)

//对于Windows用户第1步命令。

keytool -genkey -v -keystore C:/Users/USER_NAME/ksk.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias ksk
Run Code Online (Sandbox Code Playgroud)

//注意:请在终端中运行上述命令。输入每个输入值,例如名字和姓氏、组织名称、密码、城市、国家/地区代码等。

//第2步。适用于 Mac 和 Windows。创建文件 key.properties “key”文件名和“properties”文件扩展名。

//注意:将其保存在您的项目 android 文件夹中。

//步骤3. 对于 Mac 和 Windows // 编辑 key.properties 文件。创建 jks 文件时,插入以下行以及终端中使用的适当值。

storePassword=storepassword
keyPassword=password
keyAlias=ksk
storeFile=C:\\Users\\USER_NAME\\Desktop\\ksk.jks
Run Code Online (Sandbox Code Playgroud)

//注意如果是Mac用户,storeFile应该是storeFile=/Users/USER_NAME/ksk.jks

// 步骤4 编辑build.gradle 文件。将以下两个块复制粘贴到 defaultConfig 块之后,替换现有的builtTypes时钟

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
    
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}
Run Code Online (Sandbox Code Playgroud)

//Step 5 编辑build.gradle文件 在 android { ... 之前添加以下代码块

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
Run Code Online (Sandbox Code Playgroud)

//第6步运行命令

flutter Clean
Run Code Online (Sandbox Code Playgroud)

//第7步运行命令。

flutter build appbundle --release 
Run Code Online (Sandbox Code Playgroud)

//如果是AS菜单

Build > Flutter > Build App Bundle
Run Code Online (Sandbox Code Playgroud)

//现在它应该在项目目录中构建包

`build/app/output/bundle/release/app-release.aab`
Run Code Online (Sandbox Code Playgroud)

//一切顺利。


小智 2

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

MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore
Run Code Online (Sandbox Code Playgroud)