Cordova-plugin-firebase: 2番目のビルドでエラーが発生しました

作成日 2016年06月29日  ·  22コメント  ·  ソース: arnesson/cordova-plugin-firebase

こんにちは、
このプロジェクトとあなたの素晴らしい仕事に感謝します!

イオンプロジェクトに問題があります。
まず、config.xmlに文字列を追加します。
<plugin name="cordova-plugin-firebase" spec="https://github.com/arnesson/cordova-plugin-firebase" />
次に、 google-services.json (firebase Webコンソールから取得)をルートディレクトリに配置します。
ビルドを実行すると、これが機能します。

$ cordova run android
Running command: /home/user/android-app/App/hooks/after_prepare/010_add_platform_class.js /home/user/android-app/App
add to body class: platform-android
**Discovered plugin "cordova-plugin-firebase" in config.xml. Adding it to the project**
Fetching plugin "https://github.com/arnesson/cordova-plugin-firebase" via git clone
Repository "https://github.com/arnesson/cordova-plugin-firebase" checked out to git ref "master".
Installing "cordova-plugin-firebase" for android
ANDROID_HOME=/home/user/Android/Sdk/
JAVA_HOME=/opt/java/jdk1.8.0_92
No target specified, deploying to device 'F9AZCY31J032'.
:preBuild UP-TO-DATE

しかし、私の2番目のビルドは常に失敗します...

$ cordova run android
Running command: /home/user/android-app/App/hooks/after_prepare/010_add_platform_class.js /home/user/android-app/App
add to body class: platform-android
Error: Invalid data, chunk must be a string or buffer, not object

cordova plugin add https://github.com/arnesson/cordova-plugin-firebase.git --saveプラグインをインストールしようとしました。 しかし、この場合、最初のビルドでさえError: Invalid data, chunk must be a string or buffer, not objectクラッシュします

そして、最初のビルドでAndroidアプリケーションを起動すると、以下のコードが機能しません。

angular.module('app', ['ionic', 'app.controllers', 'app.routes', 'app.services', 'app.directives', 'firebase'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);
    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }

    window.FirebasePlugin.getInstanceId(function(token) {
      // save this server-side and use it to push notifications to this device
      console.log("Token", token);
    }, function(error) {
      console.error(error);
    });

  });
})

このコードは、["Token"、 "null"]をコンソールに返します。

前もって感謝します。

全てのコメント22件

platform / andoid / res / values / strings.xmlに重複や奇妙な値がありますか?

ビルドする前にcordovaprepareandroidを実行してみてください(ただし、それがなくても動作するはずです)

ここで同じ問題。 strings.xmlには次のものがあります。

    <string name="google_app_id">727247059290</string>
    <string name="google_app_id">@string/google_app_id</string>
    <string name="google_api_key">@string/google_api_key</string>

string.xmlからgoogle_app_idを削除して、再試行してください。 私は削除しました、そしてそれは私のために働いています。

iOSはどうですか? 何か考えがありますか?

いいえ。 iOSのことはわかりません。 iOSプロジェクトにGoogleService-Info.plistファイルを追加してポッドをインストールする必要があると思います。
あなたにとって、それは今Androidで動作し始めていますか?

いいえ、エラーが発生します:エミュレートしようとするとデータが無効になります。 コルドバ準備フックがファイルを元に戻していると思います。

しかし、私はそれをiOSで動作させることにもっと興味があります。 iOSではビルドの問題があります: https

@ raducostea -APN(Apple Push Notification)を使用することをお勧めします。 プラグインのリンクは次のとおりです: https

@ dhruv270私はすでにそれを使用しています。 アナリティクス部分のこのプラグインでイベントを記録し、Googleアナリティクス内に追加したいと思います。

エラー: google-services.jsongoogleService-info.plistがプラットフォームフォルダにコピーされたため、無効なデータが表示されました。プラットフォームフォルダとjson、plistが存在しない場合は、エラーが表示されます。
プラットフォームフォルダとjson、plistファイルを追加して修正しました。 私の悪い英語でごめんなさい

