Git Product home page Git Product logo

cloudinary_android's Introduction

Cloudinary Android SDK

Build Status

About

The Cloudinary Android SDK allows you to quickly and easily integrate your application with Cloudinary. Effortlessly optimize and transform your cloud's assets.

Additional documentation

This Readme provides basic installation and usage information. For the complete documentation, see the Android SDK Guide.

Table of Contents

Key Features

Version Support

Cloudinary SDK Android SDK
2.x > 19
1.x > 14

Installation

Gradle Integration

Add the following dependency to your build.gradle:

implementation 'com.cloudinary:cloudinary-android:2.8.0'

Other Options

The cloudinary_android library is available in Maven Central. To use it, add the following dependency to your pom.xml:

<dependency>
    <groupId>com.cloudinary</groupId>
    <artifactId>cloudinary-android</artifactId>
    <version>2.8.0</version>
</dependency>

Download the latest cloudinary-android from here and the latest cloudinary-core from here and put them in your libs folder.

Usage

Setup

Each request for building a URL of a remote cloud resource must have the cloud_name parameter set. You can set the cloud_name parameter either when initializing the library, or by using the CLOUDINARY_URL meta-data property in AndroidManifest.xml.

The entry point of the library is the MediaManager object. MediaManager.init() must be called before using the library, preferably in Application.onCreate(). Here's an example of setting the configuration parameters programmatically in your Applicaion.onCreate(:

 Map config = new HashMap();
 config.put("cloud_name", "myCloudName");
 MediaManager.init(this, config);

Alternatively, you can use the meta-data property. In that case, no configuration is required:

MediaManager.init(this);

Only the cloud_name should be included. Your API key and secret aren't necessary. Note: Your API secret should never be exposed in the application.

<manifest>
    ...
    <application>
        ...
        <meta-data android:name="CLOUDINARY_URL" android:value="cloudinary://@myCloudName"/>
    </application>
<manifest>

Transforming and Optimizing Assets

Any image uploaded to Cloudinary can be transformed and embedded using powerful view helper methods:

The following example generates the url for accessing an uploaded sample image while transforming it to fill a 100x150 rectangle:

MediaManager.get().url().transformation(new Transformation().width(100).height(150).crop("fill")).generate("sample.jpg")

Another example, embedding a smaller version of an uploaded image while generating a 90x90 face detection based thumbnail:

MediaManager.get().url().transformation(new Transformation().width(90).height(90).crop("thumb").gravity("face")).generate("woman.jpg")

If your application is written in Kotlin you can use the syntax below:

MediaManager.get().url().transformation(Transformation<Transformation<*>>().width(90).height(90).crop("thumb").gravity("face")).generate("woman.jpg")

You can provide either a Facebook name or a numeric ID of a Facebook profile or a fan page.

Embedding a Facebook profile to match your graphic design is very simple:

MediaManager.get().url().type("facebook").transformation(new Transformation().width(130).height(130).crop("fill").gravity("north_west")).generate("billclinton.jpg")

Uploading Assets

The entry point for upload operations is the MediaManager.get().upload() call. All upload operations are dispatched to a background queue, with a set of fully customizable rules and limits letting you choose when each upload request should actually run. Requests are automatically rescheduled to be retried later if a recoverable error is encountered (e.g. network disconnections, timeouts).

The upload results are dispatched asynchronously using UploadCallback. Global callbacks can be defined, as well as specific callbacks per request. Note: In order to receive global callbacks even when the app is already shut down, or in the background, the ListenerService class can be extended and registered in the manifest (see the class for further instructions).

The following examples uploads a File using the default settings, a request upload callback, and an upload preset (more about upload presets below):

String requestId = MediaManager.get().upload(imageFile).unsigned("sample_preset").callback(callback).dispatch();

The returned requestId is used to identify the request in global callbacks and to cancel the request if needed. The callback should be any implementation of UploadCallback.

The uploaded image is assigned a randomly generated public Id. As soon as onSuccess is called, the image is immediately available for download through a CDN:

MediaManager.get().url().generate("abcfrmo8zul1mafopawefg.jpg")
  
http://res.cloudinary.com/demo/image/upload/abcfrmo8zul1mafopawefg.jpg

You can also specify your own public ID:

String requestId = MediaManager.get().upload(uri).unsigned("sample_preset").option("public_id", "sample_remote").dispatch();

Using RequestUploadPolicy, an upload request can be configured to run under specific circumstance, or within a chosen time window:

The following examples uploads local Uri resource, configured to run immediately (the default), with a maximum of 7 retries, and only on an unmetered network (e.g. wifi):

String requestId = MediaManager.get().upload(uri)
    .unsigned("sample_app_preset")
    .constrain(TimeWindow.immediate())
    .policy(new RequestUploadPolicy.Builder().maxRetries(7).networkPolicy(RequestUploadPolicy.NetworkType.UNMETERED).build())
    .dispatch();

For security reasons, mobile applications cannot contain the full account credentials, and so they cannot freely upload resources to the cloud. Cloudinary provides two different mechanisms to enable end-users to upload resources without providing full credentials.

1. Unsigned uploads using Upload Presets.

You can create an upload preset in your Cloudinary account console, defining rules that limit the formats, transformations, dimensions and more. Once the preset is defined, it's name is supplied when calling upload. An upload call will only succeed if the preset name is used and the resource is within the preset's pre-defined limits.

The following example uploads a local resource, available as a Uri, assuming a preset named 'sample_preset' already exists in the account:

String requestId = MediaManager.get().upload(uri).unsigned("sample_preset").dispatch();
2. Signed uploads with server-based signature

Another way to allow uploading without credentials is using signed uploads. It is recommended to generate the upload authentication signature on the server side, where it's safe to store the api_secret.

Cloudinary's Android SDK allows providing server-generated signature and any additional parameters that were generated on the server side (instead of signing using api_secret locally).

Your server can use any Cloudinary libraries (Ruby on Rails, PHP, Python & Django, Java, Perl, .Net, etc.) for generating the signature. The following JSON in an example of a response of an upload authorization request to your server:

{
  "signature": "sgjfdoigfjdgfdogidf9g87df98gfdb8f7d6gfdg7gfd8",
  "public_id": "abdbasdasda76asd7sa789",
  "timestamp": 1346925631,
  "api_key": "123456789012345"
}

When initializing MediaManager, a SignatureProvider can be sent. Whenever an upload requires signing, the library will call the provider's provideSignature() method, where you should implement the call to your server's signing endpoint. This callback runs on a background a thread so there's no need to handle threading:

MediaManager.init(this, new SignatureProvider() {
    @Override
    public Signature provideSignature(Map options) {
        // call server signature endpoint
    }
}, null);

Contributions

See contributing guidelines.

Get Help

If you run into an issue or have a question, you can either:

About Cloudinary

Cloudinary is a powerful media API for websites and mobile apps alike, Cloudinary enables developers to efficiently manage, transform, optimize, and deliver images and videos through multiple CDNs. Ultimately, viewers enjoy responsive and personalized visual-media experiences—irrespective of the viewing device.

Additional resources

Licence

Released under the MIT license.

cloudinary_android's People

Contributors

adimiz1 avatar baraka-gini avatar dev-lcc avatar eladrkatz avatar itaibenari avatar kayvannj avatar m0she avatar nadavs avatar nitzanj avatar patrick-tolosa avatar stankocken avatar tallevami avatar tocker avatar yakirp 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

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

cloudinary_android's Issues

How to combine multiple effects?

I'm trying to upload an image with 2 effects. I've tried multiple approaches but cannot get it work.

new Transformation().effect("blur:500").crop("scale").width(100).height(40).effect("blue:50")

How can I combine these 2 effects, or how can i add multiple Transformations into the upload of 1 picture.

What am I missing here?
Thank you for help!

Progressbar is not showing while uploading audio or video to cloudinary server.

I have shown progressbar using below way but progressbar is not showing.

ProgressDialog prd = new ProgressDialog(MainActivity.this);
prd.setTitle("Loading...");
prd.setMessage("Please, wait a moment");
prd.show();

Map uploadResult;
Map config = new HashMap();
config.put("cloud_name", "mycloudname");
config.put("api_key", "myapikey");
config.put("api_secret", "myapisecret");
Cloudinary cloudinary = new Cloudinary(config);

try {
    uploadResult = cloudinary.uploader().uploadLarge(videoName, ObjectUtils.asMap("resource_type", "video"));
    Log.d("VideoUpload", uploadResult.toString());
    if (prd != null && prd.isShowing()) {
        prd.dismiss();
    }
} catch (IOException e) {
    e.printStackTrace();
    uploadResult = null;
    if (prd != null && prd.isShowing()) {
        prd.dismiss();
    }
} catch (Exception e) {
    e.printStackTrace();
    uploadResult = null;
    if (prd != null && prd.isShowing()) {
        prd.dismiss();
    }
}

When calling `MediaManager.get().upload()` then upload happens more than once

Hi,

sorry to ask this question here, but when I call

MediaManager.get().upload(file.absolutePath)
                    .callback(UploadListener())
                    .unsigned("mypreset")
                    .constrain(TimeWindow.immediate())

for some reason the android job scheduler fires multiple jobs to upload the image resulting them spamming the media library (70 images in 5 minues).
Do I do something wrong or am I using the library in a wrong manner?

Thanks in advance

Upload ByteArray fails

In PayloadFactory the parsed.getHost() can return null when you use byte[] upload. Need a better way to handle the encoded data. I'm not positive the reason for this. Looking at my encoded data it starts with a '/' character so it looks like bytes:///{rest of data}. Maybe that makes the getHost() method fail?
I was uploading JPEG format image.

Similar issues with Webm. current encoding produces new line characters. getHost() only returns string up to first new line.

NoClassDefFoundError: Failed resolution of: Lnet/vrallev/android/cat/instance/CatLazy;

Hi Cloudinary guys

Could anyone please take a look at this error? Looks like something wrong with the Evernote?

Description: After the integration, the app crashes at MediaManager.init(this, config).
The crash happens on both Emulator and phone.

Phone: Nexus 5, Android 5.1.1, API 22
Emulator: Nexus 5X Android 8.0.0, API 26 O
The logs and dependencies are listed as below.
minSdkVersion = 19
targetSdkVersion = 26
compileSdkVersion = 26
buildToolsVersion = '26.0.2'
gradleVersion = '3.0.0-beta7'

class App : Application() {

    @Inject
    lateinit var appLifecycleObserver: AppLifecycleObserver

    override fun onCreate() {
        super.onCreate()
        instance = this

        val config = HashMap<String, String>()
        config.put("cloud_name", "xxxx")
        MediaManager.init(this, config) // <-- Crashes here

        DaggerAppComponent
                .builder()
                .application(this)
                .build()
                .inject(this)

        ProcessLifecycleOwner.get().lifecycle.addObserver(appLifecycleObserver)
    }

    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)

        MultiDex.install(this)
    }

    companion object {
        lateinit var instance: App
            private set
    }
}

And the logs are:

Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/MultiDex: VM with version 2.1.0 has multidex support
I/MultiDex: Installing application
I/MultiDex: VM has multidex support, MultiDex support library is disabled.
I/zygote: Rejecting re-init on previously-failed class java.lang.Class<com.evernote.android.job.util.JobCat>: java.lang.NoClassDefFoundError: Failed resolution of: Lnet/vrallev/android/cat/instance/CatLazy;
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Caused by: java.lang.ClassNotFoundException: Didn't find class "net.vrallev.android.cat.instance.CatLazy" on path: DexPathList[[zip file "/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk"],nativeLibraryDirectories=[/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/lib/x86, /data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk!/lib/x86, /system/lib, /system/vendor/lib]]
I/zygote:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Rejecting re-init on previously-failed class java.lang.Class<com.evernote.android.job.util.JobCat>: java.lang.NoClassDefFoundError: Failed resolution of: Lnet/vrallev/android/cat/instance/CatLazy;
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Caused by: java.lang.ClassNotFoundException: Didn't find class "net.vrallev.android.cat.instance.CatLazy" on path: DexPathList[[zip file "/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk"],nativeLibraryDirectories=[/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/lib/x86, /data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk!/lib/x86, /system/lib, /system/vendor/lib]]
I/zygote:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Rejecting re-init on previously-failed class java.lang.Class<com.evernote.android.job.util.JobCat>: java.lang.NoClassDefFoundError: Failed resolution of: Lnet/vrallev/android/cat/instance/CatLazy;
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Caused by: java.lang.ClassNotFoundException: Didn't find class "net.vrallev.android.cat.instance.CatLazy" on path: DexPathList[[zip file "/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk"],nativeLibraryDirectories=[/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/lib/x86, /data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk!/lib/x86, /system/lib, /system/vendor/lib]]
I/zygote:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Rejecting re-init on previously-failed class java.lang.Class<com.evernote.android.job.util.JobCat>: java.lang.NoClassDefFoundError: Failed resolution of: Lnet/vrallev/android/cat/instance/CatLazy;
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
I/zygote: Caused by: java.lang.ClassNotFoundException: Didn't find class "net.vrallev.android.cat.instance.CatLazy" on path: DexPathList[[zip file "/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk"],nativeLibraryDirectories=[/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/lib/x86, /data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk!/lib/x86, /system/lib, /system/vendor/lib]]
I/zygote:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
I/zygote:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/zygote:     at com.evernote.android.job.JobManager com.evernote.android.job.JobManager.create(android.content.Context) (JobManager.java:97)
I/zygote:     at void com.cloudinary.android.AndroidJobStrategy.init(android.content.Context) (AndroidJobStrategy.java:82)
I/zygote:     at void com.cloudinary.android.MediaManager.<init>(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:58)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, com.cloudinary.android.signed.SignatureProvider, java.util.Map) (MediaManager.java:159)
I/zygote:     at void com.cloudinary.android.MediaManager.init(android.content.Context, java.util.Map) (MediaManager.java:115)
I/zygote:     at void com.rsvp.babble.App.onCreate() (App.kt:24)
I/zygote:     at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1118)
I/zygote:     at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:5791)
I/zygote:     at void android.app.ActivityThread.-wrap1(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:-1)
I/zygote:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1661)
I/zygote:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
I/zygote:     at void android.os.Looper.loop() (Looper.java:164)
I/zygote:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6541)
I/zygote:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/zygote:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240)
I/zygote:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767)
D/AndroidRuntime: Shutting down VM

--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.rsvp.babble, PID: 3381
                  java.lang.NoClassDefFoundError: Failed resolution of: Lnet/vrallev/android/cat/instance/CatLazy;
                      at com.evernote.android.job.JobManager.create(JobManager.java:97)
                      at com.cloudinary.android.AndroidJobStrategy.init(AndroidJobStrategy.java:82)
                      at com.cloudinary.android.MediaManager.<init>(MediaManager.java:58)
                      at com.cloudinary.android.MediaManager.init(MediaManager.java:159)
                      at com.cloudinary.android.MediaManager.init(MediaManager.java:115)
                      at com.rsvp.babble.App.onCreate(App.kt:24)
                      at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
                      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
                      at android.app.ActivityThread.-wrap1(Unknown Source:0)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
                      at android.os.Handler.dispatchMessage(Handler.java:105)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:6541)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                   Caused by: java.lang.ClassNotFoundException: Didn't find class "net.vrallev.android.cat.instance.CatLazy" on path: DexPathList[[zip file "/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk"],nativeLibraryDirectories=[/data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/lib/x86, /data/app/com.rsvp.babble-gG1P7_kClRbJMSvmTTUMOw==/base.apk!/lib/x86, /system/lib, /system/vendor/lib]]
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                      at com.evernote.android.job.JobManager.create(JobManager.java:97) 
                      at com.cloudinary.android.AndroidJobStrategy.init(AndroidJobStrategy.java:82) 
                      at com.cloudinary.android.MediaManager.<init>(MediaManager.java:58) 
                      at com.cloudinary.android.MediaManager.init(MediaManager.java:159) 
                      at com.cloudinary.android.MediaManager.init(MediaManager.java:115) 
                      at com.rsvp.babble.App.onCreate(App.kt:24) 
                      at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118) 
                      at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791) 
                      at android.app.ActivityThread.-wrap1(Unknown Source:0) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661) 
                      at android.os.Handler.dispatchMessage(Handler.java:105) 
                      at android.os.Looper.loop(Looper.java:164) 
                      at android.app.ActivityThread.main(ActivityThread.java:6541) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
Application terminated.

Dependencies are:

dependencies {
    // App's dependencies, including testing
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support.constraint:constraint-layout:$rootProject.constraintLayoutVersion"
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"
    implementation "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:support-v4:$rootProject.supportLibraryVersion"
    implementation "com.google.guava:guava:$rootProject.guavaVersion"
    implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
    kapt "android.arch.lifecycle:compiler:$rootProject.archLifecycleVersion"

    // Google APIs
    implementation "com.google.android.gms:play-services-location:$rootProject.googleApiVersion"

    // Firebase
    implementation "com.firebase:firebase-jobdispatcher:$rootProject.firebaseJobDispatcherVersion"

    // Kotlin
    implementation "org.jetbrains.anko:anko-common:$rootProject.ankoVersion"
    implementation "org.jetbrains.anko:anko-support-v4-commons:$rootProject.ankoVersion"
    implementation "io.reactivex.rxjava2:rxkotlin:$rootProject.rxkotlinVersion"

    // Retrofit
    implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:converter-moshi:$rootProject.retrofitVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion"

    // RxAndroid
    implementation "io.reactivex.rxjava2:rxandroid:$rootProject.rxAndroidVersion"

    // Socket.io
    implementation ("io.socket:socket.io-client:$rootProject.socketIoVersion") {
        // excluding org.json which is provided by Android
        exclude group: 'org.json', module: 'json'
    }

    implementation "de.hdodenhof:circleimageview:$rootProject.circleImageViewVersion"

    // Dagger 2
    implementation "com.google.dagger:dagger:$rootProject.daggerVersion"
    kapt "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"

    compile "com.google.dagger:dagger-android:$project.daggerVersion"
    kapt "com.google.dagger:dagger-android-processor:$project.daggerVersion"

    provided "org.glassfish:javax.annotation:$rootProject.javaxAnnotationVersion"

    // Glide
    implementation "com.github.bumptech.glide:glide:$rootProject.glideVersion"

    // GPU Image
    implementation "jp.co.cyberagent.android.gpuimage:gpuimage-library:$rootProject.gpuImageVersion"

    // Multi Dex
    implementation "com.android.support:multidex:$rootProject.multiDexVersion"

    compile group: 'com.cloudinary', name: 'cloudinary-android', version: '1.21.0'

    // Dependencies for local unit tests
    testCompile "junit:junit:$rootProject.ext.junitVersion"
    testCompile "org.mockito:mockito-core:$rootProject.ext.mockitoVersion"
    testCompile "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion"

    testCompile "android.arch.core:core-testing:$rootProject.archLifecycleVersion"

    // Android Testing Support Library's runner and rules
    androidTestCompile "com.android.support.test:runner:$rootProject.ext.runnerVersion"
    androidTestCompile "com.android.support.test:rules:$rootProject.ext.rulesVersion"

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

    // Dependencies for Android unit tests
    androidTestCompile "junit:junit:$rootProject.ext.junitVersion"
    androidTestCompile "org.mockito:mockito-android:$rootProject.ext.mockitoVersion"

    // Espresso UI Testing
    androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion"
    androidTestCompile "com.android.support.test.espresso:espresso-contrib:$rootProject.espressoVersion"
    androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion"
    androidTestCompile "com.android.support.test.espresso.idling:idling-concurrent:$rootProject.espressoVersion"
    implementation "com.android.support.test.espresso:espresso-idling-resource:$rootProject.espressoVersion"

    // Resolve conflicts between main and test APK:
    androidTestCompile "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
    androidTestCompile "com.android.support:support-v4:$rootProject.supportLibraryVersion"
    androidTestCompile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
    androidTestCompile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    androidTestCompile "com.android.support:support-compat:$rootProject.supportLibraryVersion"
    androidTestCompile "com.android.support:design:$rootProject.supportLibraryVersion"
    implementation "com.google.code.findbugs:jsr305:3.0.2"
    kapt "com.android.databinding:compiler:$databindingVersion"
}

// <---gradle of Project --->
ext {
    // Sdk and tools
    minSdkVersion = 19
    targetSdkVersion = 26
    compileSdkVersion = 26
    buildToolsVersion = '26.0.2'

    // App dependencies
    supportLibraryVersion = '27.0.0'
    guavaVersion = '22.0-android'
    junitVersion = '4.12'
    mockitoVersion = '2.7.22'
    hamcrestVersion = '1.3'
    runnerVersion = '1.0.0'
    rulesVersion = '1.0.0'
    espressoVersion = '3.0.1'
    constraintLayoutVersion = '1.0.2'
    ankoVersion = '0.10.1'
    daggerVersion = '2.12'
    javaxAnnotationVersion = '10.0-b28'
    rxkotlinVersion = '2.1.0'
    retrofitVersion = '2.3.0'
    rxAndroidVersion = '2.0.1'
    googleApiVersion = '11.6.0'
    firebaseJobDispatcherVersion = '0.8.4'
    socketIoVersion = '1.0.0'
    circleImageViewVersion = '2.2.0'
    recyclerViewVersion = "27.0.0"
    glideVersion = "4.3.1"
    gpuImageVersion = "1.4.1"
    multiDexVersion = '1.0.2'

    // Architecture Components dependencies
    archLifecycleVersion = "1.0.0"
}

buildscript {
    ext.kotlin_version = '1.1.60'
    ext.gradleVersion = '3.0.0-beta7'
    ext.databindingVersion = '2.3.3'
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0-alpha03'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

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

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Fatal Exception: java.lang.IllegalArgumentException: endMs is out of range of [10000, 9223372036854775807] (too low)

Fatal Exception: java.lang.IllegalArgumentException: endMs is out of range of [10000, 9223372036854775807] (too low)
at com.evernote.android.job.util.JobPreconditions.checkArgumentInRange(JobPreconditions.java:269)
at com.evernote.android.job.JobRequest$Builder.setExecutionWindow(JobRequest.java:615)
at com.cloudinary.android.AndroidJobStrategy.executeRequestsNow(AndroidJobStrategy.java:103)
at com.cloudinary.android.MediaManager.queueRoomFreed(MediaManager.java:210)
at com.cloudinary.android.MediaManager.access$000(MediaManager.java:32)
at com.cloudinary.android.MediaManager$1.onSuccess(MediaManager.java:82)
at com.cloudinary.android.DefaultCallbackDispatcher$1.handleMessage(DefaultCallbackDispatcher.java:72)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6114)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)

I got this error using 1.21.0, with the following code:

HashMap<String, Object> option = new HashMap<>();
                    option.put("signature", apiImageSignature.getSignature());
                    option.put("timestamp", apiImageSignature.getTimeStamp());
                    option.put("api_key", apiImageSignature.getApiKey());
                    option.put("upload_preset", apiImageSignature.getUploadPreset());

mediaManager.upload(fileUri).options(options)
                        .constrain(TimeWindow.immediate())
                        .policy(new UploadPolicy.Builder().maxRetries(1).build())
                        .callback(new UploadCallback() {
                            @Override
                            public void onStart(String requestId) {}
                            @Override
                            public void onProgress(String requestId, long bytes, long totalBytes) {}
                            @Override
                            public void onSuccess(String requestId, Map resultData) {
                                //success
                            }
                            @Override
                            public void onError(String requestId, ErrorInfo error) {
                                //error
                            }
                            @Override
                            public void onReschedule(String requestId, ErrorInfo error) {}
                        })
                        .dispatch())

MediaManager is already initialized

Hi.. I am using Media manager while uploading it was quite good.. When i take picture for upload first time it upload to cloud ,but when i take picture second time it shows mediamanager is already initialized.

10-12 13:00:09.702 13540-13540/com.taggery W/System.err: java.lang.IllegalStateException: MediaManager is already initialized
at com.cloudinary.android.MediaManager.init(MediaManager.java:169)
at com.cloudinary.android.MediaManager.init(MediaManager.java:123)
at com.taggery.fragment.FilterFragment.CloudinaryUpload(FilterFragment.java:561)
at com.taggery.fragment.FilterFragment.setPic(FilterFragment.java:436)
10-12 13:00:09.703 13540-13540/com.taggery W/System.err: at com.taggery.fragment.FilterFragment.init(FilterFragment.java:202)

i am using fragment for uploading..

