Pushwoosh / pushwoosh-phonegap-plugin

Pushwoosh PhoneGap Build Plugin
Other
110 stars 139 forks source link

No such method error #181

Closed pradip-Kachhadiya closed 8 years ago

pradip-Kachhadiya commented 8 years ago

Hey there,

I just upgraded my Pushwoosh plugin to use the latest code. However, on Android whenever I try to register the device, the app crashes with these logs:

I/chromium( 3961): [INFO:CONSOLE(8453)] "Registering Device for Push", source: file:///android_asset/www/js/app.min.js?v=1.1.3 (8453) D/PWCordovaPlugin( 3961): Plugin Method Called: registerDevice V/Pushwoosh( 3961): [GCMRegistrationService] Intent action = com.pushwoosh.gcm.intent.REGISTER E/AndroidRuntime( 3961): FATAL EXCEPTION: IntentService[GCMRegistrationService] E/AndroidRuntime( 3961): Process: com.pingplot.unbill, PID: 3961 E/AndroidRuntime( 3961): java.lang.NoSuchMethodError: No virtual method getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; in class Landroid/support/v4/content/ContextCompat; or its super classes (declaration of 'android.support.v4.content.ContextCompat' appears in /data/app/com.pingplot.unbill-1/base.apk) E/AndroidRuntime( 3961): at com.google.android.gms.iid.zzd.zzdo(Unknown Source) E/AndroidRuntime( 3961): at com.google.android.gms.iid.zzd.(Unknown Source) E/AndroidRuntime( 3961): at com.google.android.gms.iid.zzd.(Unknown Source) E/AndroidRuntime( 3961): at com.google.android.gms.iid.InstanceID.zza(Unknown Source) E/AndroidRuntime( 3961): at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source) E/AndroidRuntime( 3961): at com.pushwoosh.GCMRegistrationService.register(Unknown Source) E/AndroidRuntime( 3961): at com.pushwoosh.GCMRegistrationService.onHandleIntent(Unknown Source) E/AndroidRuntime( 3961): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) E/AndroidRuntime( 3961): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime( 3961): at android.os.Looper.loop(Looper.java:145) E/AndroidRuntime( 3961): at android.os.HandlerThread.run(HandlerThread.java:61) V/ApplicationPolicy( 890): isApplicationStateBlocked userId 0 pkgname com.pingplot.unbill

I am attaching my sdk screen shot. please have a look at it. s

shaders commented 8 years ago

Any other plugins do you use? which might reference old android-support-v4 library? what cordova plugins list

command shows?

pradip-Kachhadiya commented 8 years ago

cordova-plugin-app-event 1.2.0 "Application Events" cordova-plugin-camera 2.2.0 "Camera" cordova-plugin-compat 1.0.0 "Compat" cordova-plugin-console 1.0.3 "Console" cordova-plugin-device 1.1.2 "Device" cordova-plugin-file 4.2.0 "File" cordova-plugin-geolocation 2.2.0 "Geolocation" cordova-plugin-image-picker 1.1.1 "ImagePicker" cordova-plugin-splashscreen 3.2.2 "Splashscreen" cordova-plugin-statusbar 2.1.3 "StatusBar" cordova-plugin-whitelist 1.2.2 "Whitelist" cordova-plugin-x-toast 2.5.1 "Toast" de.appplant.cordova.plugin.local-notification 0.8.4 "LocalNotification" ionic-plugin-keyboard 2.1.0 "Keyboard" pushwoosh-cordova-plugin 5.1.1 "Pushwoosh"

shaders commented 8 years ago

Ok, what happens if you run:

For Android, use this line

gradle app:dependencies or if you have a gradle wrapper:

./gradlew app:dependencies where app is your project module.

as per: http://stackoverflow.com/questions/21645071/using-gradle-to-find-out-a-dependency-tree

pradip-Kachhadiya commented 8 years ago

where should i write this line? if you want to check any file i can send you snap.

shaders commented 8 years ago

In the command line. This article has more details: https://developer.android.com/studio/build/building-cmdline.html

pradip-Kachhadiya commented 8 years ago

When i execute command "gradlew.bat assembleModule", i got error like this.

An exception occurred while trying to find the Android build tools. Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configur ation failure takes precedence. java.lang.IllegalStateException: buildToolsVersion is not specified. at com.google.common.base.Preconditions.checkState(Preconditions.java:17 6) at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.jav a:599) at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:566) at com.android.build.gradle.BasePlugin$10$1.call(BasePlugin.java:563) at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.ja va:55) at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.ja va:47) at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:562) at com.android.build.gradle.BasePlugin$10.execute(BasePlugin.java:559) at org.gradle.listener.BroadcastDispatch$ActionInvocationHandler.dispatc h(BroadcastDispatch.java:109) at org.gradle.listener.BroadcastDispatch$ActionInvocationHandler.dispatc h(BroadcastDispatch.java:98) at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java :83) at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java :31) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocat ionHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy13.afterEvaluate(Unknown Source) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfte rEvaluate(LifecycleProjectEvaluator.java:79) at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(L ifecycleProjectEvaluator.java:65) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj ect.java:504) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProj ect.java:83) at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(Task PathProjectEvaluator.java:42) at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuil dConfigurer.java:35) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default GradleLauncher.java:129) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle Launcher.java:106) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun cher.java:86) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildCon troller.run(InProcessBuildActionExecuter.java:80) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav a:33) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav a:24) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce ssBuildActionExecuter.java:36) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce ssBuildActionExecuter.java:26) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.jav a:171) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction. execute(CommandLineActionFactory.java:237) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction. execute(CommandLineActionFactory.java:210) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRunti meValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRunti meValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute( CommandLineActionFactory.java:206) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute( CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep ortingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep ortingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBoots trap.java:54) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.j ava:35) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.ja va:33) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)

FAILURE: Build failed with an exception.

BUILD FAILED

pradip-Kachhadiya commented 8 years ago

I reviewed build.gradle and i found below dependecies.

dependencies { compile fileTree(dir: 'libs', include: '*.jar') // SUB-PROJECT DEPENDENCIES START debugCompile project(path: "CordovaLib", configuration: "debug") releaseCompile project(path: "CordovaLib", configuration: "release")

compile "com.android.support:support-v4:+" compile "com.google.android.gms:play-services-gcm:8.4.0" compile "com.google.android.gms:play-services-location:8.4.0" compile "com.pushwoosh:pushwoosh:4.1.2" compile "com.android.support:support-v4:23.1.0" // SUB-PROJECT DEPENDENCIES END }

And here as you can see there are two android.support.support dependencies with same name. Does this error comes because of this?

pradip-Kachhadiya commented 8 years ago

after read documentation of https://developer.android.com/studio/build/building-cmdline.html

execute command /gradlew app:dependencies but still give error

06-03 07:08:38.424 29296-29484/com.ionicframework.myguest862476 E/AndroidRuntime: FATAL EXCEPTION: IntentService[GCMRegistrationService] Process: com.ionicframework.myguest862476, PID: 29296 java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat at com.google.android.gms.iid.zzd.zzeb(Unknown Source) at com.google.android.gms.iid.zzd.(Unknown Source) at com.google.android.gms.iid.zzd.(Unknown Source) at com.google.android.gms.iid.InstanceID.zza(Unknown Source) at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source) at com.pushwoosh.GCMRegistrationService.register(GCMRegistrationService.java:37) at com.pushwoosh.GCMRegistrationService.onHandleIntent(GCMRegistrationService.java:106) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.os.HandlerThread.run(HandlerThread.java:61) 06-03 07:08:38.664 29296-29296/com.ionicframework.myguest862476 E/eglCodecCommon: **\ ERROR unknown type 0x6e0061 (glSizeof,80)

DimanAM commented 8 years ago

And here as you can see there are two android.support.support dependencies with same name. Does this error comes because of this?

This should not be the problem. Gradle can easily resolve such conflicts:

+--- com.android.support:support-v4:+ -> 24.0.0-beta1 (*)
+--- com.android.support:support-v4:23.1.0 -> 24.0.0-beta1 (*)

The question is what is the resulting com.android.support:support-v4 version in your project? ./gradlew :dependencies command can reveal it.

pradip-Kachhadiya commented 8 years ago

still I'm getting same error as above.

DimanAM commented 8 years ago

./gradlew :dependencies Is not a solution it only shows your project dependencies.

There may be various reasons why your project references old com.android.support:support-v4

  1. Do you build your project locally or on some remote server?
  2. Did you update same Android SDK you use for cordova (maybe you use different Android SDK locations)?
  3. Have you cleaned your project? (remove platforms directory and add platform again)
  4. Do you use some plugin that forces exact com.android.support:support-v4 version (it's unlikely but still)? For example:
configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:23.4.0'
    }
}
pradip-Kachhadiya commented 8 years ago

solved error after rebuild module in android studio..thanks

shaders commented 8 years ago

Google fixed this in 9.0.1 GPS library as per: https://developers.google.com/android/guides/releases