我正在尝试为反应原生项目生成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
时。
投掷构建失败
任务执行失败':app:validateSigningRelease'。 未找到用于签署配置'发布'的密钥库文件/Users/username/Projects/appMobile/android/app/sampleReleasekeyStore.jks。
我正在使用Mac环境。请让我知道我哪里出错了。
答案 0 :(得分:4)
对我有用!
答案 1 :(得分:1)
尝试从.jks
删除MYAPP_RELEASE_STORE_FILE
,它对我有用。
MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore
答案 2 :(得分:1)
答案 3 :(得分:1)
转到您的应用文件夹
cd android
cd应用
并使用此命令生成调试密钥
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
用于发布APK
keytool -genkey -v -keystore release.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
答案 4 :(得分:1)
//对于Mac用户 第1步命令。
keytool -genkey -v -keystore ~/ksk.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ksk
//对于Windows用户 第1步命令。
keytool -genkey -v -keystore C:/Users/USER_NAME/ksk.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias ksk
//注意:请在终端中运行以上命令。输入每个输入值,例如名字和姓氏,组织名称,密码,城市,国家/地区代码等。
// Step2。对于Mac和Windows。创建文件key.properties“密钥”文件名和“ properties”文件扩展名。
//注意:将其保存在您的项目android文件夹中。
// Step3。对于Mac和Windows //编辑key.properties文件。在创建jks文件时,插入以下行,并在终端中使用适当的值。
storePassword=storepassword
keyPassword=password
keyAlias=ksk
storeFile=C:\\Users\\USER_NAME\\Desktop\\ksk.jks
//注意,对于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
}
}
//第5步编辑build.gradle文件在android {...
之前添加以下代码块def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
//第6步运行命令
flutter Clean
//步骤7运行命令。
flutter build appbundle --release
//如果是AS菜单
Build > Flutter > Build App Bundle
//现在,它应该在项目目录中构建捆绑包
`build/app/output/bundle/release/app-release.aab`
//祝一切顺利。
答案 5 :(得分:0)
我注意到Gradle总是在android / app路径中查找此文件。 (也许是硬编码的)
在您的情况下,将sampleReleasekeyStore.jks放在路径中;
/Users/username/Projects/appMobile/android/app/
提示:只需查看错误,然后将文件放入错误中指定的文件夹中即可。
答案 6 :(得分: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
}
答案 7 :(得分:0)
在我的情况下,当我尝试在 MacOS 上打开在Windows中创建的项目时触发了此错误。
即使将密钥库文件添加到应用程序文件夹,也显示错误。
Android Studio似乎完全忽略了myProject / android / gradle.properties文件
我必须按如下所示设置本地~/.gradle/gradle.properties
文件
MYAPP_RELEASE_STORE_FILE=<file-release.keystore>
MYAPP_RELEASE_KEY_ALIAS=<key-alias>
MYAPP_RELEASE_STORE_PASSWORD=<password>
MYAPP_RELEASE_KEY_PASSWORD=<keyPassword>
答案 8 :(得分:0)
在这种情况下,问题是路径。如上所述,请在app文件夹中输入密钥。 然后,在您的.properties中,不要命名整个路径,因为您已经在项目/应用程序中了..您只需输入密钥的名称:
storePassword=my_password
keyPassword=my_password
keyAlias=key
storeFile=key.jks
答案 9 :(得分:0)
有时您可以同时使用'MYAPP_UPLOAD_STORE_FILE'
和'MYAPP_RELEASE_STORE_FILE'
。确保名称在gradles.properties
和build.gradle
之间匹配(对于所有属性)。
答案 10 :(得分:0)
在我的情况下,当没有.jks扩展名时,本机项目问题就来了。添加.jks扩展名解决了该问题
MYAPP_UPLOAD_STORE_FILE=upload.keystore.jks
MYAPP_UPLOAD_KEY_ALIAS=upload
MYAPP_UPLOAD_STORE_PASSWORD=**
MYAPP_UPLOAD_KEY_PASSWORD=**
signingConfigs {
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
}
```
答案 11 :(得分:0)
在终端/命令提示符下输入以下命令:
keytool -genkey -v -keystore your_keystore_fileName.keystore -alias your_alias -keyalg RSA -keysize 2048 -validity 10000
输入提示的详细信息。
确保生成的文件在 android/app 下。如果没有,将文件剪切并粘贴到 android/app 下。
在android/app下-> build.gradle:
signingConfigs {
release {
storeFile file('your_keystore_fileName.keystore')
storePassword 'password_that_you_set'
keyAlias 'Partnerkey0'
keyPassword 'password_that_you_set'
}
}