Coder Social home page Coder Social logo

microsoft / appcenter-sdk-android Goto Github PK

View Code? Open in Web Editor NEW
271.0 36.0 135.0 17.09 MB

Development repository for the App Center SDK for Android

License: Other

Java 99.16% Shell 0.31% PowerShell 0.27% Makefile 0.02% CMake 0.06% C++ 0.18%
mobile-center android appcenter

appcenter-sdk-android's Introduction

Coverage Status GitHub Release license Project Map

Visual Studio App Center SDK for Android

App Center is your continuous integration, delivery and learning solution for Android apps. Get faster release cycles, higher-quality apps, and the insights to build what users want.

The App Center SDK uses a modular architecture so you can use any or all of the following services:

  1. App Center Analytics: App Center Analytics helps you understand user behavior and customer engagement to improve your app. The SDK automatically captures session count, device properties like model, OS version, etc. You can define your own custom events to measure things that matter to you. All the information captured is available in the App Center portal for you to analyze the data.

  2. App Center Crashes: App Center Crashes will automatically generate a crash log every time your app crashes. The log is first written to the device's storage and when the user starts the app again, the crash report will be sent to App Center. Collecting crashes works for both beta and live apps, i.e. those submitted to the App Store. Crash logs contain valuable information for you to help fix the crash.

  3. App Center Distribute: App Center Distribute will let your users install a new version of the app when you distribute it via the App Center. With a new version of the app available, the SDK will present an update dialog to the users to either download or postpone the new version. Once they choose to update, the SDK will start to update your application.

    Google Play considers the in-app update code as malicious behavior even if it isn’t used at runtime. Please use App Center Distribute Play instead before submitting your app to Google Play. Failure to not remove the in-app update code can lead to noncompliance and removal of the app from Google Play. See Remove in-app updates for Google Play builds documentation for details.

  4. App Center Distribute Play: App Center Distribute Play is stubbing the Distribute package's APIs to avoid Google Play rejecting the application for malicious behavior. It must be used only for build variants which are going to be published on Google Play.

1. Get started

It is super easy to use App Center. Have a look at our get started documentation and onboard your app within minutes. Our detailed documentation is available as well.

2. Contributing

We are looking forward to your contributions via pull requests.

2.1 Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

2.2 Contributor License

You must sign a Contributor License Agreement before submitting your pull request. To complete the Contributor License Agreement (CLA), you will need to submit a request via the form and then electronically sign the CLA when you receive the email containing the link to the document. You need to sign the CLA only once to cover submission to any Microsoft OSS project.

3. Contact

3.1 Support

App Center SDK support is provided directly within the App Center portal. Any time you need help, just log in to App Center, then click the blue chat button in the lower-right corner of any page and our dedicated support team will respond to your questions and feedback. For additional information, see the App Center Help Center.

3.2 Twitter

We're on Twitter as @vsappcenter.

appcenter-sdk-android's People

Contributors

achocron avatar anatolypristensky avatar chethanreddyvelverti avatar dhei avatar dmitriykirakosyan avatar dtrabo avatar elamalani avatar guperrot avatar hovsepm avatar iamclement avatar jaeklim avatar jamminroot avatar manjubp avatar manuchandel avatar matkovivan avatar matthiaswenz avatar mikhailsuendukov avatar nikitag-ms avatar owenniblock avatar owlstronaut avatar roland-chernov avatar shadyabarada avatar smithaborkar avatar thyeggman avatar tjyung avatar vvechkanov avatar yimysty avatar yoannchaudet avatar zhangcc01 avatar zongrenfeng avatar

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

appcenter-sdk-android's Issues

StackOverflowError on App start

Description

StackOverflowError during app start

Repro Steps

Please list the steps used to reproduce your issue.

  1. connect app to app center with provided code
  2. after using you app for a while, when it crashes, bad things happen

Details

  1. Which SDK version are you using?

    • 1.8.0
  2. Which OS version did you experience the issue on?

    • Android 7.0
  3. What device version did you see this error on? Were you using an emulator or a physical device?

    • physical tablet device
  4. What third party libraries are you using?

    • lots of them, but I lack to see the importance here
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

I will work on collecting the logs, as I need a new deploy, but for now, here is the stack trace:

STACK_TRACE: java.lang.StackOverflowError
	at dalvik.system.BlockGuard.getThreadPolicy(BlockGuard.java:140)
	at libcore.io.BlockGuardOs.read(BlockGuardOs.java:148)
	at libcore.io.IoBridge.read(IoBridge.java:432)
	at java.io.FileInputStream.read(FileInputStream.java:179)
	at libcore.io.Streams.readSingleByte(Streams.java:41)
	at java.io.FileInputStream.read(FileInputStream.java:175)
	at java.io.FilterInputStream.read(FilterInputStream.java:114)
	at java.io.ObjectInputStream.checkReadPrimitiveTypes(ObjectInputStream.java:405)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:770)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1137)
	at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:455)
	at java.lang.Throwable.readObject(Throwable.java:444)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:511)
	at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
	at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
	at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1855)
	at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
	at com.microsoft.appcenter.utils.storage.StorageHelper$InternalStorage.readObject(StorageHelper.java:425)
	at com.microsoft.appcenter.crashes.Crashes.buildErrorReport(Crashes.java:750)
	at com.microsoft.appcenter.crashes.Crashes.processPendingErrors(Crashes.java:646)
	at com.microsoft.appcenter.crashes.Crashes.onStarted(Crashes.java:367)
	at com.microsoft.appcenter.AppCenter.finishStartServices(AppCenter.java:787)
	at com.microsoft.appcenter.AppCenter.access$500(AppCenter.java:49)
	at com.microsoft.appcenter.AppCenter$8.run(AppCenter.java:709)
	at android.os.Handler.handleCallback(Handler.java:615)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:137)
	at android.os.HandlerThread.run(HandlerThread.java:60)

In-app update not working properly when there is more than one Activity (Android)

Description

I'm trying to use the in-app update feature. The app has more than one activity (pretty normal stuff). I initialize the framework on the SplashActivity and after some delay it transitions to a LoginActivity. That seems to break the update flow, when this happens the download Dialog is shown, but it then gets stuck in a loop, it always shows the "install" dialog. I tried getting rid of the second Activity and then it works! The first dialog shows up (the Download Dialog) and it automatically installs the app.

Repro Steps

Please list the steps used to reproduce your issue.

  1. use AppCenter.start(...) on one Activity and then go to another Activity
  2. Loop trying to install

Details

  1. Logs:
Release is mandatory, ignoring any postpone action.
Latest release is more recent.
Calling listener.onReleaseAvailable.
Calling listener.onReleaseAvailable.
Already checking or checked latest release.
Distribute service has already been enabled.
Schedule download...
Start downloading new release, url=https:xxxx
Check download id=196
currentSize=0 totalSize=-1
Check download id=196
currentSize=72745 totalSize=10690258
Check download id=196
currentSize=72745 totalSize=10690258
Check download id=196
currentSize=72745 totalSize=10690258

Check download id=196
Download was successful for id=196 uri=content://downloads/my_downloads/196
Show install UI now intentUri=file:///data/user/0/com.android.providers.downloads/cache/downloadfile.bin
Store downloaded group id=xxx release hash=xxx release id=13
Already checking or checked latest release.

Check download id=196
Download was successful for id=196 uri=content://downloads/my_downloads/196
Show install UI now intentUri=file:///data/user/0/com.android.providers.downloads/cache/downloadfile.bin
Store downloaded group id=xxx release hash=xxx release id=13
Already checking or checked latest release.


Crash with NullPointerException on launch

Description

App crash on start when distribution is activated.

Repro Steps

Please list the steps used to reproduce your issue.

  1. Install the app with AppCenter and Distribution activated
  2. The browser open
  3. Minimize all
  4. Return to the app
  5. The App Crash (I only reproduce it on one device)

Details

  1. Which SDK version are you using?
    • e.g. 1.11.0
  2. Which OS version did you experience the issue on?
    • Android 7.1.2
  3. What device version did you see this error on? Were you using an emulator or a physical device?
    • Redmi 4X
  4. What third party libraries are you using?
    • Xamarin.Forms
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

The stacktrace of the crash :
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app/com.microsoft.appcenter.distribute.DeepLinkActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2723) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2784) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1523) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6238) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference at com.microsoft.appcenter.utils.storage.SharedPreferencesManager.getString(SharedPreferencesManager.java:205) at com.microsoft.appcenter.utils.storage.SharedPreferencesManager.getString(SharedPreferencesManager.java:194) at com.microsoft.appcenter.distribute.Distribute.storeUpdateSetupFailedParameter(Distribute.java:896) at com.microsoft.appcenter.distribute.DeepLinkActivity.onCreate(DeepLinkActivity.java:45) at android.app.Activity.performCreate(Activity.java:6857) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2676) ... 9 more

Support DistributeListener.onNoUpdateAvailable like hockeyApp

Description

With hockeyApp UpdateManagerListener.onNoUpdateAvailable listener, I gave a toast message to user when user manually clicks 'update app' button but no update existed. Without this listener, the user does not know the update request is well triggered or not.

Could you please add this feature to SDK?

Details

  1. Which SDK version are you using?
    • 2.2.0
  2. Which OS version did you experience the issue on?
    • Android 7

Test Webhook

Description

Please describe the issue you are facing or a feature you would like to be added to the SDK.

Repro Steps

Please list the steps used to reproduce your issue.

Details

  1. Which SDK version are you using?
    • e.g. 1.5.0
  2. Which OS version did you experience the issue on?
    • e.g. Android 8.1.0
  3. What device version did you see this error on? Were you using an emulator or a physical device?
    • e.g. Google Pixel 2 emulator, Samsung Galaxy S8 physical device
  4. What third party libraries are you using?
    • example
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

Appcenter does not save crash logs

Description

I have migrated my android app from HockeyApp to AppCenter. during my tests, I noticed that it is not saving the crash logs, once a crash occurs. There is an exception showing that the log file is not even being created:

E/AppCenterCrashes: Error writing error log to file
    java.io.FileNotFoundException: error/16d493ff-05d9-4131-8d0e-36a0acff7dc9.json: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:452)
at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
        at java.io.FileWriter.<init>(FileWriter.java:42)
        at com.microsoft.appcenter.utils.storage.FileManager.write(FileManager.java:140)
        at com.microsoft.appcenter.crashes.Crashes.saveErrorLogFiles(Crashes.java:1070)
        at com.microsoft.appcenter.crashes.Crashes.saveUncaughtException(Crashes.java:1059)
        at com.microsoft.appcenter.crashes.Crashes.saveUncaughtException(Crashes.java:1023)
        at com.microsoft.appcenter.crashes.UncaughtExceptionHandler.uncaughtException(UncaughtExceptionHandler.java:20)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

Push message without visible notification

Description

I'm evaluating the use of AppCenter Push but am not able to receive a push message without the SDK creating and displaying a visible notification.
What I'd want is to be able to control if there should be a visible notification for the user or not, depending on the message content.
Should I be using plain FCM for this and not AppCenter Push, as it seems to default to visible notifications?

Support Flutter

This is a follow up from #933, where @yuecelm implicitly asked for Flutter support.

If you are asking for Flutter support in App Center, please upvote/comment on this issue.

Cheers!
Benjamin

Configure default notification icon

Problem:

PushNotifier.java uses application launcher icon as notification icon in case no icon was sent inside the push.

According to Android guidelines for Status Bar Icons

"Status bar icons are composed simply of white pixels on a transparent backdrop..."

In case the app launcher icon is 100% opaque and is used as a notification icon, it is displayed as a plain white circle. This issue can be reproduced on devices with stock Android UI like Nexus. Xiaomi or Samsung phones display launcher icon in the status bar as expected.

Possible solution:

According to Topic Messaging on Android a native Android developer can add these lines inside the Manifest application tag to provide a custom default icon for push notification.

<meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />

As long as AppCenter.Push implementation uses Firebase, it would be very helpful if PushNotifier.java attempts to read meta-data value from Manifest before assigning notification icon to launcher icon.

ANR because of deadlock in the SDK

I started receiving the following ANRs in the Play Console after I started using the 1.11.2 and 1.11.3 releases:

"main" prio=5 tid=1 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x72b35c20 self=0x727bcc3e00
  | sysTid=17629 nice=0 cgrp=default sched=0/0 handle=0x73018aa9a8
  | state=S schedstat=( 8674365711 917464738 12512 ) utm=673 stm=196 core=0 HZ=100
  | stack=0x7fe7f1a000-0x7fe7f1c000 stackSize=8MB
  | held mutexes=
  at com.microsoft.appcenter.utils.NetworkStateHelper.a (NetworkStateHelper.java)
- waiting to lock <0x095ef410> (a o.aqu) held by thread 16
  at com.microsoft.appcenter.http.HttpClientNetworkStateHandler.callAsync (HttpClientNetworkStateHandler.java:43)
- locked <0x018348ba> (a o.aot)
  at com.microsoft.appcenter.http.HttpClientCallDecorator.run (HttpClientCallDecorator.java:49)
- locked <0x002afb09> (a o.aou$a)
  at android.os.Handler.handleCallback (Handler.java:790)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:192)
  at android.app.ActivityThread.main (ActivityThread.java:6703)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:826)
"ConnectivityThread" prio=5 tid=16 Blocked
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x13880860 self=0x726ffa8400
  | sysTid=17656 nice=0 cgrp=default sched=0/0 handle=0x726230e4f0
  | state=S schedstat=( 15532083 13352710 50 ) utm=0 stm=1 core=0 HZ=100
  | stack=0x726220c000-0x726220e000 stackSize=1037KB
  | held mutexes=
  at o.aot.a (SourceFile)
- waiting to lock <0x018348ba> (a o.aot) held by thread 1
  at o.aqu.a (SourceFile:237)
  at o.aqu.b (SourceFile:184)
- locked <0x095ef410> (a o.aqu)
  at o.aqu.b (SourceFile:29)
  at o.aqu$1.onLost (SourceFile:119)
  at android.net.ConnectivityManager$CallbackHandler.handleMessage (ConnectivityManager.java:2883)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:192)
  at android.os.HandlerThread.run (HandlerThread.java:65)

where

com.microsoft.appcenter.utils.NetworkStateHelper -> o.aqu:
    com.microsoft.appcenter.utils.NetworkStateHelper sSharedInstance -> a
    android.content.Context mContext -> b
    android.net.ConnectivityManager mConnectivityManager -> c
    java.util.Set mListeners -> d
    java.util.Set mAvailableNetworks -> e
    android.net.ConnectivityManager$NetworkCallback mNetworkCallback -> f
    java.lang.String mNetworkType -> g
    com.microsoft.appcenter.utils.NetworkStateHelper$ConnectivityReceiver mConnectivityReceiver -> h
    50:82:void <init>(android.content.Context) -> <init>
    91:94:com.microsoft.appcenter.utils.NetworkStateHelper getSharedInstance(android.content.Context) -> a
    102:138:void reopen() -> b
    143:143:android.content.IntentFilter getOldIntentFilter() -> c
    152:152:boolean isNetworkConnected() -> a
    159:170:void onNetworkAvailable(android.net.Network) -> a
    181:188:void onNetworkLost(android.net.Network) -> b
    197:206:void updateNetworkType() -> d
    218:228:void handleNetworkStateUpdate() -> e
    236:239:void notifyNetworkStateUpdated(boolean) -> a
    243:250:void close() -> close
    258:259:void addListener(com.microsoft.appcenter.utils.NetworkStateHelper$Listener) -> a
    267:268:void removeListener(com.microsoft.appcenter.utils.NetworkStateHelper$Listener) -> b
    29:29:void access$000(com.microsoft.appcenter.utils.NetworkStateHelper,android.net.Network) -> a
    29:29:void access$100(com.microsoft.appcenter.utils.NetworkStateHelper,android.net.Network) -> b
    29:29:void access$300(com.microsoft.appcenter.utils.NetworkStateHelper) -> a
com.microsoft.appcenter.http.HttpClientNetworkStateHandler -> o.aot:
    com.microsoft.appcenter.utils.NetworkStateHelper mNetworkStateHelper -> b
    java.util.Set mCalls -> c
    26:38:void <init>(com.microsoft.appcenter.http.HttpClient,com.microsoft.appcenter.utils.NetworkStateHelper) -> <init>
    42:49:com.microsoft.appcenter.http.ServiceCall callAsync(java.lang.String,java.lang.String,java.util.Map,com.microsoft.appcenter.http.HttpClient$CallTemplate,com.microsoft.appcenter.http.ServiceCallback) -> a
    54:57:void close() -> close
    61:63:void reopen() -> a
    67:79:void onNetworkStateUpdated(boolean) -> a
com.microsoft.appcenter.http.HttpClientRetryer$RetryableCall -> o.aou$a:
    int mRetryCount -> d
    com.microsoft.appcenter.http.HttpClientRetryer this$0 -> c
    81:83:void <init>(com.microsoft.appcenter.http.HttpClientRetryer,com.microsoft.appcenter.http.HttpClient,java.lang.String,java.lang.String,java.util.Map,com.microsoft.appcenter.http.HttpClient$CallTemplate,com.microsoft.appcenter.http.ServiceCallback) -> <init>
    93:105:void onCallFailed(java.lang.Exception) -> a
com.microsoft.appcenter.utils.NetworkStateHelper -> o.aqu:
    com.microsoft.appcenter.utils.NetworkStateHelper sSharedInstance -> a
    android.content.Context mContext -> b
    android.net.ConnectivityManager mConnectivityManager -> c
    java.util.Set mListeners -> d
    java.util.Set mAvailableNetworks -> e
    android.net.ConnectivityManager$NetworkCallback mNetworkCallback -> f
    java.lang.String mNetworkType -> g
    com.microsoft.appcenter.utils.NetworkStateHelper$ConnectivityReceiver mConnectivityReceiver -> h
    50:82:void <init>(android.content.Context) -> <init>
    91:94:com.microsoft.appcenter.utils.NetworkStateHelper getSharedInstance(android.content.Context) -> a
    102:138:void reopen() -> b
    143:143:android.content.IntentFilter getOldIntentFilter() -> c
    152:152:boolean isNetworkConnected() -> a
    159:170:void onNetworkAvailable(android.net.Network) -> a
    181:188:void onNetworkLost(android.net.Network) -> b
    197:206:void updateNetworkType() -> d
    218:228:void handleNetworkStateUpdate() -> e
    236:239:void notifyNetworkStateUpdated(boolean) -> a
    243:250:void close() -> close
    258:259:void addListener(com.microsoft.appcenter.utils.NetworkStateHelper$Listener) -> a
    267:268:void removeListener(com.microsoft.appcenter.utils.NetworkStateHelper$Listener) -> b
    29:29:void access$000(com.microsoft.appcenter.utils.NetworkStateHelper,android.net.Network) -> a
    29:29:void access$100(com.microsoft.appcenter.utils.NetworkStateHelper,android.net.Network) -> b
    29:29:void access$300(com.microsoft.appcenter.utils.NetworkStateHelper) -> a
com.microsoft.appcenter.utils.NetworkStateHelper$1 -> o.aqu$1:
    com.microsoft.appcenter.utils.NetworkStateHelper this$0 -> a
    110:110:void <init>(com.microsoft.appcenter.utils.NetworkStateHelper) -> <init>
    114:115:void onAvailable(android.net.Network) -> onAvailable
    119:120:void onLost(android.net.Network) -> onLost

It seems that:

  1. thread 1 holds HttpClientNetworkStateHandler lock and deadlocks on locking NetworkStateHelper
  2. thread 16 holds NetworkStateHelper lock and deadlocks on locking HttpClientNetworkStateHandler

This issue didn't exist in the 1.9.0 release I used for the previous version of my app, then I made a release with 1.11.2 where there were just a few ANRs like that and once I made a release with 1.11.3, things got much worse. I have seen there has been some work done in the affected classes recently so these probably introduced the issue.

From the reports, it seems this issue happens only on devices with Android 8 and above from various manufacturers. I haven't been able to reproduce it myself.

Since thread 1 seems to deadlock on getSharedInstance(), it might be enough to protect the singleton with a separate lock (though I'm not sure if it just doesn't move the deadlock somewhere else, I haven't studied the code in much detail).

Custom event property is not showing up

I am trying to send a Http url and a HTML content in two different properties of a custom event .

There are three other properties as well . Out of the five only these three with simple data as string are showing up on the Analytics page . Other two properties with Http url and HTML content is not showing.

I can see the property in Log Flow of Mobile Center but not in Events page.

SQLiteDatabaseLockedException: database is locked DatabaseManager.java, line 410 Crash

Hey,
Im receiving this error/crash since the latest update to 1.11.0 for Android.

com.microsoft.appcenter.utils.storage.DatabaseManager.getMaxSize
DatabaseManager.java, line 410
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)

and the stack trace from AppCenter web portal:

android.database.sqlite.SQLiteConnection.nativeExecuteForLong SQLiteConnection.java android.database.sqlite.SQLiteConnection.executeForLong SQLiteConnection.java:598 android.database.sqlite.SQLiteSession.executeForLong SQLiteSession.java:652 android.database.sqlite.SQLiteStatement.simpleQueryForLong SQLiteStatement.java:107 android.database.DatabaseUtils.longForQuery DatabaseUtils.java:825 android.database.DatabaseUtils.longForQuery DatabaseUtils.java:813 android.database.sqlite.SQLiteDatabase.getMaximumSize SQLiteDatabase.java:902 com.microsoft.appcenter.utils.storage.DatabaseManager.getMaxSize DatabaseManager.java:410 com.microsoft.appcenter.persistence.DatabasePersistence.putLog DatabasePersistence.java:275 com.microsoft.appcenter.channel.DefaultChannel.enqueue DefaultChannel.java:674 com.microsoft.appcenter.analytics.Analytics$8.run Analytics.java:781 com.microsoft.appcenter.AbstractAppCenterService$4.run AbstractAppCenterService.java:301 com.microsoft.appcenter.AppCenter$7.run AppCenter.java:703 android.os.Handler.handleCallback Handler.java:739 android.os.Handler.dispatchMessage Handler.java:95 android.os.Looper.loop Looper.java:159 android.os.HandlerThread.run HandlerThread.java:61

test webhook

Description

Getting an exception on calling AppCenter.Start(). I'm looking through the demo project(s) and I'm not seeing anything obvious that I might be missing.

System.ArgumentException
  HResult=0x80070057
  Message=The path is not of a legal form.
  Source=mscorlib
  StackTrace:
   at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.InternalGetDirectoryName(String path)
   at Microsoft.AppCenter.Utils.DefaultApplicationSettings.OpenConfiguration()
   at Microsoft.AppCenter.Utils.DefaultApplicationSettings.ReadAll()
   at Microsoft.AppCenter.Utils.DefaultApplicationSettings..ctor()
   at Microsoft.AppCenter.AppCenter..ctor()
   at Microsoft.AppCenter.AppCenter.get_Instance()
   at Microsoft.AppCenter.AppCenter.PlatformStart(String appSecret, Type[] services)
   at Microsoft.AppCenter.AppCenter.Start(String appSecret, Type[] services)
   at Acars.App.OnStartup(StartupEventArgs e) in C:\Users\Nabeel\source\repos\ACARS\AcarsClient\App.xaml.cs:line 30
   at System.Windows.Application.<.ctor>b__1_0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at System.Windows.Application.Run()
   at Acars.App.Main()

Repro Steps

Please list the steps used to reproduce your issue.

  1. Starting up the app

I've also tried to invoke DefaultApplicationSettings() directly, and also getting that error thrown:

var appSettings = new Microsoft.AppCenter.Utils.DefaultApplicationSettings();

Details

  1. What is your app platform (Xamarin.Android or Xamarin.iOS or UWP)?
    • WPF
    • .NET 4.7.2 target
  2. Which SDK version are you using?
    • v2.2.1-preview
  3. Which OS version did you experience the issue on?
    • Windows 10
  4. What device version did you see this error on? Were you using an emulator or a physical device?
    • e.g. iPhone X physical device, Google Pixel 2 emulator
  5. What third party libraries are you using?
<ItemGroup>
    <PackageReference Include="CommonServiceLocator">
      <Version>2.0.4</Version>
    </PackageReference>
    <PackageReference Include="ConcurrentHashSet">
      <Version>1.1.0</Version>
    </PackageReference>
    <PackageReference Include="ControlzEx">
      <Version>3.0.2.4</Version>
    </PackageReference>
    <PackageReference Include="Costura.Fody">
      <Version>3.3.3</Version>
    </PackageReference>
    <PackageReference Include="DeltaCompressionDotNet">
      <Version>2.0.0</Version>
    </PackageReference>
    <PackageReference Include="Discord.Net">
      <Version>2.1.0</Version>
    </PackageReference>
    <PackageReference Include="DiscordRichPresence">
      <Version>1.0.115</Version>
    </PackageReference>
    <PackageReference Include="Fody">
      <Version>4.2.1</Version>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="FSUIPCClientDLL">
      <Version>3.1.11</Version>
    </PackageReference>
    <PackageReference Include="GMap.Net.WPF">
      <Version>1.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="LiteDB">
      <Version>4.1.4</Version>
    </PackageReference>
    <PackageReference Include="MahApps.Metro">
      <Version>1.6.5</Version>
    </PackageReference>
    <PackageReference Include="MahApps.Metro.Resources">
      <Version>0.6.1</Version>
    </PackageReference>
    <PackageReference Include="MahApps.Metro.SimpleChildWindow">
      <Version>1.5.0</Version>
    </PackageReference>
    <PackageReference Include="MaterialDesignColors">
      <Version>1.2.0</Version>
    </PackageReference>
    <PackageReference Include="MaterialDesignThemes">
      <Version>2.6.0</Version>
    </PackageReference>
    <PackageReference Include="MaterialDesignThemes.MahApps">
      <Version>0.1.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter">
      <Version>2.2.1-preview</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter.Analytics">
      <Version>2.2.1-preview</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter.Crashes">
      <Version>2.2.1-preview</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.ApplicationInsights">
      <Version>2.7.2</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration.Xml">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.FileProviders.Abstractions">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.FileProviders.Physical">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.FileSystemGlobbing">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Primitives">
      <Version>2.2.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.NETCore.Platforms">
      <Version>2.2.2</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Win32.Primitives">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="Mono.Cecil">
      <Version>0.10.4</Version>
    </PackageReference>
    <PackageReference Include="MoonSharp">
      <Version>2.0.0</Version>
    </PackageReference>
    <PackageReference Include="NETStandard.Library">
      <Version>2.0.3</Version>
    </PackageReference>
    <PackageReference Include="Newtonsoft.Json">
      <Version>12.0.2</Version>
    </PackageReference>
    <PackageReference Include="NLog">
      <Version>4.6.6</Version>
    </PackageReference>
    <PackageReference Include="NLog.Config">
      <Version>4.6.6</Version>
    </PackageReference>
    <PackageReference Include="NLog.Schema">
      <Version>4.6.6</Version>
    </PackageReference>
    <PackageReference Include="Prism.Core">
      <Version>7.0.0.396</Version>
    </PackageReference>
    <PackageReference Include="Prism.Unity">
      <Version>6.3.0</Version>
    </PackageReference>
    <PackageReference Include="Prism.Wpf">
      <Version>6.3.0</Version>
    </PackageReference>
    <PackageReference Include="RestSharp">
      <Version>106.6.10</Version>
    </PackageReference>
    <PackageReference Include="Scriban">
      <Version>2.1.0</Version>
    </PackageReference>
    <PackageReference Include="SharpCompress">
      <Version>0.23.0</Version>
    </PackageReference>
    <PackageReference Include="Splat">
      <Version>8.1.1</Version>
    </PackageReference>
    <PackageReference Include="sqlite-net-pcl">
      <Version>1.5.231</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.bundle_green">
      <Version>1.1.14</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.core">
      <Version>1.1.14</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.lib.e_sqlite3.linux">
      <Version>1.1.14</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.lib.e_sqlite3.osx">
      <Version>1.1.14</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.lib.e_sqlite3.v110_xp">
      <Version>1.1.14</Version>
    </PackageReference>
    <PackageReference Include="SQLitePCLRaw.provider.e_sqlite3.net45">
      <Version>1.1.14</Version>
    </PackageReference>
    <PackageReference Include="Stateless">
      <Version>4.2.1</Version>
    </PackageReference>
    <PackageReference Include="System.AppContext">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Buffers">
      <Version>4.5.0</Version>
    </PackageReference>
    <PackageReference Include="System.Collections">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Collections.Concurrent">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.ComponentModel.Annotations">
      <Version>4.5.0</Version>
    </PackageReference>
    <PackageReference Include="System.Console">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Diagnostics.Debug">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Diagnostics.DiagnosticSource">
      <Version>4.5.1</Version>
    </PackageReference>
    <PackageReference Include="System.Diagnostics.Tools">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Diagnostics.Tracing">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Globalization">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Globalization.Calendars">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.IO">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.IO.Compression">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.IO.Compression.ZipFile">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.IO.FileSystem">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.IO.FileSystem.Primitives">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Linq">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Linq.Expressions">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Memory">
      <Version>4.5.3</Version>
    </PackageReference>
    <PackageReference Include="System.Net.Http">
      <Version>4.3.4</Version>
    </PackageReference>
    <PackageReference Include="System.Net.Primitives">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Net.Sockets">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Numerics.Vectors">
      <Version>4.5.0</Version>
    </PackageReference>
    <PackageReference Include="System.ObjectModel">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Reflection">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Reflection.Extensions">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Reflection.Primitives">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Resources.ResourceManager">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.CompilerServices.Unsafe">
      <Version>4.5.2</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.Extensions">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.Handles">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.InteropServices">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.InteropServices.RuntimeInformation">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Runtime.Numerics">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Security.AccessControl">
      <Version>4.5.0</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Cryptography.Algorithms">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Cryptography.Encoding">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Cryptography.Primitives">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Cryptography.X509Certificates">
      <Version>4.3.2</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Cryptography.Xml">
      <Version>4.5.0</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Permissions">
      <Version>4.5.0</Version>
    </PackageReference>
    <PackageReference Include="System.Security.Principal.Windows">
      <Version>4.5.1</Version>
    </PackageReference>
    <PackageReference Include="System.Text.Encoding">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Text.Encoding.Extensions">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Text.RegularExpressions">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Threading">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Threading.Tasks">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Threading.Timer">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="System.Xml.ReaderWriter">
      <Version>4.3.1</Version>
    </PackageReference>
    <PackageReference Include="System.Xml.XDocument">
      <Version>4.3.0</Version>
    </PackageReference>
    <PackageReference Include="Unity">
      <Version>5.11.1</Version>
    </PackageReference>
  </ItemGroup>

Avoid in-app update page for distribution

Hi,

Is it possible to avoid in-app update registration the first time the app is launched? I'm prototyping the distribution of an app for more than 20000 devices and I'm figuring out if there is a way to install the app the first time without doing it from app center.

I tried StorageHelper.PreferencesStorage.putString(PREFERENCE_KEY_DISTRIBUTION_GROUP_ID, "<group_id>"); but didn't work :-)

Track exception is missing

When does the trackException going to be implemented. Seems that it is not yet in the android sdk for app center.

Version: 1.11.2

TargetFrameworkVersion for Microsoft.AppCenter.Analytics.Android.Bindings greater than that of your project

When building the Android app with AppCenter NuGets version 1.3.0 added to our Android project, we get warnings like the following:

Warning XA0105: The $(TargetFrameworkVersion) for Microsoft.AppCenter.Analytics.Android.Bindings.dll (v8.0) is greater than the $(TargetFrameworkVersion) for your project (v7.1). You need to increase the $(TargetFrameworkVersion) for your project. (XA0105)

This is basically the same bug that was opened almost a year ago on bugzilla. There is a sample project attached to that bugzilla demonstrating the problem. (See attachment named "updated sample project with new repro".)

There is no way to prevent this warning from showing up, aside from upgrading the target framework of our project. (We're not ready to do that yet, because of changes to backgrounding in Android Oreo.) Is there a reason the AppCenter dlls needs to target Android 8.0? Why can't they target an early framework version for compatibility?

Problem with AppCenter In-App Updates

What App Center service does this affect?
AppCenter In-App Updates

Describe the bug
When releasing a new version of my app, users who are on Android version 7.0 can upgrade within the application but users who are on Android version 5.1 cant.

Expected behavior
I expect all Android versions to be able to in-app update. This was previously never an issue.

Smartphone (please complete the following information):

  • GT-500 / GT-500V
  • Android 5.1 / Android 7.0

-developed using Xamarin with minSdkVersion=17 and targetSdkVersion=27

Distribute.setEnabled(false) has no effect for non debuggable builds

Description

I'm running the AppCenter Distribute normally only for non-production builds to distribute internally and I want it disabled when I upload to Google Play. I have setup the setEnabled and setEnabledForDebuggableBuild both to false in this order. Despite of that my Google Play Live Production app suddenly started opening the AppCenter in the browser every time I start it.

Repro Steps

  1. Setup the AppCenter Distribute SDK in the main Application class of a project like this:
    Distribute.setEnabled(false); Distribute.setEnabledForDebuggableBuild(false); AppCenter.start(this, "<my appcenter id>", Crashes.class, Analytics.class, Distribute.class);
  2. Build and run a non-debuggable build for your application. (For example a production release)
  3. The SDK opens AppCenter website in an external browser although it shouldn't.

Details

  1. Which SDK version are you using?
    • e.g. 2.1.0
  2. Which OS version did you experience the issue on?
    • any Android OS
  3. What device version did you see this error on? Were you using an emulator or a physical device?
    • Google Pixel 2 , Pixel XL, Emulator
  4. What third party libraries are you using?
    • Unrelated. Appcenter gets initialized before any other libraries in the very beginning of the main application file.
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:
    I cannot do that, the issue happens on non-debuggable builds, so I cannot see any log messages.

My currrent workaround:
The only way to make sure I don't get this wrong behavior is by no including the Distribute.class at all when starting AppCenter SDK.

Quotation symbols break gradlew install

Description

Can not run gradlew install.

Repro Steps

  1. Checkout the latest version of the SDK.
  2. Run gradlew install

Face
image

Comment: wrong quotation symbols in DeviceExtension, UserExtension, OsExtension:
image

Details

Which SDK version are you using?
- develop branch
OS
- Windows 10 Enterprise 64-Bit

out of memory errors

Description

One of the most common errors I see in AppCenter on my android react-native project is the following:

com.microsoft.appcenter.crashes.Crashes.saveUncaughtException Crashes.java, line 923
java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available

It seems that the real error report isn't transmitted, because AppCenter Crashes crashes itself, before being able to transmit the error.

Details

I have no idea how to reproduce this. I am using appcenter-crashes@^1.6.0 for react native.

Where is LoginManager from HockeyApp SDK?

As HockeyApp will be moved completely to AppCenter later this year I would expect that AppCenter provides the same features as HockeyApp. But I cannot find the LoginManager in the AppCenter SDK, see https://support.hockeyapp.net/kb/client-integration-android/authenticating-users-on-android.

Is there a plan to integrate this feature later this year before HockeyApp will be shutdown?
So I can publish my app today by using HockeyApp and move to AppCenter as soon as it is available.

Or will AppCenter not support this feature anymore? Which would be very sad, because then I have to implement it on my own which can be quite cumbersome.

Thanks for some feedback
Ben

NPE from errorLogReport.log.getException()

Description

Received the following stacktrace from App Center from a customer device

com.microsoft.appcenter.crashes.Crashes$9.run Crashes.java:841
com.microsoft.appcenter.AbstractAppCenterService$4.run AbstractAppCenterService.java:306
com.microsoft.appcenter.AppCenter$7.run AppCenter.java:722
android.os.Handler.handleCallback Handler.java:789
android.os.Handler.dispatchMessage Handler.java:98
android.os.Looper.loop Looper.java:164
android.os.HandlerThread.run HandlerThread.java:65

Repro Steps

Please list the steps used to reproduce your issue.

No known repro steps. Issue from a customer device.

Details

  1. Which SDK version are you using?
    2.0.0
  2. Which OS version did you experience the issue on?
    Android 8.0.0
  3. What device version did you see this error on? Were you using an emulator or a physical device?
    Moto Z (2) Play
  4. What third party libraries are you using?
    A lot... but with this issue no other third party lib involved
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:
    N/A since this is from a customer device

Crash java.lang.SecurityException on app start cause by BrowserUtils.openBrowser

Description

Integrated AppCenter crash reporting, analytics and distribute. On starting the main activity of my application, it crashes the following crash log:

Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=https://install.appcenter.ms/... cmp=com.opera.browser/.leanplum.LeanplumCatchActivity } from ProcessRecord{a4a5f86 23827:**my_package_name***/u0a198} (pid=23827, uid=10198) not exported from uid 10145
        ........
        at com.microsoft.appcenter.distribute.BrowserUtils.openBrowser(BrowserUtils.java:93)
        at com.microsoft.appcenter.distribute.DistributeUtils.updateSetupUsingBrowser(DistributeUtils.java:175)
        at com.microsoft.appcenter.distribute.Distribute.resumeDistributeWorkflow(Distribute.java:827)
        at com.microsoft.appcenter.distribute.Distribute.onActivityResumed(Distribute.java:481)
        at android.app.Application.dispatchActivityResumed(Application.java:218)
        ...........

My suspicion is that either the Opera does not support this type of launch, or simply the Xiaomi Redmi 5A Android does not allow directly starting activity by package name and class name. I suppose it requires that the user always goes through the IntentChooser.

Repro Steps

Please list the steps used to reproduce your issue.

  1. Use Xiaomi Redmi 5A
  2. Set Opera as the default browser.

Details

  1. Which SDK version are you using?

    • 2.0.0
  2. Which OS version did you experience the issue on?

    • Android 8.1.0
  3. What device version did you see this error on? Were you using an emulator or a physical device?

    • Xiaomi Redmi 5A , physical device
  4. What third party libraries are you using?

    • org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21
    • androidx.appcompat:appcompat:1.0.2
    • com.google.android.material:material:1.0.0
    • androidx.core:core-ktx:1.0.2
    • androidx.constraintlayout:constraintlayout:1.1.3
    • com.jakewharton.timber:timber:4.7.1
    • io.reactivex.rxjava2:rxjava:2.2.0
    • io.reactivex.rxjava2:rxkotlin:2.2.0
    • io.reactivex.rxjava2:rxandroid:2.1.0
    • com.microsoft.appcenter:appcenter-analytics:2.0.0
    • com.microsoft.appcenter:appcenter-crashes:2.0.0
    • com.microsoft.appcenter:appcenter-distribute:2.0.0
    • com.google.protobuf:protobuf-lite:3.0.0
    • androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0
    • androidx.navigation:navigation-fragment-ktx:2.0.0
    • androidx.navigation:navigation-ui-ktx:2.0.0
    • androidx.work:work-runtime-ktx:2.0.1
    • androidx.multidex:multidex:2.0.1
    • com.google.android.gms:play-services-location:16.0.0
    • org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1
    • org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1
    • androidx.recyclerview:recyclerview:1.0.0
    • com.google.firebase:firebase-core:16.0.9
    • com.google.firebase:firebase-auth:17.0.0
    • com.google.firebase:firebase-storage:17.0.0
    • com.google.android.gms:play-services-maps:16.1.0
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

Just a side note before you review the logs:

  • Normally it is not possible to provide logs for the Distribute, due to the fact that it only works if the app is not in debuggable state. The cause is in this line in the SDK's Distribute.java:
/* Don't go any further it this is a debug app. */
            if ((mContext.getApplicationInfo().flags & FLAG_DEBUGGABLE) == FLAG_DEBUGGABLE) {
                AppCenterLog.info(LOG_TAG, "Not checking in app updates in debug.");
                mWorkflowCompleted = true;
                return;
            }

In order to provide you the log below, I need to set a breakpoint at runtime and overwrite the debuggable flag mContext.getApplicationInfo().flags to allow for the logic to continue. Testing this would be much more convenient if you merge one of the open feature requests for making this debuggable behavior optional. Anyway, allowing artificially the logic to continue, this is what happens.

I/AppCenter: App Center SDK configured successfully.
D/AppCenter: Cannot read instrumentation variables in a non-test environment.
D/AppCenter: Cannot read instrumentation variables in a non-test environment.
D/AppCenter: Cannot read instrumentation variables in a non-test environment.
D/AppCenter: Using appcenter.0.AES/CBC/PKCS7Padding/256
D/AppCenter: Using appcenter.0.RSA/ECB/PKCS1Padding/2048
I/AppCenterDistribute: Launcher activity restarted.
D/AppCenter: Loaded stored sessions: {1558107558722=1558107558722/6b51a420-8ca6-4659-8d99-eb9f9c72c76e/1558107558387, 1558107600673=1558107600673//1558107600672, 1558107785616=1558107785616//1558107785615, 1558107786348=1558107786348/ee424fa1-6438-416c-be34-afd7afa96986/1558107785615, 1558107795276=1558107795276//1558107795275, 1558107795835=1558107795835/9cadad71-4cdc-4bf8-9857-791b701fab31/1558107795275, 1558109636803=1558109636803//1558109636790, 1558109639041=1558109639041/e2e6e7d8-65f8-4bad-a21a-4a9baeb7f536/1558109636790, 1558109713851=1558109713851//1558109713833, 1558109715294=1558109715294/411e3f0a-5cfe-4f01-9b53-b7c50de28f6c/1558109713833}
D/AppCenter: Network 118 is available.
D/AppCenter: Network has been connected.
I/AppCenter: Changed maximum database size to 10485760 bytes.
D/AppCenter: addGroup(group_core)
D/AppCenter: checkPendingLogs(group_core) pendingLogCount=1
D/AppCenter: App Center initialized.
D/AppCenter: removeGroup(group_analytics)
D/AppCenter: removeGroup(group_analytics/one)
D/AppCenter: addGroup(group_analytics)
D/AppCenter: checkPendingLogs(group_analytics) pendingLogCount=2
D/AppCenter: addGroup(group_analytics/one)
D/AppCenter: checkPendingLogs(group_analytics/one) pendingLogCount=0
I/AppCenter: Analytics service started from application.
D/AppCenter: removeGroup(groupErrors)
D/AppCenter: removeGroup(groupErrors/one)
D/AppCenter: addGroup(groupErrors)
D/AppCenter: checkPendingLogs(groupErrors) pendingLogCount=0
D/AppCenter: addGroup(groupErrors/one)
D/AppCenter: checkPendingLogs(groupErrors/one) pendingLogCount=0
D/AppCenterCrashes: Processing crash report for the last session.
D/AppCenterCrashes: Processed crash report for the last session.
D/AppCenterCrashes: Process pending error file: /data/user/0/*******my_package_name******/files/error/dcd6a449-c003-47fc-ab5d-526013db57e1.json
I/AppCenter: Crashes service started from application.
D/AppCenter: removeGroup(group_distribute)
D/AppCenter: removeGroup(group_distribute/one)
D/AppCenter: addGroup(group_distribute)
D/AppCenter: checkPendingLogs(group_distribute) pendingLogCount=0
D/AppCenter: addGroup(group_distribute/one)
D/AppCenter: checkPendingLogs(group_distribute/one) pendingLogCount=0
I/AppCenter: Distribute service started from application.
D/AppCenter: Storing a log to the Persistence database for log type startService with flags=1
D/AppCenter: Stored a log to the Persistence database for log type startService with databaseId=39
D/AppCenter: enqueue(group_core) pendingLogCount=2
D/AppCenter: checkPendingLogs(group_core) pendingLogCount=2
D/AppCenter: Storing a log to the Persistence database for log type event with flags=1
D/AppCenter: Stored a log to the Persistence database for log type event with databaseId=40
D/AppCenter: enqueue(group_analytics) pendingLogCount=3
D/AppCenter: checkPendingLogs(group_analytics) pendingLogCount=3
D/AppCenterAnalytics: onActivityResumed
D/AppCenter: Storing a log to the Persistence database for log type startSession with flags=1
D/AppCenter: Stored a log to the Persistence database for log type startSession with databaseId=41
D/AppCenter: enqueue(group_analytics) pendingLogCount=4
D/AppCenter: checkPendingLogs(group_analytics) pendingLogCount=4
D/AppCenter: triggerIngestion(group_core) pendingLogCount=2
D/AppCenter: Trying to get 2 logs from the Persistence database for group_core
D/AppCenter: Returning 2 log(s) with an ID, dfbb94dc-0df9-4445-aff8-9dc2d869042c
D/AppCenter: The SID/ID pairs for returning log(s) is/are:
D/AppCenter: 	null / 36
D/AppCenter: 	null / 39
D/AppCenter: ingestLogs(group_core,dfbb94dc-0df9-4445-aff8-9dc2d869042c) pendingLogCount=0
D/AppCenter: triggerIngestion(group_analytics) pendingLogCount=4
D/AppCenter: Trying to get 4 logs from the Persistence database for group_analytics
D/AppCenter: Returning 4 log(s) with an ID, bfe6744b-35d0-4b07-8e76-18b65f92b4cb
D/AppCenter: The SID/ID pairs for returning log(s) is/are:
D/AppCenter: 	null / 37
D/AppCenter: 	411e3f0a-5cfe-4f01-9b53-b7c50de28f6c / 38
D/AppCenter: 	null / 40
D/AppCenter: 	4e99dc03-487d-4968-87fd-1b10c4a50802 / 41
D/AppCenter: ingestLogs(group_analytics,bfe6744b-35d0-4b07-8e76-18b65f92b4cb) pendingLogCount=0
D/AppCenterDistribute: InstallerPackageName=null
D/AppCenterDistribute: No token, need to open browser to url=https://install.appcenter.ms/apps/f626dbb0-bd87-46e4-9214-14d06a2fdac5/update-setup/?release_hash=23d245d9f8701123ee196698c462ccbb5ff424cd533e746e85a7a329db79ccac&redirect_id=*******my_package_name******&redirect_scheme=appcenter&request_id=97fda018-869b-4f73-9a21-2884e41cca4e&platform=Android&enable_failure_redirect=true&install_id=44d98f13-9ddb-4367-82c5-0add4dc419fe
D/AppCenterDistribute: Default browser seems to be com.android.browser/com.android.browser.LauncherActivity
D/AppCenterDistribute: Default browser is actually a picker...
D/AppCenterDistribute: Picking first browser in list.
D/AppCenterDistribute: Launch browser=com.opera.browser/com.opera.browser.leanplum.LeanplumCatchActivity
D/AppCenterCrashes: Saving uncaught exception.
D/AppCenterCrashes: Saved JSON content for ingestion into /data/user/0/*******my_package_name******/files/error/0e2db6b7-0059-4ec9-b895-11410dabc9f0.json
D/AppCenterCrashes: Saved Throwable as is for client side inspection in /data/user/0/*******my_package_name******/files/error/0e2db6b7-0059-4ec9-b895-11410dabc9f0.throwable throwable:
    java.lang.RuntimeException: Unable to resume activity {*******my_package_name******/*******my_package_name******.ui.MainActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=https://install.appcenter.ms/... cmp=com.opera.browser/.leanplum.LeanplumCatchActivity } from ProcessRecord{d7a878b 27938:*******my_package_name******/u0a198} (pid=27938, uid=10198) not exported from uid 10145
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3627)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3667)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2901)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:171)
        at android.app.ActivityThread.main(ActivityThread.java:6651)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
     Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=https://install.appcenter.ms/... cmp=com.opera.browser/.leanplum.LeanplumCatchActivity } from ProcessRecord{d7a878b 27938:*******my_package_name******/u0a198} (pid=27938, uid=10198) not exported from uid 10145
        at android.os.Parcel.readException(Parcel.java:2013)
        at android.os.Parcel.readException(Parcel.java:1959)
        at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4437)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1615)
        at android.app.Activity.startActivityForResult(Activity.java:4555)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
        at android.app.Activity.startActivityForResult(Activity.java:4513)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
        at android.app.Activity.startActivity(Activity.java:4874)
        at android.app.Activity.startActivity(Activity.java:4842)
        at com.microsoft.appcenter.distribute.BrowserUtils.openBrowser(BrowserUtils.java:93)
        at com.microsoft.appcenter.distribute.DistributeUtils.updateSetupUsingBrowser(DistributeUtils.java:175)
        at com.microsoft.appcenter.distribute.Distribute.resumeDistributeWorkflow(Distribute.java:827)
        at com.microsoft.appcenter.distribute.Distribute.onActivityResumed(Distribute.java:481)
        at android.app.Application.dispatchActivityResumed(Application.java:218)
        at android.app.Activity.onResume(Activity.java:1345)
        at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:514)
        at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1356)
        at android.app.Activity.performResume(Activity.java:7196)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3602)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3667) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2901) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:171) 
        at android.app.ActivityThread.main(ActivityThread.java:6651) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824) 
2019-05-17 18:18:37.379 27938-27995/*******my_package_name****** D/AppCenter: Cleared pending log states
2019-05-17 18:18:37.379 27938-27995/*******my_package_name****** D/AppCenter: Channel completed shutdown.

TLS 1.2 issue on specific devices below API level 21

Description

Appcenter fails to send data to server when running kitkat with tls 1.2 not enabled by default

Repro Steps

Use appcenter (analytics + crashes is what I use) on a Xamarin client.
Run on a KitKat android device that doesnt have tls 1.2 enabled by default
Track some data using appcenter api
See these error logs in debug output:

12-18 12:19:05.372 W/AppCenter( 4447): Try #3 failed and will be retried in 1077322 ms 12-18 12:19:05.372 W/AppCenter( 4447): javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x6ec7d2f8: I/O error during system call, Connection reset by peer 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:486) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.Connection.upgradeToTls(Connection.java:146) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.Connection.connect(Connection.java:107) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) 12-18 12:19:05.372 W/AppCenter( 4447): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:254) 12-18 12:19:05.372 W/AppCenter( 4447): at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doHttpCall(DefaultHttpClientCallTask.java:249) 12-18 12:19:05.372 W/AppCenter( 4447): at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground(DefaultHttpClientCallTask.java:296) 12-18 12:19:05.372 W/AppCenter( 4447): at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground(DefaultHttpClientCallTask.java:39) 12-18 12:19:05.372 W/AppCenter( 4447): at android.os.AsyncTask$2.call(AsyncTask.java:288) 12-18 12:19:05.372 W/AppCenter( 4447): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-18 12:19:05.372 W/AppCenter( 4447): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 12-18 12:19:05.372 W/AppCenter( 4447): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 12-18 12:19:05.372 W/AppCenter( 4447): at java.lang.Thread.run(Thread.java:841)

Details

  1. Which SDK version are you using?
    1.12.0 (DotNetClient, Xamarin)

  2. Which OS version did you experience the issue on?
    Kitkat

  3. What device version did you see this error on? Were you using an emulator or a physical device?
    only tested on physical

  4. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

12-18 14:11:09.262 V/AppCenter( 5160): Calling https://in.appcenter.ms/logs?api-version=1.0.0... 12-18 14:11:09.262 V/AppCenter( 5160): Headers: {Install-ID=f5a46158-96bf-4c9f-941e-b178fe8c1b45, Content-Type=application/json, App-Secret=****************************9b232a6e} 12-18 14:11:09.262 V/AppCenter( 5160): { 12-18 14:11:09.262 V/AppCenter( 5160): "logs": [ 12-18 14:11:09.262 V/AppCenter( 5160): { 12-18 14:11:09.262 V/AppCenter( 5160): "id": "ff9c63a0-56cc-4e66-8d75-a8b7da5caa17", 12-18 14:11:09.262 V/AppCenter( 5160): "device": { 12-18 14:11:09.262 V/AppCenter( 5160): "screenSize": "480x640", 12-18 14:11:09.262 V/AppCenter( 5160): "model": "MC67NA", 12-18 14:11:09.262 V/AppCenter( 5160): "osVersion": "4.4.4", 12-18 14:11:09.262 V/AppCenter( 5160): "timeZoneOffset": 0, 12-18 14:11:09.262 V/AppCenter( 5160): "appBuild": "132", 12-18 14:11:09.262 V/AppCenter( 5160): "locale": "en_US", 12-18 14:11:09.262 V/AppCenter( 5160): "sdkVersion": "1.11.0", 12-18 14:11:09.262 V/AppCenter( 5160): "oemName": "Zebra Technologies", 12-18 14:11:09.262 V/AppCenter( 5160): "wrapperSdkVersion": "1.12.0", 12-18 14:11:09.262 V/AppCenter( 5160): "appVersion": "2.0.0", 12-18 14:11:09.262 V/AppCenter( 5160): "appNamespace": "com.****.****", 12-18 14:11:09.262 V/AppCenter( 5160): "wrapperSdkName": "appcenter.xamarin", 12-18 14:11:09.262 V/AppCenter( 5160): "osApiLevel": 19, 12-18 14:11:09.262 V/AppCenter( 5160): "osName": "Android", 12-18 14:11:09.262 V/AppCenter( 5160): "sdkName": "appcenter.android", 12-18 14:11:09.262 V/AppCenter( 5160): "osBuild": "01-18-01-4AJ22-K-00-M1-082716", 12-18 14:11:09.262 V/AppCenter( 5160): "wrapperRuntimeVersion": "9.1.0.29" 12-18 14:11:09.262 V/AppCenter( 5160): }, 12-18 14:11:09.262 V/AppCenter( 5160): "timestamp": "2018-12-18T14:10:58.061Z", 12-18 14:11:09.262 V/AppCenter( 5160): "sid": "12b8a491-49a9-4256-8a96-e787513556fd", 12-18 14:11:09.262 V/AppCenter( 5160): "type": "event", 12-18 14:11:09.262 V/AppCenter( 5160): "name": "***" 12-18 14:11:09.262 V/AppCenter( 5160): } 12-18 14:11:09.262 V/AppCenter( 5160): ] 12-18 14:11:09.262 V/AppCenter( 5160): } 12-18 14:11:09.983 W/AppCenter( 5160): Try #2 failed and will be retried in 170993 ms 12-18 14:11:09.983 W/AppCenter( 5160): javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x6cf3d4e0: I/O error during system call, Connection reset by peer 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:486) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.Connection.upgradeToTls(Connection.java:146) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.Connection.connect(Connection.java:107) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) 12-18 14:11:09.983 W/AppCenter( 5160): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:254) 12-18 14:11:09.983 W/AppCenter( 5160): at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doHttpCall(DefaultHttpClientCallTask.java:249) 12-18 14:11:09.983 W/AppCenter( 5160): at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground(DefaultHttpClientCallTask.java:296) 12-18 14:11:09.983 W/AppCenter( 5160): at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground(DefaultHttpClientCallTask.java:39) 12-18 14:11:09.983 W/AppCenter( 5160): at android.os.AsyncTask$2.call(AsyncTask.java:288) 12-18 14:11:09.983 W/AppCenter( 5160): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-18 14:11:09.983 W/AppCenter( 5160): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 12-18 14:11:09.983 W/AppCenter( 5160): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 12-18 14:11:09.983 W/AppCenter( 5160): at java.lang.Thread.run(Thread.java:841)

Errors in Google Play Pre-launch report due to linking error

https://github.com/Microsoft/AppCenter-SDK-Android/blob/9dab6f7439b867fa5ddec2c786e46ab794cc97ac/sdk/appcenter/src/main/java/com/microsoft/appcenter/utils/InstrumentationRegistryHelper.java#L20

The error is discussed in this forum post --> https://forums.xamarin.com/discussion/comment/331161/#Comment_331161

When uploading an APK that includes Microsoft AppCenter we get a linker error that the getArguments function can not be found. Tried all the possible solutions described here ( https://xamarinhelp.com/xamarin-linker/ ) but without success. This is because we can't access InstrumentationRegistry from the Xamarin code as there seems to be no wrapper for the android.support.test jar.

Could you make sure this library gets included in the Microsoft Appcenter Android SDK?
https://github.com/Microsoft/AppCenter-SDK-Android/blob/9dab6f7439b867fa5ddec2c786e46ab794cc97ac/sdk/appcenter/src/main/java/com/microsoft/appcenter/utils/InstrumentationRegistryHelper.java#L4

Getting more done in GitHub with ZenHub

Hola! @guperrot has created a ZenHub account for the Microsoft organization. ZenHub is the only project management tool integrated natively in GitHub – created specifically for fast-moving, software-driven teams.


How do I use ZenHub?

To get set up with ZenHub, all you have to do is download the browser extension and log in with your GitHub account. Once you do, you’ll get access to ZenHub’s complete feature-set immediately.

What can ZenHub do?

ZenHub adds a series of enhancements directly inside the GitHub UI:

  • Real-time, customizable task boards for GitHub issues;
  • Multi-Repository burndown charts, estimates, and velocity tracking based on GitHub Milestones;
  • Personal to-do lists and task prioritization;
  • Time-saving shortcuts – like a quick repo switcher, a “Move issue” button, and much more.

Add ZenHub to GitHub

Still curious? See more ZenHub features or read user reviews. This issue was written by your friendly ZenHub bot, posted by request from @guperrot.

ZenHub Board

Use java.util.Logger instead of android.util.Log

Use java.util.Logger instead of android.util.Log

The SDK currently uses android.util.Log, which prints directly to logcat without any mechanism for redirecting to other destinations. If java.util.Logger was used instead, then client apps get control over where logs are output to - in our app, we are required to print nothing to logcat; instead logs are redirected to a file, which are uploaded when a user reports an issue from within the app (with consent of course).

Seems like just replacing the user of Log.* methods with the appropriate Logger.* methods in AppCenterLog should be sufficient.

Strange problem during in-app update

Hi and thanks in advance.

This is the configuration:
Xamarin Forms app that targets only android and designed to work only on one tablet model (Lenovo Tab 4 10)
Latest version of Xamarin Forms, Android Target Version 7.1 (that is the version installed on devices).

I create two apks (with incremental version) from app center build (in Release mode, with latest build stack).

I install the first one and next manually install the second as an update -> everything works perfect
I install the first one and then use in-app updates from distribution group -> the download and the installation end without error but when I restart the app (Open button from Package Installer popup) this hangs just after the splashscreen and doesn't work.

I want to emphasize that the 2 apks are generated by the same two builds!!

Manual update works, in-app no.
And really I can't figure out why...
It would be something related to AppCenter app settings stored in files like AppCenter.xml?
After the in-app update that breaks the app, if I go to Settings -> Apps -> MyApp and clear app data, it works again.

This is the log, it seems that it cannot find a mono library

W/InstallAppProgress(21120): Replacing package:net.elfo.ambrogio I/Finsky(11806): [1] com.google.android.finsky.verifier.impl.hf.b(178): Verification complete: id=17, package_name=net.elfo.ambrogio I/PackageManager.DexOptimizer(1314): Running dexopt (dex2oat) on: /data/app/vmdl327724636.tmp/base.apk pkg=net.elfo.ambrogio isa=arm64 vmSafeMode=false debuggable=false target-filter=interpret-only oatDir = /data/app/vmdl327724636.tmp/oat sharedLibraries=null I/ActivityManager(1314): Force stopping net.elfo.ambrogio appid=10212 user=-1: installPackageLI I/ActivityManager(1314): Killing 23753:net.elfo.ambrogio/u0a212 (adj 101): stop net.elfo.ambrogio W/ActivityManager(1314): Force removing ActivityRecord{7386620 u0 net.elfo.ambrogio/.MainActivity t128}: app died, no saved state I/PackageManager(1314): Package net.elfo.ambrogio codePath changed from /data/app/net.elfo.ambrogio-1 to /data/app/net.elfo.ambrogio-2; Retaining data and using new W/PackageManager(1314): Code path for net.elfo.ambrogio changing from /data/app/net.elfo.ambrogio-1 to /data/app/net.elfo.ambrogio-2 W/PackageManager(1314): Resource path for net.elfo.ambrogio changing from /data/app/net.elfo.ambrogio-1 to /data/app/net.elfo.ambrogio-2 W/PackageManager(1314): Not granting permission android.permission.BLUETOOTH_PRIVILEGED to package net.elfo.ambrogio (protectionLevel=18 flags=0x3808be44) W/PackageManager(1314): Not granting permission android.permission.LOCATION_HARDWARE to package net.elfo.ambrogio (protectionLevel=18 flags=0x3808be44) W/PackageManager(1314): Not granting permission android.permission.BATTERY_STATS to package net.elfo.ambrogio (protectionLevel=50 flags=0x3808be44) I/ActivityManager(1314): Force stopping net.elfo.ambrogio appid=10212 user=0: pkg removed D/BluetoothMapAppObserver(1618): The removed package is: net.elfo.ambrogio D/BluetoothMapAppObserver(1618): The installed package is: net.elfo.ambrogio E/AccessCtrlService(0)(2943): packageName net.elfo.ambrogio E/AccessCtrlService(0)(2943): packageName net.elfo.ambrogio W/Finsky(11806): [152] com.google.android.finsky.installqueue.impl.o.b(301): Cannot find install request for net.elfo.ambrogio D/Launcher.Model(2454): mAllAppsList.updatePackage net.elfo.ambrogio D/Launcher-ResourceIcon(2454): label:Ambrogio has no build icon resource,build icon resource file name format is:net_elfo_ambrogio__aicon I/ChromeSync(2582): [Sync,SyncIntentOperation] Handling the intent: Intent { act=android.intent.action.PACKAGE_ADDED dat=package:net.elfo.ambrogio flg=0x4000010 cmp=com.google.android.gms/.chimera.GmsIntentOperationService (has extras) }. I/test dagent receiver(5340): onReceive-- packageName-----------------------> package:net.elfo.ambrogio I/ActivityManager(1314): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=net.elfo.ambrogio cmp=net.elfo.ambrogio/.MainActivity} from uid 10017 on display 0 D/ActivityManager(1314): William-Debug:taskRecord =TaskRecord{51397 #130 A=net.elfo.ambrogio U=0 StackId=1 sz=1} I/ActivityManager(1314): Start proc 24274:net.elfo.ambrogio/u0a212 for activity net.elfo.ambrogio/.MainActivity D/AppIcon(1644): startTaskLoadingAnimation: net.elfo.ambrogio W/monodroid(24274): Trying to load sgen from: /data/app/net.elfo.ambrogio-2/lib/arm64/libmonosgen-2.0.so D/AppIcon(1644): stopTaskLoadingAnimation: net.elfo.ambrogio

W/System.err( 6127): remove failed: ENOENT (No such file or directory)

During app initialization on android, before I get to the MainPage I get following error: 08-30 13:46:19.081 W/System.err( 6127): remove failed: ENOENT (No such file or directory) : /data/user/0/com.app.myapp/files/appcenter/database_large_payloads/group_analytics/10.json
After this the splashscreen stays on my screen until I kill the app, if I press pause in visual studio, I don't see any c# threads, I only see a worker thread
Not Flagged 6 0 Worker Thread System.Threading.WaitHandle.Wait_internal()
[External Code]

Details

  1. Which SDK version are you using?
    • 2.1.1
  2. Which OS version did you experience the issue on?
    • e.g. Android 7

Distribute: Failed to enable in app-updates

On my app i followed the guide on github but when i open my app, a browser window opens with the following message "Failed to enable in app-updates".
Also, reinstalling the app doesn't make any difference.

screenshot_2017-03-31-10-52-15

Issue sending logs on Internal wifi network to App center

Description

Having Issues sending logs to App Center on SSID network.
Location : appcenter\utils\NetworkStateHelper.javaNetworkStateHelper.java
Class NetworkStateHelper -> Method reopen() --> public void onAvailable(Network network) method is not called when the SSID network is connected. Is there a work around for this.

Repro Steps

Please list the steps used to reproduce your issue.

  1. Connecting to SSID network.
  2. appcenter\utils\NetworkStateHelper.javaNetworkStateHelper.java.
    Class NetworkStateHelper -> Method reopen() --> public void onAvailable(Network network) method is not called when the SSID network is connected. Is there a work.

Details

  1. Which SDK version are you using?
    1.11.2
  2. Which OS version did you experience the issue on?
    • e.g. Android 6.0.1
  3. What device version did you see this error on? Were you using an emulator or a physical device?
    all devices tested on.
  4. What third party libraries are you using?
    NA
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

D/AppCenter: Call triggered with no network connectivity, waiting network to become available...
D/AppCenter: Call triggered with no network connectivity, waiting network to become available...
D/AppCenter: checkPendingLogs(group_core) pendingLogCount=0
D/AppCenter: checkPendingLogs(group_analytics) pendingLogCount=0

deserialization

Description

HI!
I am a member of the 360 Code Security Team and found an Insecure deserialization vulnerability in Buck in our Open Source Detection Project.Details are as follows:

Repro Steps

Details

The contents of the file are read in the readObject method of FileManager.java, and the deserialization operation is performed directly at line 162. The attacker may provide a malicious file or write a specific poc to the file for attack (I am not sure Whether the file is controllable).

default

Potential crash in Distribute.java

https://github.com/microsoft/AppCenter-SDK-Android/blob/2117635bb2ad1b030f15df944b6814e61e7e9c3b/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/Distribute.java#L1619

Experienced a rare crash around isMandatoryUpdate().
Here's the stack trace:
java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:354) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383) at java.util.concurrent.FutureTask.setException(FutureTask.java:252) at java.util.concurrent.FutureTask.run(FutureTask.java:271) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.microsoft.appcenter.distribute.ReleaseDetails.isMandatoryUpdate()' on a null object reference at com.microsoft.appcenter.distribute.Distribute.storeDownloadRequestId(Distribute.java:1584) at com.microsoft.appcenter.distribute.DownloadTask.doInBackground(DownloadTask.java:59) at com.microsoft.appcenter.distribute.DownloadTask.doInBackground(DownloadTask.java:17) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 3 more

This was with version 1.11.2

Was this addressed in 2.0.0?

Distribute API checks do not work on devices supporting only old/weak TLS 1.2 ciphers

Description

Appcenter update functionality fails on older Motorola/Symbol/Zebra devices (specifically MC32, MC67, and MC92 that I've tested). This appears to be very similar to issue #917 that has been fixed for the analytics module but is still affecting the distribute module.

Repro Steps

Please list the steps used to reproduce your issue.

  1. Use appcenter Distribute model on a Xamarin client on one of the above devices.
  2. All https calls to "https://api.appcenter.ms/" will fail due to SSL errors, and update functionality will not work.

Details

  1. Which SDK version are you using?
    • 1.13.0 (DotNetClient, Xamarin) 1.11.2 (Android)
  2. Which OS version did you experience the issue on?
    • Android 4.1 Jelly Bean (API 16)
  3. What device version did you see this error on? Were you using an emulator or a physical device?
    • Zebra/Symbol MC32, MC92, MC67
  4. What third party libraries are you using?
    • repeatable without any 3rd part libraries.
  5. Please enable verbose logging for your app using AppCenter.setLogLevel(Log.VERBOSE) before your call to AppCenter.start(...) and include the logs here:

Relevant log snippet:

D/AppCenter( 5829): Storing a log to the Persistence database for log type event with flags=1
D/AppCenter( 5829): Stored a log to the Persistence database for log type event with databaseId=62
D/AppCenter( 5829): enqueue(group_analytics) pendingLogCount=2
D/AppCenter( 5829): checkPendingLogs(group_analytics) pendingLogCount=2
D/dalvikvm( 5829): GC_CONCURRENT freed 180K, 3% free 11234K/11527K, paused 13ms+3ms, total 44ms
D/AppCenter( 5829): checkPendingLogs(group_analytics) pendingLogCount=2
D/AppCenter( 5829): checkPendingLogs(group_core) pendingLogCount=0
V/AppCenter( 5829): Calling https://in.appcenter.ms/logs?api-version=1.0.0...
V/AppCenter( 5829): Headers: {Install-ID=9a786df4-2bdb-4d28-a30d-76abb66d06fc, Content-Type=application/json, App-Secret=****************************c4ca7ade}
V/AppCenter( 5829): {
.. snipped event data ...
V/AppCenter( 5829): }
V/AppCenterDistribute( 5829): Calling https://api.appcenter.ms/v0.1/sdk/apps/****************************c4ca7ade/releases/latest?release_hash=523bcb2dcf962e47ee818ddadd7d11d0a20ffb202bd568a5e330b823c2ad8c37...
V/AppCenterDistribute( 5829): Headers: {x-api-token=********************************8498b5c4}
V/AppCenter( 5829): Calling https://in.appcenter.ms/logs?api-version=1.0.0...
V/AppCenter( 5829): Headers: {Install-ID=9a786df4-2bdb-4d28-a30d-76abb66d06fc, Content-Type=application/json, App-Secret=****************************c4ca7ade}
V/AppCenter( 5829): {
V/AppCenter( 5829):   "logs": [
V/AppCenter( 5829):     {
V/AppCenter( 5829):       "device": {
V/AppCenter( 5829):         "screenSize": "480x640",
V/AppCenter( 5829):         "model": "MC67NA",
V/AppCenter( 5829):         "osVersion": "4.1.1",
V/AppCenter( 5829):         "timeZoneOffset": -300,
V/AppCenter( 5829):         "appBuild": "209999",
V/AppCenter( 5829):         "locale": "en_US",
V/AppCenter( 5829):         "sdkVersion": "1.11.2",
V/AppCenter( 5829):         "oemName": "Motorola Solutions",
V/AppCenter( 5829):         "wrapperSdkVersion": "1.13.0",
V/AppCenter( 5829):         "appVersion": "2.0.9999",
V/AppCenter( 5829):         "appNamespace": "com.porky.sap_access_porky",
V/AppCenter( 5829):         "wrapperSdkName": "appcenter.xamarin",
V/AppCenter( 5829):         "osApiLevel": 16,
V/AppCenter( 5829):         "osName": "Android",
V/AppCenter( 5829):         "sdkName": "appcenter.android",
V/AppCenter( 5829):         "osBuild": "01-4AJ11-J-2200-0001-00-M1-030515",
V/AppCenter( 5829):         "wrapperRuntimeVersion": "9.1.5.1"
V/AppCenter( 5829):       },
V/AppCenter( 5829):       "timestamp": "2019-01-24T20:34:41.129Z",
V/AppCenter( 5829):       "sid": "e8d363d0-5a74-40d5-8539-7bae26667ffb",
V/AppCenter( 5829):       "distributionGroupId": "137835ed-fd47-49ce-8ac4-5b9837707948",
V/AppCenter( 5829):       "properties": [
V/AppCenter( 5829):         {
V/AppCenter( 5829):           "value": "*******",
V/AppCenter( 5829):           "type": "string",
V/AppCenter( 5829):           "name": "username"
V/AppCenter( 5829):         }
V/AppCenter( 5829):       ],
V/AppCenter( 5829):       "type": "customProperties"
V/AppCenter( 5829):     }
V/AppCenter( 5829):   ]
V/AppCenter( 5829): }
W/AppCenter( 5829): Try #2 failed and will be retried in 234625 ms
W/AppCenter( 5829): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x525f9378: Failure in SSL library, usually a protocol error
W/AppCenter( 5829): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x48c947de:0x00000000)
W/AppCenter( 5829): 	at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:436)
W/AppCenter( 5829): 	at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:210)
W/AppCenter( 5829): 	at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:478)
W/AppCenter( 5829): 	at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:442)
W/AppCenter( 5829): 	at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
W/AppCenter( 5829): 	at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
W/AppCenter( 5829): 	at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
W/AppCenter( 5829): 	at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
W/AppCenter( 5829): 	at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
W/AppCenter( 5829): 	at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doHttpCall(DefaultHttpClientCallTask.java:271)
W/AppCenter( 5829): 	at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground(DefaultHttpClientCallTask.java:304)
W/AppCenter( 5829): 	at com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground(DefaultHttpClientCallTask.java:39)
W/AppCenter( 5829): 	at android.os.AsyncTask$2.call(AsyncTask.java:287)
W/AppCenter( 5829): 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
W/AppCenter( 5829): 	at java.util.concurrent.FutureTask.run(FutureTask.java:137)
W/AppCenter( 5829): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
W/AppCenter( 5829): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
W/AppCenter( 5829): 	at java.lang.Thread.run(Thread.java:856)
W/AppCenter( 5829): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x525f9378: Failure in SSL library, usually a protocol error
W/AppCenter( 5829): error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x48c947de:0x00000000)
W/AppCenter( 5829): 	at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
W/AppCenter( 5829): 	at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
W/AppCenter( 5829): 	... 17 more
V/AppCenter( 5829): HTTP response status=200 payload=CorrelationId: 58c26ae9-f8fb-4759-88e6-c549caa7fcd4  ReasonCode: Success
D/AppCenter( 5829): Deleting logs from the Persistence database for group_core with ceeddd9b-e5bd-40fb-97df-8a128d6efffb
D/AppCenter( 5829): The IDs for deleting log(s) is/are:
D/AppCenter( 5829): 	60
V/AppCenter( 5829): HTTP response status=200 payload=CorrelationId: 174fc13a-1a82-4282-8b10-face2850794f  ReasonCode: Success
D/AppCenter( 5829): checkPendingLogs(group_core) pendingLogCount=0
D/AppCenter( 5829): Deleting logs from the Persistence database for group_analytics with 7924e7b9-7cec-46d8-95aa-6ba1e3b85f15
D/AppCenter( 5829): The IDs for deleting log(s) is/are:
D/AppCenter( 5829): 	59
D/AppCenter( 5829): checkPendingLogs(group_analytics) pendingLogCount=2

The logs are interleaved, but the calls to in.appcenter.ms are succeeding, and the calls to api.appcenter.ms are not.

Android not attach file report crash appcenter

I have a issue attach file sqlite send to report crash app center on android
It's work on android device android 5 but not work on device android 7

       ErrorAttachmentLog textLog = ErrorAttachmentLog.attachmentWithText(stringBuilder.toString(), "LogInfo.txt");
        ErrorAttachmentLog databaseLog = ErrorAttachmentLog.attachmentWithBinary(convertDataBaseToBinary(), "Ezyhaul.db", "application/octet-stream");
        return Arrays.asList(textLog, databaseLog);

Help me fix it

Eclipse support

Hi,

I am trying to add App Center's SDK to an old app using Eclipse. Gradle does not seem to work correctly with the imports.

Therefore, I took the appcenter-release.aar, appcenter-analytics-release.aar, and appcenter-crashes-release.aar files, unpacked them, took the "com" folders, and repackaged those as .jar files to them manually import them into the lib folder.

Analytics and crashes seemed to have imported correctly; however, the release file did not. I tried to package the "com" file along with the "proguard.txt" file as well and that did not seem to work.

Does anyone have any insight on this or could help?

Thank you!

OutOfMemoryError

This error happens when App Center try to send data

com.microsoft.appcenter.http.DefaultHttpClientCallTask.doHttpCall
java.lang.OutOfMemoryError: Failed to allocate a 65548 byte allocation with 37428 free bytes and 36KB until OOM

Stack traces
com.android.okio.Segment. Segment.java:37
com.android.okio.SegmentPool.take SegmentPool.java:48
com.android.okio.OkBuffer.writableSegment OkBuffer.java:505
com.android.okio.OkBuffer.write OkBuffer.java:424
com.android.okio.OkBuffer.writeUtf8 OkBuffer.java:414
com.android.okio.RealBufferedSink.writeUtf8 RealBufferedSink.java:55
com.android.okhttp.internal.http.HttpConnection.writeRequest HttpConnection.java:172
com.android.okhttp.internal.http.HttpTransport.writeRequestHeaders HttpTransport.java:115
com.android.okhttp.internal.http.HttpTransport.createRequestBody HttpTransport.java:71
com.android.okhttp.internal.http.HttpEngine.sendRequest HttpEngine.java:315
com.android.okhttp.internal.http.HttpURLConnectionImpl.execute HttpURLConnectionImpl.java:399
com.android.okhttp.internal.http.HttpURLConnectionImpl.connect HttpURLConnectionImpl.java:110
com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream HttpURLConnectionImpl.java:221
com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getOutputStream DelegatingHttpsURLConnection.java:218
com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream HttpsURLConnectionImpl.java:25
com.microsoft.appcenter.http.DefaultHttpClientCallTask.doHttpCall
com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground
com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground
android.os.AsyncTask$2.call AsyncTask.java:292
java.util.concurrent.FutureTask.run FutureTask.java:237
java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java:1112
java.util.concurrent.ThreadPoolExecutor$Worker.run ThreadPoolExecutor.java:587
java.lang.Thread.run Thread.java:818

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.