Git Product home page Git Product logo

gradle-appcenter-plugin's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gradle-appcenter-plugin's Issues

Deferring evaluation of plugin extension properties such as releaseNotes until the execution phase

Thanks for making this excellent plugin available.

I ran into a hiccup when migrating from a previous HockeyApp plugin I was using to this one. Our project contains a custom gradle task that generates a changelog when executed and makes the text of this changelog available via a property added to the project's ext container. The changelog is ephemeral; it is generated solely for the APK upload task and is not otherwise written to a file or saved. I wanted to use this generated string as the input to your plugin extension's releaseNotes property, but setting it from this task had no effect, because the releaseNotes property on your UploadAppCenterTask is assigned from an afterEvaluate closure added when your plugin is applied (during the configuration phase). My task generates the changelog after this has occurred (during the execution phase), which is too late.

I'm far from a Gradle expert, but in the previous plugin we were using the upload task read the values directly from the project extension on-demand, during task execution, rather than baking the values in during the configuration phase. There may be an even better way to do this, but the approach of reading the extension properties on-demand seemed to work well with the other plugin.

Any thoughts on this as a potential enhancement? Thanks for your time.

(FWIW, as a workaround for now we are using File.createTempFile during the configuration phase and assigning the result to the extension property, then writing to that file during the execution phase. This works fine but has the minor cost of unconditionally creating a temp file during every configuration, even if the upload tasks won't be invoked.)

AppCenterUploaderException 1.3.0

We are seeing intermittent failures to upload APKs to appcenter. Recently it happens much more often. It seems the failure falls to this line of the plugin. https://github.com/oliviergauthier/gradle-appcenter-plugin/blob/master/src/main/kotlin/com/betomorrow/gradle/appcenter/infra/AppCenterUploader.kt#L74

* What went wrong:
11:01:37  Execution failed for task ':xxx:appCenterUploadApkxxx'.
11:01:37  > com.betomorrow.gradle.appcenter.infra.AppCenterUploaderException: Fetching release id failed: Tried 60 times.

We are running plugin version 1.3.0. Please let us know if you have any suggestion. Thanks!

AGP 3.6 compatibility

Good afternoon!

The AGP 3.6.0 is on the path to release. And AppCenter plugin is not compatible with it:

Caused by: java.lang.NoSuchMethodError: com.android.build.gradle.tasks.PackageAndroidArtifact.getOutputDirectory()Ljava/io/File;
        at com.betomorrow.gradle.appcenter.AppCenterPlugin.handleVariant(AppCenterPlugin.kt:48)
        at com.betomorrow.gradle.appcenter.AppCenterPlugin.access$handleVariant(AppCenterPlugin.kt:12)
        at com.betomorrow.gradle.appcenter.AppCenterPlugin$apply$$inlined$with$lambda$1.execute(AppCenterPlugin.kt:29)
        at com.betomorrow.gradle.appcenter.AppCenterPlugin$apply$$inlined$with$lambda$1.execute(AppCenterPlugin.kt:12)
        ...

Invalid tasks dependencies in 1.3.0 version

Looks like today app center disables deprecated API for uploads so I had to switch to 1.3.0 version of this plugin. However it was impossible to use it for.

I've got flavor env with values dev, prod so I use appCenterUploadDevRelease task for upload of app to appcenter. And I receive such error

Could not determine the dependencies of task ':app:appCenterUploadMappingDevRelease'.
> Task with path 'assembleMappingDevRelease' not found in project ':app'

When I tried to just upload apk with task appCenterUploadApkDevRelease I got another error

* What went wrong:
Could not determine the dependencies of task ':app:appCenterUploadApkDevRelease'.
> Task with path 'assembleApkDevRelease' not found in project ':app'.

It looks like when trying to add dependencies tasks names of these tasks were wrongly created as I suppose it should be assembleDevRelease instead of assembleApkDevRelease or assembleMappingDevRelease

OkHttpBuilder.getEnvVar doesnt return null when env not present

If the env var is not there the call to System.getEnv is not null safe and doesnt return null

    private fun getEnvVar(propertyName: String): Long? {
        return System.getenv(propertyName).replace(".", "_").toLongOrNull()
    }

Should be

    private fun getEnvVar(propertyName: String): Long? {
        return System.getenv(propertyName)?.replace(".", "_")?.toLongOrNull()
    }

Upload without mapping file (debug) fails with version 1.2

When uploading a build type to that does not produce a mapping the plugin will crash whenever uploadMappingFiles is enabled, this bug was introduced here:

https://github.com/oliviergauthier/gradle-appcenter-plugin/blame/02f6f19131d576d4fd960af4e00d4f3511c17030/src/main/kotlin/com/betomorrow/gradle/appcenter/AppCenterPlugin.kt#L74

And can be reproduced by running (with: uploadMappingFiles set to true)
gradlew app:appCenterUploadDebug --stacktrace

Stacktrace:

Caused by: java.lang.IllegalStateException: Expected file collection to contain exactly one file, however, it contains no files.
        at org.gradle.api.internal.file.AbstractFileCollection.getSingleFile(AbstractFileCollection.java:86)
        at com.betomorrow.gradle.appcenter.AppCenterPlugin$handleVariant$$inlined$let$lambda$1$1$2.invoke(AppCenterPlugin.kt:74)
        at com.betomorrow.gradle.appcenter.AppCenterPlugin$handleVariant$$inlined$let$lambda$1$1$2.invoke(AppCenterPlugin.kt:12)
        at com.betomorrow.gradle.appcenter.tasks.UploadAppCenterTask.upload(UploadAppCenterTask.kt:40)

Proxy Server is ignored

Proxy server settings that are specified in gradle.properties file will be ignored when uploading apps to AppCenter.

The following proxy configuration will result in a HTTP error 403 behind my corporate proxy server.

systemProp.https.proxyPort=8080
systemProp.http.proxyHost=proxy
systemProp.https.proxyHost=proxy
systemProp.http.proxyPort=8080

Add a way to cut release notes

It seems App Center has a max limit of 5000 characters for release notes:

Can't distribute release, code=400, reason={"code":"bad_request","message":"Error: The release notes exceeds the limit of 5000 characters."}

Can you add a flag to truncate it ?

Can't prepare release upload, code=404

The issue has been started, Can not push apk to appcenter

Can't prepare release upload, code=404, reason={"message":"Resource not found: /v0.1/apps///release_uploads. Correlation ID: 5737e0d5-edc2-4955-9f51-a22f9dae3273","statusCode":404,"code":"Not Found"}

Upload to App Center fails with error 400

Hi, same issue is happening for me as described in closed issue here
Can't prepare release upload, code=400, reason={"status":400,"name":"Error","message":"Missing required body parameter "body""}

Is it maybe connected with the fact that endpoint is deprecated on AppCenter API?

Upload task not working on 4.1.0 Android Gradle plugin

On Android Gradle plugin version 4.0.1 and Gradle version 6.1.1 everything is working fine. After update to Android Gradle plugin version 4.1.0 and Gradle version 6.5 upload task failed with this output:

Cannot query the value of this property because it has no value available.

Will there be update to support latest Gradle version?

Cant upload to Hockey groups

Not sure if its plugin related, i will try to do an upload manually, but do you know why an upload to a group imported from Hockey might fail? It works from the Appcenter UI but it fails silently from the plugin, it will just skip that group. Unfortunately there is no way to test this unless you already have an Hockey imported group and an Hockey account.

CHAGELOG and other related information

Would it be possible to have CHANGELOG for the plugin?
Can we also see a clear history of the releases?
Can you also add compatibility matrix for AGP versions and plugin version?

Gradle task appCenterAssembleAndUploadAppCenterRelease Failed !

Hello,

I need some help the library is not working properly for me.

`
FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':sdk-test-app:appCenterUploadAppCenterRelease'.

com.betomorrow.gradle.appcenter.infra.AppCenterUploaderException: Can't prepare release upload, code=404, reason={"message":"Not found. Correlation ID: 2ebbddbb-d1e5-4bb3-93f0-d9bd80f90666","statusCode":404,"code":"Not Found"}

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 17s
`

im using :
com.android.tools.build:gradle:3.6.0
gradle.plugin.com.betomorrow.gradle:appcenter-plugin:1.2.1

> Task :app:appCenterUploadAabCompanyDebug FAILED updating from 1.3.0 to 2.0.1

Does the latest version not support APK uploads? I'm getting this error having just updated from 1.3.0 to 2.0.1. My app doesn't yet support AAB, but this seems like an AAB specific task that has been triggered.

> Task :app:appCenterUploadAabCompanyDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:appCenterUploadAabCompanyDebug'.
> com/android/build/gradle/internal/scope/InternalArtifactType$BUNDLE

Support AGP 7

I have submitted an attempt at adding support for AGP 7 in pull request 64. Not sure about the contributing guidelines for moving forward with this, but happy to assist in any way I can.

The latest build error seems to be related to configuration of publishing keys, which I may not be able to resolve?

Let me know how I can help.

Publish without flavors

Hi, I don't have any flavors in my application. I'm using only build types:

 buildTypes {
        release {
           ...
        }
        debug {
        ...
       }
}

Is it possible to use this plugin without flavors?

Ok, I managed to do it, but right now I have error:

* What went wrong:
Execution failed for task ':app:appCenterUploadDebug'.
> okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl;

Deprecated AppCenter APIs

This plugin uses deprecated AppCenter APIs as seen here https://openapi.appcenter.ms/#/distribute/releaseUploads_create and

/**
* curl
* -X POST
* --header 'Content-Type: application/json'
* --header 'Accept: application/json'
* --header 'X-API-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
* 'https://api.appcenter.ms/v0.1/apps/{ownerName}/{appName}/release_uploads'
*/
@POST("apps/{ownerName}/{appName}/release_uploads")
fun prepareReleaseUpload(
@Path("ownerName") ownerName: String,
@Path("appName") appName: String
): Call<PrepareReleaseUploadResponse>

Missing release notes in App Center

Hi,
I noticed the latest plugin version 1.3.0 doesn't include release notes to the App center upload. Despite they are provided in the Gradle configuration like this:

appcenter {
apiToken = ....
ownerName = "...."
releaseNotes = "...."
apps {......

Is there any known issue or format change in App center?

Uploading task returns 500

I got this error when uploading the apk

com.betomorrow.gradle.appcenter.infra.AppCenterUploaderException: Can't prepare release upload, code=500, reason={"code":"internal_server_error","message":"internal error (Support ID: 50d95910-9f21-4c79-8562-6ae9909cd7ee)"}

After checking AppCenter website, I found out that since Dec 8th 2020 (the day I face the error), The appcenter distribute release command in App Center CLI versions prior to v2.7.0 has stopped functioning. They also mention that if you are using custom scripts with our swagger API, please adjust your script based off the implementation of App Center CLI.

I think it affects the plugin and should be fixed.

App bundle

Is it possible to use this plugin to upload app bundles (.aab files)?

Documentation different from Source code

Quick Start documentation is not working. I have checked the src code the implementation is differ from MD file.

Listed all the gradlew tasks. It is not listing appCenterDevDebug task.

Note:
task is not appearing.

Please do a needful and guide me.

Thanks in advance

Do not have compatibility with com.android.tools.build:gradle:7+

dependencies {
classpath 'com.android.tools.build:gradle:7.0.3'
classpath "gradle.plugin.com.betomorrow.gradle:appcenter-plugin:2.0.3"
...
}

com.android.tools.build:gradle:7.0.3 - need for other plugins (require 7+ version)
When try to use - task appCenterUploadStageDebug not found (use settings like at readme except names at productFlavors, so should be create such task)

It's very sad because before we use com.teamwanari.appcenter-publish-plugin and it's worked fine with build gradle 7+, but now it's use wrong api urls for upload, so decide to use this plugin, but catch such problem

Upload proguard mapping

Hi! There is no mapping.txt file uploaded to AppCenter for given .apk. Do you plan to add this?

java.lang.NoSuchMethodError: okhttp3.Interceptor$Chain.connectTimeoutMillis()

Caused by: java.lang.NoSuchMethodError: okhttp3.Interceptor$Chain.connectTimeoutMillis()I
	at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:107)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at com.betomorrow.gradle.appcenter.infra.AppCenterAPIFactory$create$builder$1.invoke(AppCenterAPIFactory.kt:21)
	at com.betomorrow.gradle.appcenter.infra.AppCenterAPIFactory$create$builder$1.invoke(AppCenterAPIFactory.kt:7)
	at com.betomorrow.gradle.appcenter.infra.LambdaInterceptor.intercept(OkHttpBuilder.kt:76)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:212)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:254)
	at okhttp3.RealCall.execute(RealCall.java:92)
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:188)
	at com.betomorrow.gradle.appcenter.infra.AppCenterUploader.uploadApk(AppCenterUploader.kt:21)
	at com.betomorrow.gradle.appcenter.tasks.UploadAppCenterTask.upload(UploadAppCenterTask.kt:35)

app:appCenterUploadAabCompanyDebug upgrading from 1.3.0 to 2.0.1

Does the latest version not support APK uploads? I'm getting this error having just updated from 1.3.0 to 2.0.1. My app doesn't yet support AAB, but this seems like an AAB specific task that has been triggered.

> Task :app:appCenterUploadAabCompanyDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:appCenterUploadAabCompanyDebug'.
> com/android/build/gradle/internal/scope/InternalArtifactType$BUNDLE

error message is not readable

com.betomorrow.gradle.appcenter.infra.AppCenterUploaderException: Can't prepare release upload, code=401, reason={"message":"9c103022-b3ce-41f7-b45c-de9ee51b72a1","statusCode":401,"code":"Unauthorized"}

whats the meaning of "message":"9c103022-b3ce-41f7-b45c-de9ee51b72a1" here ?

NoSuchMethodError getOutputDirectory() with Gradle Plugin 4.0.0

My configuration:

dependencies {
    classpath "com.android.tools.build:gradle:4.0.0-alpha07"
}
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-milestone-2-all.zip

Error:

Caused by: java.lang.NoSuchMethodError: com.android.build.gradle.tasks.PackageAndroidArtifact.getOutputDirectory()Ljava/io/File;
	at com.betomorrow.gradle.appcenter.AppCenterPlugin.handleVariant(AppCenterPlugin.kt:48)
	at com.betomorrow.gradle.appcenter.AppCenterPlugin.access$handleVariant(AppCenterPlugin.kt:12)
	at com.betomorrow.gradle.appcenter.AppCenterPlugin$apply$$inlined$with$lambda$1.execute(AppCenterPlugin.kt:29)
	at com.betomorrow.gradle.appcenter.AppCenterPlugin$apply$$inlined$with$lambda$1.execute(AppCenterPlugin.kt:12)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.lambda$run$0(DefaultListenerBuildOperationDecorator.java:152)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:60)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:92)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:231)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:150)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
	... 125 more

Line in the source:

val outputDirectory = variant.packageApplicationProvider.get().outputDirectory

Symbols upload create request made with wrong type

The same value for 'symbol_type' (AndroidProguard) is used to upload the Proguard mappings file as it is for uploading the symbols zip file. The AppCenter API documentation states that Breakpad should be used when uploading symbols and AndroidProguard should be used for the mappings file.

https://docs.microsoft.com/en-us/appcenter/diagnostics/android-ndk
https://openapi.appcenter.ms/#/crash/symbolUploads_create

Upload fails for app name with white spaces

Something strange is happening.

If I have app at appcenter "Android - App" - it fails to upload:

 Task has not declared any outputs despite executing actions.
--> POST https://api.appcenter.ms/v0.1/apps/Company/Android%20-%20App/release_uploads (0-byte body)
<-- 403 Forbidden https://api.appcenter.ms/v0.1/apps/Company/Android%20-%20App/release_uploads (665ms, unknown-length body)

Upload works as soon as I rename it to "Android-App":

--> POST https://api.appcenter.ms/v0.1/apps/Company/Android-App/release_uploads (0-byte body)
<-- 201 Created https://api.appcenter.ms/v0.1/apps/Company/Android-App/release_uploads (1163ms, 253-byte body)
-

I've tried to compare what is going on the fastlane side. Since iOS friends don't have such issue. Unfortunately, my ruby is not fluent to understand the difference https://github.com/microsoft/fastlane-plugin-appcenter/blob/master/lib/fastlane/plugin/appcenter/helper/appcenter_helper.rb#L508

It looks like they don't do url encoding. Am I right? Can it work?

App bundle support

we can manually upload app bundle to appcenter.
can we add a support to upload appbundle to appcenter ?

Upload to App Center fails with error 400

Since yesterday uploads to App center started to fail with the following error:

Can't prepare release upload, code=400, reason={"error":{"code":400,"message":"One or more invalid parameters:\nParameter file_size must be greater than 0 : 0"}}

Note: The upload was working perfectly fine before. I even tried to update to version 1.3.0 but I'm still getting the same error

Cannot split by ABI filters

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring project ':ui'.
    Cannot add task 'appCenterUploadActualBackendQa' as a task with that name already exists.

CONFIGURE FAILED in 1s
Cannot add task 'appCenterUploadActualBackendQa' as a task with that name already exists.

My splits configuration

splits {
        abi {
            enable true
            reset()
            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
            universalApk false
        }
    }

Multi Dimensions

I can not figure how can I upload variants with multi dimensions

example if i have two dimensions flavorDimensions "client", "environment"

     stage {
            dimension "environment"
            applicationIdSuffix ".stage"
        }

     development {
            dimension "environment"
            applicationIdSuffix ".development"
        }
     production {
            dimension "environment"
            applicationIdSuffix ".production"
        }
        
     A {
            dimension "client"
        }
     B {
            dimension "client"
        }
     C {
            dimension "client"
        }
     D {
            dimension "client"
        }


how can I build APK for all client with stage flavor and all client with development flavor

Could not locate plugin tasks

There are two duplicate issues already in this repo and closed. No thread answers issue. Can you please add an example to use the tasks such as "appCenterUploadBetaRelease"? My gradle command: gradle tasks is giving
Could not get unknown property 'appCenterUploadBetaRelease' for root project
for this below line :
appCenterUploadBetaRelease.dependsOn runMsBuild
Not sure whether I am using this in a right way or not.

Incorrect ABI is uploaded

Our project has split abi builds. Recently we included 'arm64-v8a' to the list of ABIs as recently required by Google Play and now the plugin uploads the arm64-build instead of the one we have been uploading before armeabi-v7a and our testers are unable to install our app due to incorrect ABI.

If it helps, this is where the arm64-binary has this path when built through the plugin:
./app/build/outputs/apk/flavorName/release/app-flavor-name-arm64-v8a-release.apk
while the arm7-binary has this path:
./app/build/outputs/apk/flavorName/release/app-flavor-name-armeabi-v7a-release.apk

android {...
splits {
    abi {
        enable true
        reset()
        include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        universalApk false
    }
}
...}

No upload tasks showing after moving to build.gradle.kts

After moving our builds to the Kotlin-DSL, the upload task is no longer being registered for the various build flavors.

The kotlin-dsl picks up the appcenter -> apps extensions, but I must use either a create("flavorName") or getByName("flavorName") to get the rest of the extensions configuration.

basically when I now run the: gradlew tasks

I get no entries for the appcenter plugin, where I did before the migration.

Could not find com.betomorrow.gradle:appcenter-plugin:1.1.1

Hi,
I get Could not find com.betomorrow.gradle:appcenter-plugin:1.1.1 when using the line classpath "com.betomorrow.gradle:appcenter-plugin:1.1.1"
However classpath "gradle.plugin.com.betomorrow.gradle:appcenter-plugin:1.1.1" works for me. You might want to update you readme file.

Thanks

Set appName as environment variable

I haven't been able to get appName to take an in an environment variable if it has been assigned. I basically want to do something like.

flavorDebug {
appName = "${System.env.APP_NAME}"
}

unfortunately every way I've tried, it ignores it and fails the upload. Only hard coding the name seems to work.

[Questions] default group for all users ?

HI, I have question about distributionGroups settings

appcenter {
     // ...
    distributionGroups = ["Beta"]               // Name of the AppCenter Distribution Group
     // ...
}

This example is Beta Group. How to set it for All users (of default group) ?
I search the document and cannot find the answers.

Thanks.

I have read these documents
https://docs.microsoft.com/en-us/appcenter/distribution/groups
https://github.com/MicrosoftDocs/appcenter-docs/blob/live/docs/distribution/groups.md

But no instructions about default group.

Plugin Tasks Not Generated

Hello! I'm unable to see the plugin tasks listed in the README. I am able to see other tasks from other plugins like Crashlytics.

I believe that I'm looking for the following tasks:

appCenterUploadAlphaRelease
appCenterUploadBetaRelease
appCenterUploadProdRelease

but I don't find them in the list of tasks when I run the command ./gradlew tasks --all

Here's my build.gradle

buildscript {
    ext.kotlin_version = '1.3.31'
    repositories {
        google()
        jcenter()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "gradle.plugin.com.betomorrow.gradle:appcenter-plugin:1.1.4"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

Here's my app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'io.fabric'
apply plugin: 'com.betomorrow.appcenter'

Properties properties = new Properties()
try {
    properties.load(project.rootProject.file("local.properties").newDataInputStream())
} catch(Exception e) {
    // do nothing. if file doesn't exist, then environment variables will be used below.
}

def appVersionCode = Integer.valueOf(properties.getProperty("version.code",System.getenv("SAMPLE_APP_VERSION_CODE")))
def appVersionName = properties.getProperty("version.name",System.getenv("SAMPLE_APP_VERSION_NAME"))
def distributionGroup = properties.getProperty("distributionGroup",System.getenv("DISTRIBUTION_GROUP"))

android {
    signingConfigs {
        sampledistro {
           ...
        }
    }
    compileSdkVersion 28
    defaultConfig {
        applicationId "..."
        minSdkVersion 19
        targetSdkVersion 28
        versionCode appVersionCode
        versionName appVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            // release notes
            ext.betaDistributionReleaseNotesFilePath="release_notes.txt"
            // add group aliases
            ext.betaDistributionGroupAliases=distributionGroup
            signingConfig signingConfigs.sampledistro
        }
    }
    dataBinding {
        enabled = true
    }
}

buildscript {
    repositories {
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url 'https://maven.fabric.io/public' }

    }
    dependencies {
        classpath "gradle.plugin.com.betomorrow.gradle:appcenter-plugin:1.1.4"
        classpath 'io.fabric.tools:gradle:1.26.1'
    }
}

    flavorDimensions "beta"
    productFlavors {
        beta {
            dimension "beta"
            applicationIdSuffix ".beta"
            versionNameSuffix "-beta"
        }
    }

appcenter {
    apiToken = ""                       // Api Token from AppCenter user profile
    ownerName = ""                          // Owner Name of the AppCenter Application
    distributionGroups = [""]               // Name of the AppCenter Distribution Group
    releaseNotes = file("../../release-notes.md")      // Can be a file or text
    notifyTesters = true                        // Send mail to testers
    apps {                                      // Here we manage 3 AppCenter applications : alpha, beta and prod
        beta {
            dimension = "beta"
            appName = "Sample App Android Beta"
        }
    }
}

Here's the output of the command ./gradlew tasks --all


Tasks runnable from root project

Android tasks

app:androidDependencies - Displays the Android dependencies of the project.
app:signingReport - Displays the signing info for the base and test modules
app:sourceSets - Prints out all the source sets defined in this project.

Build tasks

app:assemble - Assemble main outputs for all the variants.
app:assembleAndroidTest - Assembles all the Test applications.
app:build - Assembles and tests this project.
app:buildDependents - Assembles and tests this project and all projects that depend on it.
app:buildNeeded - Assembles and tests this project and all projects it depends on.
app:bundle - Assemble bundles for all the variants.
app:clean - Deletes the build directory.
app:cleanBuildCache - Deletes the build cache directory.
app:compileDebugAndroidTestSources
app:compileDebugSources
app:compileDebugUnitTestSources
app:compileReleaseSources
app:compileReleaseUnitTestSources

Build Setup tasks

init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Cleanup tasks

app:lintFix - Runs lint on all variants and applies any safe suggestions to the source code.

Help tasks

buildEnvironment - Displays all buildscript dependencies declared in root project 'sample'.
androidkitelibrary-debug:buildEnvironment - Displays all buildscript dependencies declared in project ':androidkitelibrary-debug'.
app:buildEnvironment - Displays all buildscript dependencies declared in project ':app'.
components - Displays the components produced by root project 'sample'. [incubating]
androidkitelibrary-debug:components - Displays the components produced by project ':androidkitelibrary-debug'. [incubating]
app:components - Displays the components produced by project ':app'. [incubating]
dependencies - Displays all dependencies declared in root project 'sample'.
androidkitelibrary-debug:dependencies - Displays all dependencies declared in project ':androidkitelibrary-debug'.
app:dependencies - Displays all dependencies declared in project ':app'.
dependencyInsight - Displays the insight into a specific dependency in root project 'sample'.
androidkitelibrary-debug:dependencyInsight - Displays the insight into a specific dependency in project ':androidkitelibrary-debug'.
app:dependencyInsight - Displays the insight into a specific dependency in project ':app'.
dependentComponents - Displays the dependent components of components in root project 'sample'. [incubating]
androidkitelibrary-debug:dependentComponents - Displays the dependent components of components in project ':androidkitelibrary-debug'. [incubating]
app:dependentComponents - Displays the dependent components of components in project ':app'. [incubating]
help - Displays a help message.
androidkitelibrary-debug:help - Displays a help message.
app:help - Displays a help message.
model - Displays the configuration model of root project 'sample'. [incubating]
androidkitelibrary-debug:model - Displays the configuration model of project ':androidkitelibrary-debug'. [incubating]
app:model - Displays the configuration model of project ':app'. [incubating]
projects - Displays the sub-projects of root project 'sample'.
androidkitelibrary-debug:projects - Displays the sub-projects of project ':androidkitelibrary-debug'.
app:projects - Displays the sub-projects of project ':app'.
properties - Displays the properties of root project 'sample'.
androidkitelibrary-debug:properties - Displays the properties of project ':androidkitelibrary-debug'.
app:properties - Displays the properties of project ':app'.
tasks - Displays the tasks runnable from root project 'sample' (some of the displayed tasks may belong to subprojects).
androidkitelibrary-debug:tasks - Displays the tasks runnable from project ':androidkitelibrary-debug'.
app:tasks - Displays the tasks runnable from project ':app'.

Install tasks

app:installDebug - Installs the Debug build.
app:installDebugAndroidTest - Installs the android (on device) tests for the Debug build.
app:installRelease - Installs the Release build.
app:uninstallAll - Uninstall all applications.
app:uninstallDebug - Uninstalls the Debug build.
app:uninstallDebugAndroidTest - Uninstalls the android (on device) tests for the Debug build.
app:uninstallRelease - Uninstalls the Release build.

Verification tasks
------------------
app:check - Runs all checks.
app:connectedAndroidTest - Installs and runs instrumentation tests for all flavors on connected devices.
app:connectedCheck - Runs all device checks on currently connected devices.
app:connectedDebugAndroidTest - Installs and runs the tests for debug on connected devices.
app:deviceAndroidTest - Installs and runs instrumentation tests using all Device Providers.
app:deviceCheck - Runs all device checks using Device Providers and Test Servers.
app:lint - Runs lint on all variants.
app:lintDebug - Runs lint on the Debug build.
app:lintRelease - Runs lint on the Release build.
app:lintVitalRelease - Runs lint on just the fatal issues in the release build.
app:test - Run unit tests for all variants.
app:testDebugUnitTest - Run unit tests for the debug build.
app:testReleaseUnitTest - Run unit tests for the release build.

Other tasks
-----------
app:assembleDebug - Assembles main output for variant debug
app:assembleDebugAndroidTest - Assembles main output for variant debugAndroidTest
app:assembleDebugUnitTest - Assembles main output for variant debugUnitTest
app:assembleRelease - Assembles main output for variant release
app:assembleReleaseUnitTest - Assembles main output for variant releaseUnitTest
app:buildDebugPreBundle
app:buildReleasePreBundle
app:bundleDebug - Assembles bundle for variant debug
app:bundleDebugAndroidTestClasses
app:bundleDebugAndroidTestResources
app:bundleDebugClasses
app:bundleDebugResources
app:bundleDebugUnitTestClasses
app:bundleRelease - Assembles bundle for variant release
app:bundleReleaseClasses
app:bundleReleaseResources
app:bundleReleaseUnitTestClasses
app:checkDebugAndroidTestDuplicateClasses
app:checkDebugDuplicateClasses
app:checkDebugManifest
app:checkReleaseManifest
clean
app:collectDebugDependencies
app:collectReleaseDependencies
app:compileDebugAidl
app:compileDebugAndroidTestAidl
app:compileDebugAndroidTestJavaWithJavac
app:compileDebugAndroidTestKotlin - Compiles the debugAndroidTest kotlin.
app:compileDebugAndroidTestRenderscript
app:compileDebugAndroidTestShaders
app:compileDebugJavaWithJavac
app:compileDebugKotlin - Compiles the debug kotlin.
app:compileDebugRenderscript
app:compileDebugShaders
app:compileDebugUnitTestJavaWithJavac
app:compileDebugUnitTestKotlin - Compiles the debugUnitTest kotlin.
app:compileLint
app:compileReleaseAidl
app:compileReleaseJavaWithJavac
app:compileReleaseKotlin - Compiles the release kotlin.
app:compileReleaseRenderscript
app:compileReleaseShaders
app:compileReleaseUnitTestJavaWithJavac
app:compileReleaseUnitTestKotlin - Compiles the releaseUnitTest kotlin.
app:configureDebugDependencies
app:configureReleaseDependencies
app:consumeConfigAttr
app:crashlyticsStoreDeobsRelease -         Crashlytics target to be invoked after completing release builds.
        Cleans up Crashlytics-generated resource files. Caches and uploads deobfuscation
        files to Crashlytics servers.
app:crashlyticsUploadDeobsRelease - Uploads stored deobfuscation files to Crashlytics.
app:crashlyticsUploadDistributionDebug - Uploads an APK to Crashlytics for distribution.
app:crashlyticsUploadDistributionRelease - Uploads an APK to Crashlytics for distribution.
app:createDebugCompatibleScreenManifests
app:createMockableJar
app:createReleaseCompatibleScreenManifests
app:dataBindingExportBuildInfoDebug
app:dataBindingExportBuildInfoRelease
app:dataBindingExportFeaturePackageIdsDebug
app:dataBindingExportFeaturePackageIdsRelease
app:dataBindingGenBaseClassesDebug
app:dataBindingGenBaseClassesRelease
app:dataBindingMergeDependencyArtifactsDebug
app:dataBindingMergeDependencyArtifactsRelease
app:dataBindingMergeGenClassesDebug
app:dataBindingMergeGenClassesRelease
app:extractApksForDebug
app:extractApksForRelease
app:extractProguardFiles
app:fabricGenerateResourcesDebug - Injects the build id used by the Fabric SDK.
app:fabricGenerateResourcesRelease - Injects the build id used by the Fabric SDK.
app:generateDebugAndroidTestAssets
app:generateDebugAndroidTestBuildConfig
app:generateDebugAndroidTestResources
app:generateDebugAndroidTestResValues
app:generateDebugAndroidTestSources
app:generateDebugAssets
app:generateDebugBuildConfig
app:generateDebugFeatureMetadata
app:generateDebugFeatureTransitiveDeps
app:generateDebugResources
app:generateDebugResValues
app:generateDebugSources
app:generateDebugUnitTestAssets
app:generateDebugUnitTestResources
app:generateDebugUnitTestSources
app:generateReleaseAssets
app:generateReleaseBuildConfig
app:generateReleaseFeatureMetadata
app:generateReleaseFeatureTransitiveDeps
app:generateReleaseResources
app:generateReleaseResValues
app:generateReleaseSources
app:generateReleaseUnitTestAssets
app:generateReleaseUnitTestResources
app:generateReleaseUnitTestSources
app:javaPreCompileDebug
app:javaPreCompileDebugAndroidTest
app:javaPreCompileDebugUnitTest
app:javaPreCompileRelease
app:javaPreCompileReleaseUnitTest
app:kaptDebugAndroidTestKotlin
app:kaptDebugKotlin
app:kaptDebugUnitTestKotlin
app:kaptGenerateStubsDebugAndroidTestKotlin
app:kaptGenerateStubsDebugKotlin
app:kaptGenerateStubsDebugUnitTestKotlin
app:kaptGenerateStubsReleaseKotlin
app:kaptGenerateStubsReleaseUnitTestKotlin
app:kaptReleaseKotlin
app:kaptReleaseUnitTestKotlin
app:mainApkListPersistenceDebug
app:mainApkListPersistenceDebugAndroidTest
app:mainApkListPersistenceRelease
app:makeApkFromBundleForDebug
app:makeApkFromBundleForRelease
app:mergeDebugAndroidTestAssets
app:mergeDebugAndroidTestJniLibFolders
app:mergeDebugAndroidTestResources
app:mergeDebugAndroidTestShaders
app:mergeDebugAssets
app:mergeDebugJniLibFolders
app:mergeDebugResources
app:mergeDebugShaders
app:mergeDexDebug
app:mergeDexDebugAndroidTest
app:mergeExtDexDebug
app:mergeExtDexDebugAndroidTest
app:mergeReleaseAssets
app:mergeReleaseJniLibFolders
app:mergeReleaseResources
app:mergeReleaseShaders
app:packageDebug
app:packageDebugAndroidTest
app:packageDebugBundle
app:packageDebugUniversalApk
app:packageRelease
app:packageReleaseBundle
app:packageReleaseUniversalApk
app:preBuild
app:preDebugAndroidTestBuild
app:preDebugBuild
app:preDebugUnitTestBuild
app:prepareLintJar
app:prepareLintJarForPublish
app:preReleaseBuild
app:preReleaseUnitTestBuild
app:processDebugAndroidTestJavaRes
app:processDebugAndroidTestManifest
app:processDebugAndroidTestResources
app:processDebugJavaRes
app:processDebugManifest
app:processDebugResources
app:processDebugUnitTestJavaRes
app:processReleaseJavaRes
app:processReleaseManifest
app:processReleaseResources
app:processReleaseUnitTestJavaRes
app:reportBuildArtifactsDebug
app:reportBuildArtifactsRelease
app:reportSourceSetTransformAndroidTest
app:reportSourceSetTransformAndroidTestDebug
app:reportSourceSetTransformDebug
app:reportSourceSetTransformMain
app:reportSourceSetTransformRelease
app:reportSourceSetTransformTest
app:reportSourceSetTransformTestDebug
app:reportSourceSetTransformTestRelease
app:resolveConfigAttr
app:signDebugBundle
app:signingConfigWriterDebug
app:signingConfigWriterDebugAndroidTest
app:signingConfigWriterRelease
app:signReleaseBundle
app:transformClassesAndResourcesWithR8ForRelease
app:transformClassesWithDexBuilderForDebug
app:transformClassesWithDexBuilderForDebugAndroidTest
app:transformNativeLibsWithMergeJniLibsForDebug
app:transformNativeLibsWithMergeJniLibsForDebugAndroidTest
app:transformNativeLibsWithMergeJniLibsForRelease
app:transformResourcesWithMergeJavaResForDebug
app:transformResourcesWithMergeJavaResForDebugAndroidTest
app:transformResourcesWithMergeJavaResForDebugUnitTest
app:transformResourcesWithMergeJavaResForRelease
app:transformResourcesWithMergeJavaResForReleaseUnitTest
app:validateSigningDebug
app:validateSigningDebugAndroidTest
app:validateSigningRelease
app:writeDebugApplicationId
app:writeDebugModuleMetadata
app:writeReleaseApplicationId
app:writeReleaseModuleMetadata

What am I missing? I'm totally new to gradle so please bear with me. Thank you for making this awesome plugin. Excited to use it.

appCenter gradle tasks not visible

Included plugin by adding following to the app/build.gradle as stated here:
plugins { id "com.betomorrow.appcenter" version "1.1.4" }

Not sure if readme is missing something or something is broken but after gradle sync, I can't see any new tasks when trying with:
./gradlew tasks | grep appCenter

In which group new tasks should appear?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.