Fatal Exception: java.lang.RuntimeException: Unable to instantiate service com.evernote.android.job.gcm.PlatformGcmService: java.lang.ClassNotFoundException: Didn't find class "com.evernote.android.job.gcm.PlatformGcmService"

The app is crashing in lower versions after I did an update.

at android.app.ActivityThread.handleCreateService(ActivityThread.java:2720) at android.app.ActivityThread.access$1900(ActivityThread.java:169) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5476) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(NativeStart.java) Caused by java.lang.ClassNotFoundException: Didn't find class "com.evernote.android.job.gcm.PlatformGcmService" on path: DexPathList[[zip file "/data/app/com.example.myproject-8.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.myproject-8, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.ActivityThread.handleCreateService(ActivityThread.java:2717) at android.app.ActivityThread.access$1900(ActivityThread.java:169) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5476) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(NativeStart.java)

My full stacktrace

Add Maven Support

Hey team,

Could you please make this library available through Maven like your Java library is?

I'd much rather manage everything through Gradle than to do it all manually.

Thanks!

There's no Upload Progress Information

It'd be nice if there was a callback function with the updated byte transferred so we could show a progress bar to the user just like in the Jquery Direct Upload Plugin

java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow

10-31 04:42:32.416 16248-17032/com.tapp.hookapp E/CursorWindow: Failed to read row 0, column 0 from a CursorWindow which has 0 rows, 22 columns.
10-31 04:42:32.417 16248-17032/com.tapp.hookapp E/JobStorage: could not load all jobs
java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetLong(Native Method)
at android.database.CursorWindow.getLong(CursorWindow.java:524)
at android.database.CursorWindow.getInt(CursorWindow.java:591)
at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
at com.evernote.android.job.JobStorage.getAllJobRequests(JobStorage.java:189)
at com.evernote.android.job.JobManager.getAllJobRequests(JobManager.java:289)
at com.evernote.android.job.JobRescheduleService.onHandleWork(JobRescheduleService.java:71)
at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:386)
at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:377)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)

I get this 2-4 seconds in after calling MediaManager.init function, and on every action through MediaManager. Any clue why this happens and how i could fix it. Thanks

Slow upload

I use unsigned uploads at the moment. When I begin an upload, it takes sometime before it starts Say 6seconds. Its too long for me. I noticed the evernote android-job library is used. You sure you using .startNow method ?

Android Proguard

Cloundinary will crash when trying to use proguard to obfuscate the code.

java.lang.UnknownError: Can't find Cloudinary platform adapter [com.cloudinary.android.UploaderStrategy,com.cloudinary.http42.UploaderStrategy,com.cloudinary.http43.UploaderStrategy]

Example Android app