はい、Firebaseコンソールでプロジェクトを作成する必要があります。 そして、アプリケーションパッケージ名/バンドルIDを追加して、そのプロジェクトにアプリケーションを追加します。 Androidの場合はgoogle-services.json、iOSの場合はGoogleService-Info.plistを取得します。 プロジェクトに追加する必要のあるそのファイル。

プラットフォームやwwwなどではなく、config.xmlなどと一緒にプロジェクトのルートにファイルを配置するようにしてください。

@raducostea @ dhruv270 APNとプッシュに関しては、このプラグインを使用することをお勧めします。 PushPluginは最終的にFirebaseFCMにも切り替わります(GCMは非推奨になっているため)。 FCMはIOSにAPNを使用するため、同じことですが、すべてのプラットフォームで共通のインターフェイスを利用できます。

すでにそれをしましたが、コンパイルエラーが発生します。 https://github.com/arnesson/cordova-plugin-firebase/issues/11を確認して

strings.xmlに重複や奇妙な値はありません。
私はcordova-plugin-firebaseを再インストールし、「cordovaprepare」を作成しました。 その後、strings.xmlに新しい値が表示されました。

<string name="google_app_id">@string/google_app_id</string>
<string name="google_api_key">@string/google_api_key</string>

そして、同じエラーを再度作成すると、次のようになります。
エラー:データが無効です。チャンクはオブジェクトではなく文字列またはバッファである必要があります

iOSとAndroidの両方のプラットフォームを追加しましたか?

Androidをビルドすると、このエラーが発生します

**予期しないトップレベルの例外:
com.android.dex.DexException:複数のdexファイルがLcom / google / firebase / FirebaseExceptionを定義します。
com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)で
com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)で
com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)で
com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)で
com.android.dx.merge.DexMerger.merge(DexMerger.java:188)で
com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)で
com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)で
com.android.dx.command.dexer.Main.run(Main.java:277)で
com.android.dx.command.dexer.Main.main(Main.java:245)で
com.android.dx.command.Main.main(Main.java:106)で

失敗した**

@neosekarと同じ問題が

編集:

これについての詳細はインターネットで見つけてください:

依存関係が大きいため、メソッド数の制限に達したようです。 修正を見つけようとします。

編集2:

私は次のようにしてそれを修正しました:

  • /plugins/cordova-plugin-firebase/src/android/build.gradleから5、6、7行目を削除します
  • /plugins/cordova-plugin-firebase/src/android/build-extras.gradleから1行目を削除します
  • / platform / androidフォルダーを削除します
  • プラットフォームの追加(cordovaプラットフォームはAndroidを追加)
  • ビルド/実行(cordova run android --device)

ただし、これは、別のプラグインによって「com.google.gms.google-services」がすでにインストールされている場合にのみ機能すると思います。

複数のdexファイルについては、Lcom / google / firebase / FirebaseExceptionを定義します。

これは、重複する依存関係が原因で発生します。おそらく、com.googleを使用している別のプラグインです。 gms:google-services 、FirebaseSDKまたはその一部。 私はこれを自分でテストしていませんが、プロジェクトで使用されているすべての依存関係を一覧表示して、重複を見つけることができるはずです。
http://stackoverflow.com/questions/30648172/gradle-library-duplicates-in-dependencies

iOSプラットフォームがないときにGoogleService-Info.plistがあると、「2番目のビルドエラー」が発生します。 GoogleService-Info.plistは、platform / iosが存在する場合にのみコピーすることをお勧めします。

パッチはまだテストしていませんが、after_prepare.jsにパッチを適用してこれを回避できます。 うまくいけば投稿します

@ st8st8問題はすでに修正されています(gitバージョンで)

...
if(fileExists("GoogleService-Info.plist") && directoryExists("platforms/ios/")){
...

私はちょうど今同じ問題に遭遇しました、そしてしばらくしてちょうどGoogleService-Info.plistとgoogle-services.jsonファイルの両方を再ダウンロードしました、そしてそれはうまく働きました。

私はイオンに関して同じ問題に直面しています。 プラットフォームとプラグインを削除してから、プラットフォームとプラグインを再度追加することで修正します。その後、すべてが完全に正常になります。
ionic 2のこの問題については、このチュートリアルを作成します。

cordova-plugin-firebaseの再インストールは私のために働いた

このページは役に立ちましたか?
0 / 5 - 0 評価