我正在尝试为本机项目生成一个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环境。请让我知道我哪里出错了。
它对我有用!
尝试从.jks
删除MYAPP_RELEASE_STORE_FILE
,它对我有用。
MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore
我注意到Gradle总是在android / app路径中查找这个文件。 (硬编码也许)
在您的情况下,将sampleReleasekeyStore.jks放在路径中;
/Users/username/Projects/appMobile/android/app/
提示:只需查看错误并将文件放在错误中指定的文件夹中。
只需将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
}