It would be great if an example application was provided, is that a possibility? {I followed the readme, but somehow, I'm not able to upload images from my android app, I like how the ruby gem works with batteries included, it is the android library am having problems with}.

upload multiple images.

When I tried something like :

for (int i = 0; i < imagePath.size(); i++) { MediaManager.get().upload(imagePath.get(i)).callback(new UploadCallback() {

I am getting the same URL in all the call backs.

can I upload multiple images? How?

Fatal Exception: java.lang.OutOfMemoryError

Fatal Exception: java.lang.OutOfMemoryError
Failed to allocate a 47 byte allocation with 0 free bytes and 3GB until OOM

com.cloudinary.android.preprocess.Limit.execute (Limit.java:44)
com.cloudinary.android.preprocess.Limit.execute (Limit.java:12)
com.cloudinary.android.preprocess.PreprocessChain.execute (PreprocessChain.java:76)
com.cloudinary.android.UploadRequest.preprocessAndClone (UploadRequest.java:268)
com.cloudinary.android.UploadRequest.access$100 (UploadRequest.java:32)
com.cloudinary.android.UploadRequest$1.run (UploadRequest.java:213)

Delete image

How can i delete particular and mutiple image from cloudinary?? i've searched a lot but didnt found appropriate solution..

java.lang.OutOfMemoryError (large images)

Hi. How are large images being handled?

I've got the following code:

    public void pickPhoto(View button){
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);      
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);      
        if (requestCode == 1){
            if (resultCode == RESULT_OK && data != null){
                Bitmap bitmap = getPath(data.getData());                    
                imageView.setBackgroundResource(0);             
                imageView.setImageBitmap(bitmap);           
                imageView.setVisibility(0);
                InputStream bis = bitmapToInputStream(bitmap);          

                Cloudinary cloudinary = new Cloudinary("cloudinary://8****7142:****************");
                Log.d("DEBUG", cloudinary.getStringConfig("api_key"));
                if (cloudinary.getStringConfig("api_secret") == null) return;           
                // Upload image to Cloudinary           
                try {
                    cloudinary.uploader().upload(bis, Cloudinary.emptyMap());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            } else {
                Log.d("Status", "data is probably not there");
            }
        } else{
            Log.d("Status", "something wrong happened!");
        }
    }


    public static InputStream bitmapToInputStream(Bitmap bitmap){
        int size = bitmap.getHeight() * bitmap.getRowBytes();
        ByteBuffer buffer = ByteBuffer.allocate(size);
        bitmap.copyPixelsToBuffer(buffer);
        return new ByteArrayInputStream(buffer.array());
    }

I keep getting an out of memory error. I suppose there is a way that the API/library can shrink the size of the image. Is there a fix or suggestion for how to fix this? #help

Large image upload

Hey, Is there any image compression functionality provided while uploading large camera images ?

java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4.

when I tried to upload file I get this message.
"java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4."
here is my code below

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == ConstantsCustomGallery.REQUEST_CODE && resultCode == RESULT_OK && data != null) {
            //The array list has the image paths of the selected images
            images = data.getParcelableArrayListExtra(ConstantsCustomGallery.INTENT_EXTRA_IMAGES);

            imagePath = images.get(0).path;


            UploadCallback callback = new UploadCallback() {
                @Override
                public void onStart(String requestId) {

                    Log.d("id", requestId);
                    loading_layout.setVisibility(View.VISIBLE);
                    loading.show();
                    //progress_text.setVisibility(View.VISIBLE);

                }

                @Override
                public void onProgress(String requestId, long bytes, long totalBytes) {

                    Log.d("pregress", String.valueOf(bytes/totalBytes * 100) + "%");
                    final String progressString = String.valueOf(bytes/totalBytes * 100) + "%";
                    //progress_text.setText(progressString);

                }

                @Override
                public void onSuccess(String requestId, Map resultData) {

                    loading_layout.setVisibility(View.GONE);
                    loading.hide();
                    //progress_text.setVisibility(View.GONE);

                    Log.d("resultdata", resultData.get("secure_url").toString());

                    String uploadImg = resultData.get("secure_url").toString();
                    String[] splitString = uploadImg.split("/");
                    String uploadTarget = splitString[splitString.length-2] + "/" + splitString[splitString.length-1];
                    String finalUploadTaget = FunctionBase.imageUrlBase300 + uploadTarget;

                    finalImage = uploadTarget;

                    RequestManager requestManager = Glide.with(getActivity());

                    if(gifChecker(finalUploadTaget)){

                        requestManager
                                .load(finalUploadTaget)
                                .asGif()
                                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                                .into(preview);;

                    } else {

                        requestManager.load(finalUploadTaget).into(preview);

                    }

                }

                @Override
                public void onError(String requestId, ErrorInfo error) {

                    Log.d("error1", error.toString());
                    TastyToast.makeText(getActivity(), "업로드가 실패 했습니다 다시 시도해주세요.", TastyToast.LENGTH_LONG, TastyToast.ERROR);

                }

                @Override
                public void onReschedule(String requestId, ErrorInfo error) {

                    Log.d("error2", error.toString());
                    TastyToast.makeText(getActivity(), "업로드가 실패 했습니다 다시 시도해주세요.", TastyToast.LENGTH_LONG, TastyToast.ERROR);

                }
            };

            MediaManager.get().upload(imagePath).unsigned(AppConfig.image_preset).callback(callback).dispatch();







        }



    }

Signed Upload : provideSignature method gives zero size map

I need to implement signed upload. Here is how I'm initializing cloudinary.

        HashMap<String, String> config = new HashMap();
        config.put("cloud_name", "<myCloudName goes here>");
        MediaManager.init(getActivity(), new ServerSignatureProvider(getActivity()), config);

but provideSignature method in ServerSignatureProvider class gives zero size map. Am'I missing something? Please help me.

Small build and usage issues

Thanks for providing an Android-specific version, much better than the dependencies that came with the general Java version. Just some small remarks.

The readme provides a link to the compiled .jar (http://res.cloudinary.com/cloudinary/raw/upload/cloudinaryandroid-1.0.0.jar), but it leads to nothing. Also not sure if it should, as this is an Android library now.

The Cloudinary folder, with the Android library project, does not contain a 'res' folder. This causes the build to fail and pops up some messages that may be misleading to newer developers.

The way Cloudinary (configuration) objects are initialez by providing a Map of Objects could be improved. It is not type safe and requires unnecessary use of String constants. I would much prefer it if it used a builder pattern like the Cloudinary class itself. The same holds for the supplying of options to the uploader(). Instead of a (non-parametized) Map I prefer a builder pattern or even just nullable parameters to the upload() method.

Tacking somuch time to upload

Hi, I used cloundinary android sdk in my application. I face two problems -

  1. when I used upload the image or video using unsinged method in like below code

String requestId = MediaManager.get().upload(uri).unsigned("test").option("public_id", uniqueId)
.callback(new UploadCallback() {
@OverRide
public void onStart(String requestId) {

    if ((ProgressBar) findViewById(R.id.progressBarHorizontal) != null) {
        isPostUploading = true;
        ((ImageView) findViewById(R.id.img_video_icon)).setVisibility(View.GONE);
        ((RelativeLayout) findViewById(R.id.progressBarDialog)).setVisibility(View.VISIBLE);
        ((ImageView) findViewById(R.id.imgPreview)).setImageBitmap(bitmap);
        ((ImageView) findViewById(R.id.imgPreview)).setVisibility(View.VISIBLE);
        ((ProgressBar) findViewById(R.id.progressBarHorizontal)).setProgress(0);
    }
}
@Override
public void onProgress(String requestId, long bytes, long totalBytes) {
}
@Override
public void onSuccess(String requestId, Map resultData) {
    String img3 = uniqueId + ".jpg";
    String url = MediaManager.get().url().generate(img3);
    new PublishPostTask().execute(desc, role_id, "image", uniqueId, url);
    Log.d("msg", "role_id : " + role_id);
}
@Override
public void onError(String requestId, ErrorInfo error) {
    String er = String.valueOf(error);
    Toast.makeText(HomeActivity.this, "error : " + er, Toast.LENGTH_LONG).show();
}
@Override
public void onReschedule(String requestId, ErrorInfo error) {
}

}).dispatch()

it will take too much time to upload I found a reason on debug time staring the request id to onStart method of call black it will take 2-3 mint then onStart to onSuccess it will upload in 15-20 second, why this problem is occur.
and I mention that I have some transformation set on unsinged methodso that can take time for uploading

  1. after upload video I call web service and get the transformation url and play on toroplayer in recyclerview. I found null NullPointerException in logcat . after 1-2 mint refresh the view and again I use the same url it will work. so that mean transformation take time and i asked u how much it will take time

com.evernote:android-job makes app crash after reboot in Android N

This library used in cloudinary library
09-15 23:18:33.956 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.*, PID: 3264 java.lang.RuntimeException: Unable to start receiver com.evernote.android.job.JobBootReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.*/com.evernote.android.job.JobRescheduleService (has extras) }: app is in background uid UidRecord{3055e95 u0a114 RCVR idle procs:1 seq(0,0,0)} at android.app.ActivityThread.handleReceiver(ActivityThread.java:3259) at android.app.ActivityThread.-wrap17(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.*/com.evernote.android.job.JobRescheduleService (has extras) }: app is in background uid UidRecord{3055e95 u0a114 RCVR idle procs:1 seq(0,0,0)} at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1505) at android.app.ContextImpl.startService(ContextImpl.java:1461) at android.content.ContextWrapper.startService(ContextWrapper.java:644) at com.evernote.android.job.WakeLockUtil.startWakefulService(WakeLockUtil.java:95) at com.evernote.android.job.JobRescheduleService.startService(JobRescheduleService.java:24) at com.evernote.android.job.JobManager.<init>(JobManager.java:191) at com.evernote.android.job.JobManager.create(JobManager.java:114) at com.evernote.android.job.JobBootReceiver.onReceive(JobBootReceiver.java:49) at android.app.ActivityThread.handleReceiver(ActivityThread.java:3252) at android.app.ActivityThread.-wrap17(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1677)  at android.os.Handler.dispatchMessage(Handler.java:105)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6541)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  09-15 23:18:34.448 I/ActivityManager: Showing crash dialog for package com.* u0

java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

E/JobStorage: could not load all jobs
java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetLong(Native Method)
at android.database.CursorWindow.getLong(CursorWindow.java:524)
at android.database.CursorWindow.getInt(CursorWindow.java:591)
at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
at com.evernote.android.job.JobStorage.getAllJobRequests(JobStorage.java:152)
at com.evernote.android.job.JobManager.getAllJobRequests(JobManager.java:274)
at com.cloudinary.android.AndroidJobStrategy.getPendingImmediateJobsCount(AndroidJobStrategy.java:152)
at com.cloudinary.android.DefaultRequestDispatcher.dispatch(DefaultRequestDispatcher.java:27)
at com.cloudinary.android.UploadRequest.dispatch(UploadRequest.java:130)

This is my stacktrace when trying dispatch an upload using the sdk. I am running gradle 3+ im new to using cloudinary and it sucks the first time I use it, it doesnt work!

RuntimeException: Invalid Content-Range header when device locale is set to arabic

Here is the error stack trace.

E/DefaultRequestProcessor: Unexpected exception for request ff49ae42-aed4-463b-96c2-c4a1d875d8cc.
java.lang.RuntimeException: Invalid Content-Range header
at com.cloudinary.android.UploaderStrategy.callApi(UploaderStrategy.java:143)
at com.cloudinary.Uploader.callApi(Uploader.java:34)
at com.cloudinary.Uploader.uploadLargeParts(Uploader.java:212)
at com.cloudinary.Uploader.uploadLarge(Uploader.java:143)
at com.cloudinary.android.DefaultRequestProcessor.doProcess(DefaultRequestProcessor.java:197)
at com.cloudinary.android.DefaultRequestProcessor.processRequest(DefaultRequestProcessor.java:89)
at com.cloudinary.android.MediaManager.processRequest(MediaManager.java:367)
at com.cloudinary.android.AndroidJobStrategy$UploadJob.onRunJob(AndroidJobStrategy.java:203)
at com.evernote.android.job.Job.runJob(Job.java:109)
at com.evernote.android.job.JobExecutor$JobCallable.runJob(JobExecutor.java:151)
at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:136)
at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:119)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)

E/DefaultRequestProcessor: Unexpected exception for request 962e6fd9-ea00-4d9e-8db0-43784a23ea48. java.lang.RuntimeException: Upload preset not found

Unexpected exception for request 962e6fd9-ea00-4d9e-8db0-43784a23ea48.
java.lang.RuntimeException: Upload preset not found
at com.cloudinary.android.UploaderStrategy.callApi(UploaderStrategy.java:143)
at com.cloudinary.Uploader.callApi(Uploader.java:34)
at com.cloudinary.Uploader.uploadLargeParts(Uploader.java:212)
at com.cloudinary.Uploader.uploadLarge(Uploader.java:143)
at com.cloudinary.android.DefaultRequestProcessor.doProcess(DefaultRequestProcessor.java:197)
at com.cloudinary.android.DefaultRequestProcessor.processRequest(DefaultRequestProcessor.java:89)
at com.cloudinary.android.MediaManager.processRequest(MediaManager.java:367)
at com.cloudinary.android.AndroidJobStrategy$UploadJob.onRunJob(AndroidJobStrategy.java:203)
at com.evernote.android.job.Job.runJob(Job.java:109)
at com.evernote.android.job.JobExecutor$JobCallable.runJob(JobExecutor.java:151)
at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:136)
at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:119)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

Could not find com.android.support:support-core-utils:26.0.1

I attempt to upgrade the Cloudinary android lib to com.cloudinary:cloudinary-android:1.21.0, and then get the following message while gradle project building:

Error:Could not find com.android.support:support-core-utils:26.0.1.
Required by:
project :appfriendscore > com.cloudinary:cloudinary-android:1.21.0

Why does it occur and how to resolve.

upload file issue on Android

I am unable to upload images to Cloudinary, look at this stack trackes

Android 4.4.4

W/System.err(15266): javax.net.ssl.SSLProtocolException: Write error: ssl=0x76b56d00: Failure in SSL library, usually a protocol error
W/System.err(15266):    at com.google.android.gms.org.conscrypt.NativeCrypto.SSL_write(Native Method)
W/System.err(15266):    at gyo.write(SourceFile:743)
W/System.err(15266):    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:131)
W/System.err(15266):    at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:231)
W/System.err(15266):    at com.android.okhttp.internal.http.RetryableOutputStream.writeToSocket(RetryableOutputStream.java:73)
W/System.err(15266):    at com.android.okhttp.internal.http.HttpTransport.writeRequestBody(HttpTransport.java:112)
W/System.err(15266):    at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:638)
W/System.err(15266):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
W/System.err(15266):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
W/System.err(15266):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)
W/System.err(15266):    at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136)
W/System.err(15266):    at com.cloudinary.Uploader.callApi(Uploader.java:271)
W/System.err(15266):    at com.cloudinary.Uploader.upload(Uploader.java:79)
W/System.err(15266):    at $MY_MAIN_PACKAGE.service.CloudinaryUploadImageService.onHandleIntent(CloudinaryUploadImageService.java:31)
W/System.err(15266):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
W/System.err(15266):    at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err(15266):    at android.os.Looper.loop(Looper.java:136)
W/System.err(15266):    at android.os.HandlerThread.run(HandlerThread.java:61)

Android 4.3

V/NativeCrypto(29131): Write error: ssl=0x5cc2a780: Failure in SSL library, usually a protocol error
W/System.err(29131): javax.net.ssl.SSLProtocolException: Write error: ssl=0x5cc2a780: Failure in SSL library, usually a protocol error
W/System.err(29131):    at com.google.android.gms.org.conscrypt.NativeCrypto.SSL_write(Native Method)
W/System.err(29131):    at gyo.write(SourceFile:743)
W/System.err(29131):    at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:231)
W/System.err(29131):    at libcore.net.http.RetryableOutputStream.writeToSocket(RetryableOutputStream.java:70)
W/System.err(29131):    at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:820)
W/System.err(29131):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
W/System.err(29131):    at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
W/System.err(29131):    at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
W/System.err(29131):    at com.cloudinary.Uploader.callApi(Uploader.java:271)
W/System.err(29131):    at com.cloudinary.Uploader.upload(Uploader.java:79)
W/System.err(29131):    at $MY_MAIN_PACKAGE.service.CloudinaryUploadImageService.onHandleIntent(CloudinaryUploadImageService.java:31)

I am running the upload using inside an IntentService

new Cloudinary(this).uploader().upload(pictureFilePath, Cloudinary.emptyMap());

Any tip?, it seems some problem with the ssl library, but may be something in the server side, right?

Cloudinary Upload unable to use URI from contentproviders such as google photos

When using a Uri from a photo selected from google photos (None local to device) the sdk is unable to handle this. The sdk should be able to handle any valid Uri passed to it.

17004-19936/com.bump.bumpapp E/DefaultRequestProcessor: LocalUriNotFoundException for request 115d437b-5acc-4772-9b9b-b3998f23d47c.
com.cloudinary.android.payload.LocalUriNotFoundException: Uri file:///content%3A/com.google.android.apps.photos.contentprovider/0/1/... could not be found
at com.cloudinary.android.payload.LocalUriPayload.prepare(LocalUriPayload.java:43)
at com.cloudinary.android.DefaultRequestProcessor.doProcess(DefaultRequestProcessor.java:169)
at com.cloudinary.android.DefaultRequestProcessor.processRequest(DefaultRequestProcessor.java:90)
at com.cloudinary.android.MediaManager.processRequest(MediaManager.java:367)
at com.cloudinary.android.AndroidJobStrategy$UploadJob.onRunJob(AndroidJobStrategy.java:260)
at com.evernote.android.job.Job.runJob(Job.java:121)
at com.evernote.android.job.JobExecutor$JobCallable.runJob(JobExecutor.java:165)
at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:150)
at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:133)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)

Got Execption java.lang.NoClassDefFoundError: Failed resolution of: Lcom/evernote/android/job/JobManager; in MediaManager.init(this); statement

I am getting the below exception in MediaManager.init(this, config); statement.

I am using the libraries cloudinary-core-1.14.0.jar and cloudinary-android-1.20.0.aar

My Code Looks Like

Map config = new HashMap();
config.put("cloud_name", "mycloudname");
config.put("api_key", "myapikey");
config.put("api_secret", "myapisecret");
MediaManager.init(this, config);

03-07 12:17:04.001 9719-9719/com.test.ask E/UncaughtException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/evernote/android/job/JobManager;
at com.cloudinary.android.AndroidJobStrategy.init(AndroidJobStrategy.java:82)
at com.cloudinary.android.MediaManager.(MediaManager.java:58)
at com.cloudinary.android.MediaManager.init(MediaManager.java:159)
at com.cloudinary.android.MediaManager.init(MediaManager.java:115)
at com.test.ask.AskQuestionActivity.uploadImageToCloudinary(AskQuestionActivity.java:1587)
at com.test.ask.AskQuestionActivity.onClick(AskQuestionActivity.java:1302)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.evernote.android.job.JobManager" on path: DexPathList[[zip file "/data/app/com.test.ask-2/base.apk"],nativeLibraryDirectories=[/data/app/com.test.ask-2/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.cloudinary.android.AndroidJobStrategy.init(AndroidJobStrategy.java:82) 
at com.cloudinary.android.MediaManager.(MediaManager.java:58) 
at com.cloudinary.android.MediaManager.init(MediaManager.java:159) 
at com.cloudinary.android.MediaManager.init(MediaManager.java:115) 
at com.test.ask.AskQuestionActivity.uploadImageToCloudinary(AskQuestionActivity.java:1587) 
at com.test.ask.AskQuestionActivity.onClick(AskQuestionActivity.java:1302) 
at android.view.View.performClick(View.java:4780) 
at android.view.View$PerformClick.run(View.java:19866) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5254) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Suppressed: java.lang.ClassNotFoundException: com.evernote.android.job.JobManager
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 17 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

I got a RuntimeException: Invalid Content-Range header

10-11 16:56:55.199 1115-2064/{applicationId} E/DefaultRequestProcessor: Unexpected exception for request {36 char here}.
                                                                                        java.lang.RuntimeException: Invalid Content-Range header
                                                                                            at com.cloudinary.android.UploaderStrategy.callApi(UploaderStrategy.java:143)
                                                                                            at com.cloudinary.Uploader.callApi(Uploader.java:34)
                                                                                            at com.cloudinary.Uploader.uploadLargeParts(Uploader.java:212)
                                                                                            at com.cloudinary.Uploader.uploadLarge(Uploader.java:143)
                                                                                            at com.cloudinary.android.DefaultRequestProcessor.doProcess(DefaultRequestProcessor.java:197)
                                                                                            at com.cloudinary.android.DefaultRequestProcessor.processRequest(DefaultRequestProcessor.java:89)
                                                                                            at com.cloudinary.android.MediaManager.processRequest(MediaManager.java:367)
                                                                                            at com.cloudinary.android.AndroidJobStrategy$UploadJob.onRunJob(AndroidJobStrategy.java:203)
                                                                                            at com.evernote.android.job.Job.runJob(Job.java:109)
                                                                                            at com.evernote.android.job.JobExecutor$JobCallable.runJob(JobExecutor.java:151)
                                                                                            at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:136)
                                                                                            at com.evernote.android.job.JobExecutor$JobCallable.call(JobExecutor.java:119)
                                                                                            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                            at java.lang.Thread.run(Thread.java:818)

This happens when I am trying to upload a photo to clouding. I have implemented cloudinary for a few weeks now and this is the first time I see this exception.

Thanks!

import com.cloudinary cant be resolved ?

I had my working fine with cloudinary integrated, then i duplicated the project and made sure to copy all component as the working project, including the .jar files into libs. Unfortunately in the class where i am using cloudinary all cloudinary references are highlighted red, of course starting with import com.cloudinary, which cant be resolved ?

What might be causing the problem and how can i solve it, i rebuilt the project, and invalidated caches/ restarted the project to.

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.