我正在尝试生成Android Apk,我已经如下设置了buildTypes
和signingConfigs
:
android {
signingConfigs {
release {
storeFile file('/Users/admin/Desktop/TestProject/Other/test')
keyAlias = 'key0'
storePassword '123456'
keyPassword '123456'
}
dev {
storeFile file('/Users/admin/Desktop/TestProject/Other/test')
keyAlias = 'key0'
storePassword '123456'
keyPassword '123456'
}
}
compileSdkVersion 28
defaultConfig {
applicationId "com.example.test"
minSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.TestAbstract.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
debuggable true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
dev {
debuggable = true
signingConfig signingConfigs.dev
}
}
dataBinding {
enabled = true
}
}
========== EDIT ========
我已经通过构建->生成签名的APK->(输入密钥库详细信息)->选择构建变体来生成Apk。
但是它没有在gradle中显示任何assembleDev或assembleRelease。
但是它没有在gradle中显示类似{strong> assembleRelease 或 assembleDev 的gradle
。
我错过了什么吗?
谢谢。
答案 0 :(得分:0)
在android studio中,转到Build-> Generate Signed APK->(输入密钥库详细信息)->选择Build变体(在这里您将看到在gradle文件中声明的变体)
答案 1 :(得分:0)
这是可工作的gradle设置。只需应用您的signingConfigs。
对于项目级别gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.google.com/' }
maven { url "https://jitpack.io" }
maven { url 'https://tokbox.bintray.com/maven' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.google.gms:google-services:4.3.0'
// These docs use an open ended version so that our plugin
// can be updated quickly in response to Android tooling updates
// We recommend changing it to the latest version from our changelog:
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath 'io.fabric.tools:gradle:1.29.0'
}
}
allprojects {
allprojects {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
repositories {
google()
jcenter()
maven {
url "https://jitpack.io"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
对于应用级别gradle:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
bundle {
density {
// Different APKs are generated for devices with different screen densities; true by default.
enableSplit true
}
abi {
// Different APKs are generated for devices with different CPU architectures; true by default.
enableSplit true
}
language {
// This is disabled so that the App Bundle does NOT split the APK for each language.
// We're gonna use the same APK for all languages.
enableSplit false
}
}
repositories {
maven { url 'https://maven.fabric.io/public' }
}
// https://stackoverflow.com/questions/52521302/how-to-solve-program-type-already-present-com-google-common-util-concurrent-lis
configurations {
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}
signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('./YOUR.production.jks')
storePassword 'xxx'
}
}
flavorDimensions 'default'
compileSdkVersion 28
defaultConfig {
multiDexEnabled true
targetSdkVersion 28
versionCode 21
versionName "0.3.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
apply from: "./buildTypes.gradle", to: android
productFlavors {
production {
applicationId "com.your.package"
minSdkVersion 21
targetSdkVersion 28
signingConfig signingConfigs.config
proguardFile './proguard-rules.pro'
}
dev {
minSdkVersion 21
applicationId "com.your.package.dev"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation group: 'androidx.appcompat', name: 'appcompat', version: '1.0.2'
implementation group: 'androidx.cardview', name: 'cardview', version: '1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation group: 'androidx.preference', name: 'preference', version: '1.0.0'
implementation group: 'com.firebaseui', name: 'firebase-ui-firestore', version: '4.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation group: 'androidx.arch.core', name: 'core-runtime', version: '2.0.1'
implementation group: 'com.google.firebase', name: 'firebase-auth', version: '16.1.0'
implementation group: 'com.google.firebase', name: 'firebase-core', version: '16.0.9'
implementation group: 'com.google.android.gms', name: 'play-services-auth', version: '17.0.0'
implementation group: 'com.google.android.gms', name: 'play-services-analytics', version: '17.0.0'
implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
transitive = true;
}
implementation 'com.github.javiersantos:MaterialStyledDialogs:2.1'
implementation 'androidx.appcompat:appcompat:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
apply plugin: 'com.google.gms.google-services'
buildTypes.gradle:
signingConfigs {
debug {
storeFile file("./debug.keystore")
storePassword "android"
keyAlias "androiddebugkey"
}
release {
storeFile file("./YOUR.production.jks")
storePassword "xxx"
keyAlias "xxx"
keyPassword "xxx"
}
}
buildTypes {
debug {
}
release {
shrinkResources true
minifyEnabled true
zipAlignEnabled true
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
proguard-rules.pro:
# Uncomment this to preserve the line number information for
# debugging stack traces.
-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
-renamesourcefileattribute SourceFile
# https://www.guardsquare.com/en/products/proguard/manual/usage#repackageclasses
-repackageclasses 'zzz1'
-forceprocessing
-allowaccessmodification
#-ignorewarnings
gradle.properties:
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
android.injected.testOnly=false
#android.debug.obsoleteApi=true
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
此设置将创建四个构建变体:
- devDebug
- devRelease
- productionDebug
- productionRelease
确保仅使用devDebug,productionRelease。
希望这会有所帮助。使用前请先检查并根据需要进行编辑。好运