无法将 Crashlytics 任务添加到 gradle 个任务
Crashlytics task cannot be added to gradle tasks
我将 Crashlytics 插件安装到 Android Studio 项目,但 gradle 任务 crashlyticsUploadDistributionDebug 未添加到 gradle 任务。
我如何添加到 gradle 任务?
安装Crashlytics成功,但下面命令失败。
$ ./gradlew assembleDebug crashlyticsUploadDistributionDebug
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
FAILURE: Build failed with an exception.
* What went wrong:
Task 'crashlyticsUploadDistributionDebug' not found in root project 'MyProject'.
* Try:
Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1.02 secs
我的 build.gradle 设置如下。
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.24.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 26
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "my.app.id"
manifestPlaceholders = [appName:"@string/app_name", iconLabel:"@string/icon_label"]
minSdkVersion 16
targetSdkVersion 26
versionCode 20
versionName "2.0.0"
}
buildTypes {
debug {
debuggable true
applicationIdSuffix ".debug"
versionNameSuffix '-dev'
}
release {
debuggable false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
develop {
manifestPlaceholders = [appName:"@string/dev_app_name", iconLabel:"@string/dev_icon_label"]
buildConfigField "boolean", "DEV_ENV", "true"
buildConfigField "String", "XXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
staging {
manifestPlaceholders = [appName:"@string/stg_app_name", iconLabel:"@string/stg_icon_label"]
buildConfigField "boolean", "DEV_ENV", "true"
buildConfigField "String", "XXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
production {
buildConfigField "boolean", "DEV_ENV", "false"
buildConfigField "String", "XXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.google.code.gson:gson:2.7'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'com.google.android.gms:play-services-analytics:11.0.4'
compile 'com.google.android.gms:play-services-gcm:11.0.4'
compile 'com.mcxiaoke.volley:library:1.0.16'
compile 'com.jpardogo.materialtabstrip:library:1.0.9'
compile 'com.lsjwzh:materialloadingprogressbar:0.5.5-RELEASE'
compile 'io.realm:realm-android:0.80.3'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.2'
compile 'com.daimajia.swipelayout:library:1.2.0@aar'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.easing:library:1.0.1@aar'
compile 'com.daimajia.androidanimations:library:1.1.3@aar'
compile 'com.facebook.conceal:conceal:1.0.3@aar'
compile 'com.appsflyer:af-android-sdk:4.6.1@aar'
compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}
}
不知道怎么回事
我已将开发、暂存和生产配置到 productFlavors,因此需要将 productFlavor 添加到命令中。
下面是正确的命令。
./gradlew assembleDebug crashlyticsUploadDistribution[flavor]Debug
例如
$ ./gradlew assembleDebug crashlyticsUploadDistributionDevelopDebug
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDevelopDebugBuild UP-TO-DATE
:app:checkDevelopDebugManifest
:app:preDevelopReleaseBuild UP-TO-DATE
:app:preProductionDebugBuild UP-TO-DATE
:app:preProductionReleaseBuild UP-TO-DATE
:app:preStagingDebugBuild UP-TO-DATE
・
・
・
:app:compileStagingDebugNdk UP-TO-DATE
:app:compileStagingDebugSources
:app:transformClassesWithDexForStagingDebug
:app:mergeStagingDebugJniLibFolders
:app:transformNativeLibsWithMergeJniLibsForStagingDebug
:app:transformNativeLibsWithStripDebugSymbolForStagingDebug
:app:processStagingDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForStagingDebug
:app:validateSigningStagingDebug
:app:packageStagingDebug
:app:assembleStagingDebug
:app:assembleDebug
:app:crashlyticsUploadDistributionDevelopDebug
Uploading /my_android_project_path/app/build/outputs/apk/app-develop-debug.apk to Crashlytics...
BUILD SUCCESSFUL
Total time: 23.897 secs
我将 Crashlytics 插件安装到 Android Studio 项目,但 gradle 任务 crashlyticsUploadDistributionDebug 未添加到 gradle 任务。 我如何添加到 gradle 任务?
安装Crashlytics成功,但下面命令失败。
$ ./gradlew assembleDebug crashlyticsUploadDistributionDebug
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
FAILURE: Build failed with an exception.
* What went wrong:
Task 'crashlyticsUploadDistributionDebug' not found in root project 'MyProject'.
* Try:
Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1.02 secs
我的 build.gradle 设置如下。
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.24.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 26
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "my.app.id"
manifestPlaceholders = [appName:"@string/app_name", iconLabel:"@string/icon_label"]
minSdkVersion 16
targetSdkVersion 26
versionCode 20
versionName "2.0.0"
}
buildTypes {
debug {
debuggable true
applicationIdSuffix ".debug"
versionNameSuffix '-dev'
}
release {
debuggable false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
develop {
manifestPlaceholders = [appName:"@string/dev_app_name", iconLabel:"@string/dev_icon_label"]
buildConfigField "boolean", "DEV_ENV", "true"
buildConfigField "String", "XXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
staging {
manifestPlaceholders = [appName:"@string/stg_app_name", iconLabel:"@string/stg_icon_label"]
buildConfigField "boolean", "DEV_ENV", "true"
buildConfigField "String", "XXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
production {
buildConfigField "boolean", "DEV_ENV", "false"
buildConfigField "String", "XXX", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.google.code.gson:gson:2.7'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'com.google.android.gms:play-services-analytics:11.0.4'
compile 'com.google.android.gms:play-services-gcm:11.0.4'
compile 'com.mcxiaoke.volley:library:1.0.16'
compile 'com.jpardogo.materialtabstrip:library:1.0.9'
compile 'com.lsjwzh:materialloadingprogressbar:0.5.5-RELEASE'
compile 'io.realm:realm-android:0.80.3'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.2'
compile 'com.daimajia.swipelayout:library:1.2.0@aar'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.easing:library:1.0.1@aar'
compile 'com.daimajia.androidanimations:library:1.1.3@aar'
compile 'com.facebook.conceal:conceal:1.0.3@aar'
compile 'com.appsflyer:af-android-sdk:4.6.1@aar'
compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true;
}
}
不知道怎么回事
我已将开发、暂存和生产配置到 productFlavors,因此需要将 productFlavor 添加到命令中。
下面是正确的命令。
./gradlew assembleDebug crashlyticsUploadDistribution[flavor]Debug
例如
$ ./gradlew assembleDebug crashlyticsUploadDistributionDevelopDebug
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDevelopDebugBuild UP-TO-DATE
:app:checkDevelopDebugManifest
:app:preDevelopReleaseBuild UP-TO-DATE
:app:preProductionDebugBuild UP-TO-DATE
:app:preProductionReleaseBuild UP-TO-DATE
:app:preStagingDebugBuild UP-TO-DATE
・
・
・
:app:compileStagingDebugNdk UP-TO-DATE
:app:compileStagingDebugSources
:app:transformClassesWithDexForStagingDebug
:app:mergeStagingDebugJniLibFolders
:app:transformNativeLibsWithMergeJniLibsForStagingDebug
:app:transformNativeLibsWithStripDebugSymbolForStagingDebug
:app:processStagingDebugJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForStagingDebug
:app:validateSigningStagingDebug
:app:packageStagingDebug
:app:assembleStagingDebug
:app:assembleDebug
:app:crashlyticsUploadDistributionDevelopDebug
Uploading /my_android_project_path/app/build/outputs/apk/app-develop-debug.apk to Crashlytics...
BUILD SUCCESSFUL
Total time: 23.897 secs