Android 使用 deployGate gradle 插件构建 Studio 项目

Android Studio project build with deployGate gradle plugin

我刚开始使用 DeployGate with my Android application in Android Studio and I want to use the gradle plugin 来上传我的新版本(我认为这是为了这个,还是我误解了?)。

我终于通过修改 build.gradle (Module:app):

成功构建了我的项目
apply plugin: 'deploygate'
apply plugin: 'com.android.application'

deploygate {
    userName = "[myUsername]" //yes, I replaced it with my own
    token = "[myAPIKey]"      // also
    apks {
        release {
            sourceFile = file("C:\AndroidStudioProjects\MyApp\app\app-release.apk")
        }

        debug {
            sourceFile = file("C:\AndroidStudioProjects\MyApp\app\build\outputs\apk\app-debug.apk")

            //Below is optional
            //message = "test upload2 sample"
            //visibility = "public" 
            //distributionKey = "[distribution_key]"
            //releaseNote = "release note sample"
        }
    }
}

android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "bendaf.myapp"
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 13
        versionName "1.2.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.deploygate:sdk:3.1'
}

但是当我尝试在终端中执行命令 gradle uploadDeployGate 时,它说 BUILD FAILED。 (我对gradle没有太多经验,所以我做对了吗?)

我的堆栈跟踪是:

    * Exception is:             
    org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'.
        at     org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:190)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:39)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:521)
        at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:82)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:31)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
        at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51)
        at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
        at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
        at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
        at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
        at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
        at org.gradle.launcher.Main.doAction(Main.java:33)
        at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
        at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
        at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'com.android.application']
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyPlugin(DefaultObjectConfigurationAction.java:117)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access0(DefaultObjectConfigurationAction.java:36)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.run(DefaultObjectConfigurationAction.java:80)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:131)
        at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:37)
        at org.gradle.api.Project$apply[=13=].call(Unknown Source)
        at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.groovy:34)
        at org.gradle.api.Script$apply[=13=].callCurrent(Unknown Source)
        at build_78pi66j0mnhjns6vp3krggobhd.run(C:\AndroidStudioProjects\VivagoDatatransmission\app\build.gradle:25)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52)
        ... 31 more         
Caused by: org.gradle.tooling.BuildException: Gradle version 2.2 is required. Current version is 2.1. If using the gradle wrapper, try editing the distributionUrl in C:\An
droidStudioProjects\VivagoDatatransmission\gradle\wrapper\gradle-wrapper.properties to gradle-2.2-all.zip
        at com.android.build.gradle.BasePlugin.checkGradleVersion(BasePlugin.groovy:436)
        at com.android.build.gradle.BasePlugin.configureProject(BasePlugin.groovy:265)
        at com.android.build.gradle.BasePlugin$_apply_closure1.doCall(BasePlugin.groovy:252)
        at com.android.build.gradle.BasePlugin$_apply_closure1.doCall(BasePlugin.groovy)
        at com.android.build.gradle.internal.profile.SpanRecorders.call(SpanRecorders.groovy:52)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:48)
        at com.android.build.gradle.internal.profile.SpanRecorders.record(SpanRecorders.groovy:54)
        at com.android.build.gradle.BasePlugin.apply(BasePlugin.groovy:251)
        at com.android.build.gradle.AppPlugin.super$apply(AppPlugin.groovy)
        at com.android.build.gradle.AppPlugin.apply(AppPlugin.groovy:66)
        at com.android.build.gradle.AppPlugin.apply(AppPlugin.groovy)
        at org.gradle.api.internal.plugins.DefaultPluginContainer.providePlugin(DefaultPluginContainer.java:188)
        at org.gradle.api.internal.plugins.DefaultPluginContainer.addPluginInternal(DefaultPluginContainer.java:137)
        at org.gradle.api.internal.plugins.DefaultPluginContainer.apply(DefaultPluginContainer.java:103)
        at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyPlugin(DefaultObjectConfigurationAction.java:115)
        ... 40 more         

根据错误消息,问题出在我的 gradle-wrapper.properties,但它有正确的 gradle 版本,我认为:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

那么这里的问题是什么?还是我做错了什么?我应该如何将应用程序自动上传到 DeployGate? 谢谢你的回答。

您正在 运行ning 全局安装的 gradle 命令不尊重您编辑的 gradle-wrapper.properties。相反,您需要 运行 gradlew 命令。

Gradle 包装器是 the preferred way of starting a Gradle build,它允许您为每个项目 运行 特定版本的 Gradle。使用包装器,构建项目所需要做的就是:

  1. 检查存储库
  2. 运行 gradlew

就是这样。您甚至不需要事先安装 Gradle,包装器会搞定一切,因此您可以在任何地方构建您的应用程序并轻松迁移到持续集成。