簡體   English   中英

使用Cordova 3.4和Pushwoosh錯誤構建Android應用

[英]Error build android apps using cordova 3.4 and pushwoosh

首先:我使用Cordova 3.4來構建android應用程序,但是當我安裝PushWoosh來推送通知時,錯誤構建就遇到了我。

1-我安裝了PushWoosh:cordova插件添加https://github.com/Pushwoosh/pushwoosh-phonegap-3.0-plugin.git 2- PushWoosh代碼:

    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-當使用以下項目構建項目時: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] 

失敗/Users/newaccount/opt/android-sdk/tools/ant/build.xml:892:執行此行時發生以下錯誤:/Users/newaccount/opt/android-sdk/tools/ant/build.xml :894:執行此行時發生以下錯誤:/Users/newaccount/opt/android-sdk/tools/ant/build.xml:906:執行此行時發生以下錯誤:/ Users / newaccount / opt / android -sdk / tools / ant / build.xml:284:返回null: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)

第二個問題:使用cordova或php如何推送通知,此應用未安裝的特定設備不會廣播。

感謝高級。

首先,您不需要:com.phonegap.plugins.PushPlugin是的,這也是上述錯誤的原因。

如果您沒有收到通知,請遵循以下簡單檢查:

  1. 確保您正確設置了Google項目ID和Pushwoosh應用ID
  2. 注冊推送通知后,請確保在Pushwoosh控制面板中增加了訂閱者數量。
  3. 在“推送”中檢查推送通知的狀態。 如果GCM返回錯誤,則可能會提供一些見解。
  4. 確保在Pushwoosh應用程序配置中正確設置了服務器密鑰。 有時(仍然不了解該模式)瀏覽器鍵起作用。
  5. 嘗試3G有時是因為Wi-Fi有時會發生(但很少發生,尤其是在您有企業防火牆的情況下)可能會阻止推送GCM端口。

Pushwoosh團隊。

我有同樣的錯誤,並且由於在Pushwoosh之前安裝了另一個插件而產生了問題。

嘗試:

cordova plugin list

並檢查您是否有兩個Notification插件:

在這種情況下,您應該:

1.刪​​除平台:

cordova platform rm android (or ios...)

2.從/plugins文件夾中刪除不再需要的/plugins

3.再次創建平台:

cordova platform add android (or ios...)

4,在設備上運行

cordova run android

或構建:

cordova build android

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM