简体   繁体   中英

Error build android apps using cordova 3.4 and pushwoosh

First: I used Cordova 3.4 to build android apps, but when I installed PushWoosh to push notification Error build faced me.

1- I installed PushWoosh: cordova plugin add https://github.com/Pushwoosh/pushwoosh-phonegap-3.0-plugin.git 2- PushWoosh code:

    function init() {
        document.addEventListener("deviceready", initPushwoosh, true);

        //rest of the code
    }

    function initPushwoosh()
    {
        var pushNotification = window.plugins.pushNotification;

        //set push notifications handler
        document.addEventListener('push-notification', function(event) {
            var title = event.notification.title;
            var userData = event.notification.userdata;

            if (typeof (userData) !== "undefined") {
                console.warn('user data: ' + JSON.stringify(userData));
            }

            navigator.notification.alert(title);
        });

        //initialize Pushwoosh with projectid: "GOOGLE_PROJECT_ID", appid : "PUSHWOOSH_APP_ID". This will trigger all pending push notifications on start.
        pushNotification.onDeviceReady({projectid: "Google_Project_Number", appid: "ID_Of-PushWoosh"});

        //register for pushes
        pushNotification.registerDevice(
                function(status) {
                    var pushToken = status;
                    console.warn('push token: ' + pushToken);
                },
                function(status) {
                    console.warn(JSON.stringify(['failed to register ', status]));
                }
        );
    }

    </script>

3- when build the project using: cordova build android

cordova build android -d
cordova library for "android" already exists. No need to download. Continuing.
Generating config.xml from defaults for platform "android"
Calling plugman.prepare for platform "android"
Preparing android project
Processing configuration changes for plugins.
Iterating over installed plugins: [ 'org.apache.cordova.device',
  'org.apache.cordova.console',
  'org.apache.cordova.camera',
  'org.apache.cordova.geolocation',
  'org.apache.cordova.vibration',
  'org.apache.cordova.splashscreen',
  'org.apache.cordova.media-capture',
  'org.apache.cordova.file-transfer',
  'org.apache.cordova.battery-status',
  'org.apache.cordova.contacts',
  'org.apache.cordova.media',
  'org.apache.cordova.network-information',
  'org.apache.cordova.globalization',
  'org.apache.cordova.device-motion',
  'org.apache.cordova.dialogs',
  'org.apache.cordova.device-orientation',
  'de.appplant.cordova.plugin.background-mode',
  'com.phonegap.plugins.PushPlugin',
  'com.pushwoosh.plugins.pushwoosh',
  'org.apache.cordova.file' ]
Writing out cordova_plugins.js...
Wrote out Android application name to "Insurance"
Wrote out Android package name to "com.coolappz.Insurance"
Running command: /Users/newaccount/projects/Insurance/platforms/android/cordova/build 
Buildfile: /Users/newaccount/projects/Insurance/platforms/android/build.xml

-set-mode-check:

-set-debug-files:

-check-env:
 [checkenv] Android SDK Tools Revision 22.3.0
 [checkenv] Installed at /Users/newaccount/opt/android-sdk

-setup:
 [echo] Project Name: Insurance
  [gettype] Project Type: Application

-set-debug-mode:

-debug-obfuscation-check:

-pre-build:

-build-setup:
[getbuildtools] Using latest Build Tools: 19.0.1
 [echo] Resolving Build Target for Insurance...
[gettarget] Project Target:   Android 4.4.2
[gettarget] API level:        19
 [echo] ----------
  [echo] Creating output directories if needed...
  [echo] ----------
  [echo] Resolving Dependencies for Insurance...
[dependency] Library dependencies:
[dependency] 
[dependency] ------------------
[dependency] Ordered libraries:
[dependency] 
[dependency] ------------------
 [echo] ----------
 [echo] Building Libraries with 'debug'...

nodeps:

-set-mode-check:

-set-debug-files:

-check-env:
 [checkenv] Android SDK Tools Revision 22.3.0
 [checkenv] Installed at /Users/newaccount/opt/android-sdk

-setup:
  [echo] Project Name: CordovaLib
  [gettype] Project Type: Android Library

-set-debug-mode:

-debug-obfuscation-check:

-pre-build:

-build-setup:
[getbuildtools] Using latest Build Tools: 19.0.1
  [echo] Resolving Build Target for CordovaLib...
[gettarget] Project Target:   Android 4.4.2
[gettarget] API level:        19
  [echo] ----------
  [echo] Creating output directories if needed...
  [echo] ----------
  [echo] Resolving Dependencies for CordovaLib...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------

-code-gen:
[mergemanifest] No changes in the AndroidManifest files.
 [echo] Handling aidl files...
 [aidl] No AIDL files to compile.
 [echo] ----------
 [echo] Handling RenderScript files...
  [echo] ----------
  [echo] Handling Resources...
  [aapt] No changed resources. R.java and Manifest.java untouched.
  [echo] ----------
  [echo] Handling BuildConfig class...
[buildconfig] No need to generate new BuildConfig.

-pre-compile:

-compile:
 [echo] Creating library output jar file...

-post-compile:

-obfuscate:

-dex:
 [echo] Library project: do not convert bytecode...

-crunch:
 [crunch] Crunching PNG Files in source dir:                 /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/res
 [crunch] To destination dir:     /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-build/res
 [crunch] Crunched 0 PNG files to update cache

-package-resources:
 [echo] Library project: do not package resources...

-package:
 [echo] Library project: do not package apk...

-post-package:

-do-debug:
 [echo] Library project: do not create apk...
[propertyfile] Updating property file:     /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-build/build.prop
[propertyfile] Updating property file:     /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-build/build.prop
[propertyfile] Updating property file: /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-build/build.prop
[propertyfile] Updating property file: /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-build/build.prop

-post-build:

debug:

-code-gen:
[mergemanifest] Found modified input file
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
[echo] Handling aidl files...
 [aidl] No AIDL files to compile.
 [echo] ----------
 [echo] Handling RenderScript files...
  [echo] ----------
 [echo] Handling Resources...
 [aapt] Found modified input file
 [aapt] Generating resource IDs...
  [echo] ----------
  [echo] Handling BuildConfig class...
[buildconfig] No need to generate new BuildConfig.

-pre-compile:
 [echo] Set jars path to: /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-    build/classes.jar:/Users/newaccount/projects/Insurance/platforms/android/libs/gcm.jar:/Users/n    ewaccount/projects/Insurance/platforms/android/libs/android-support-    v13.jar:/Users/newaccount/projects/Insurance/platforms/android/libs/Pushwoosh.jar

-compile:
 [javac] Compiling 3 source files to     /Users/newaccount/projects/Insurance/platforms/android/ant-build/classes

-post-compile:

-obfuscate:

-dex:
 [dex] input: /Users/newaccount/projects/Insurance/platforms/android/ant-build/classes
 [dex] input: /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-    build/classes.jar
[dex] input: /Users/newaccount/projects/Insurance/platforms/android/libs/gcm.jar
 [dex] input: /Users/newaccount/projects/Insurance/platforms/android/libs/android-support-v13.jar
 [dex] input: /Users/newaccount/projects/Insurance/platforms/android/libs/Pushwoosh.jar
 [dex] Using Pre-Dexed classes-e368cee6db5bb9478a5a486c3a854124.jar <-     /Users/newaccount/projects/Insurance/platforms/android/CordovaLib/ant-build/classes.jar
 [dex] Using Pre-Dexed gcm-e0369832eeefafff8956756cd54fc4fc.jar <- /Users/newaccount/projects/Insurance/platforms/android/libs/gcm.jar
  [dex] Using Pre-Dexed android-support-v13-38130f7a5981a081f33db833ecedaa4f.jar <- /Users/newaccount/projects/Insurance/platforms/android/libs/android-support-v13.jar
 [dex] Using Pre-Dexed Pushwoosh-1f9e6f24e222422f2432a7f4365495c2.jar <- /Users/newaccount/projects/Insurance/platforms/android/libs/Pushwoosh.jar
 [dex] Found modified input file
  [dex] Converting compiled files and external libraries into /Users/newaccount/projects/Insurance/platforms/android/ant-build/classes.dex...
 [dx] Merged dex A (124 defs/201.5KiB) with dex B (205 defs/312.8KiB). Result is 329 defs/628.5KiB. Took 0.5s
 [dx] Merged dex A (329 defs/628.5KiB) with dex B (4 defs/18.7KiB). Result is 333 defs/826.4KiB. Took 0.2s
   [dx] Merged dex A (333 defs/826.4KiB) with dex B (324 defs/359.0KiB). Result is 657 defs/1582.4KiB. Took 0.2s
 [dx] 
 [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
 [dx] com.android.dex.DexException: Multiple dex files define     Lcom/google/android/gcm/GCMBaseIntentService;
 [dx]   at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
 [dx]   at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
 [dx]   at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
 [dx]   at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
  [dx]  at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
  [dx]  at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
  [dx]  at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
  [dx]  at com.android.dx.command.dexer.Main.run(Main.java:230)
  [dx]  at com.android.dx.command.dexer.Main.main(Main.java:199)
[dx]    at com.android.dx.command.Main.main(Main.java:103)
 [dx] 

BUILD FAILED /Users/newaccount/opt/android-sdk/tools/ant/build.xml:892: The following error occurred while executing this line: /Users/newaccount/opt/android-sdk/tools/ant/build.xml:894: The following error occurred while executing this line: /Users/newaccount/opt/android-sdk/tools/ant/build.xml:906: The following error occurred while executing this line: /Users/newaccount/opt/android-sdk/tools/ant/build.xml:284: null returned: 2

Total time: 17 seconds
Error code 1 for command: ant with args: debug,-    f,/Users/newaccount/projects/Insurance/platforms/android/build.xml,-Dout.dir=ant-build,-    Dgen.absolute.dir=ant-gen
Command finished with error code 2:     /Users/newaccount/projects/Insurance/platforms/android/cordova/build 
Error: /Users/newaccount/projects/Insurance/platforms/android/cordova/build: Command         failed with exit code 2
at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/src/superspawn.js:126:23)
at ChildProcess.EventEmitter.emit (events.js:98:17)
 at maybeClose (child_process.js:743:16)
at Process.ChildProcess._handle.onexit (child_process.js:810:5)

Second Question: using cordova or php how can I push notification t specific devices installed this apps not broadcast.

Thanks for advanced.

First of all you don't need: com.phonegap.plugins.PushPlugin Yes, also it is a reason for the error as stated above.

If you don't receive notifications follow these simple checks:

  1. Make sure you've got Google project id and Pushwoosh app id right
  2. Make sure subscribers count have increased in Pushwoosh Control Panel after you register for push notifications.
  3. Check status of push notification in "Pushes". It might give some insights if GCM returned an error.
  4. Make sure you've got Server Key right in the Pushwoosh App configuration. Sometimes (still have no idea about the pattern) Browser key works instead.
  5. Try on 3G as sometimes Wi-Fi (rarely but happens, especially if you have any enterprise firewall) may block push GCM ports.

Pushwoosh team.

I had the same error and the problem was generated because I have installed another plugin before the Pushwoosh one.

Try:

cordova plugin list

and check if you have two Notification plugins:

In this scenario, you should:

1.Remove the platform:

cordova platform rm android (or ios...)

2.Remove the plugin you don't need anymore from the /plugins folder

3.Create the platform again:

cordova platform add android (or ios...)

4.Run on device:

cordova run android

or build:

cordova build android

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM