質問: Monaca + cordova-admob-pro で広告を表示していました。 今回、Monacaの環境をバージョンアップしたところ、cordova-admob-proが原因で、Androidのデバッグビルドでスプラッシュ画面表示前に起動しなくなってしまいました。 調べていく中で、cordova-admob-proはフリーで使っていると、数%でも勝手に手数料で引かれていくとの記事に遭遇し(自分では未検証です)、cordova-admob-freeに移行しようとしています。 手数料のあたりは、cordova-plugin-admob-freeが参考になると思います。 やったこと) 1)下記からcordova-plugin-admob-freeをダウンロードしてMonacaにインストールしました。 https://github.com/ratson/cordova-plugin-admob-free 2)デバッグビルドで下記のエラーが表示されました。 Failed to install 'cordova-plugin-admob-free': CordovaError: Failed to fetch plugin cordova-admob-sdk@~0.20.0 via registry. 3)cordova-admob-sdkをgithubからダウンロードしてMonacaにインストールしました。 https://github.com/rehy/cordova-admob-sdk 4)デバッグビルドで下記のエラーが表示されました。 アプリのビルドに失敗しました。次の項目を確認して下さい。 Failed to fetch plugin. There is a connection problems, or plugin speceffication is incorrect. エラーを修正した後で、再度ビルドを行って下さい。 ・ログ抜粋 Installing "cordova-plugin-admob-free" for android Fetching plugin "cordova-promise-polyfill@~0.0.2" via npm Installing "cordova-promise-polyfill" for android Fetching plugin "cordova-admob-sdk@~0.20.0" via npm Error during untar for /Users/builder/.cordova/lib/npm_cache/cordova-admob-sdk/0.20.0/package.tgz: Error: EACCES: permission denied, open '/Users/builder/.cordova/lib/npm_cache/cordova-admob-sdk/0.20.0/package/src/ios/GoogleMobileAds.framework/Headers/DFPBannerView.h' Failed to install 'cordova-plugin-admob-free': CordovaError: Failed to fetch plugin cordova-admob-sdk@~0.20.0 via registry. Probably this is either a connection problem, or plugin spec is incorrect. Check your connection and plugin name/version/URL. Error: EACCES: permission denied, open '/Users/builder/.cordova/lib/npm_cache/cordova-admob-sdk/0.20.0/package/src/ios/GoogleMobileAds.framework/Headers/DFPBannerView.h' at /data/build-server/cordova/7.1.0/node_modules/cordova-lib/src/plugman/fetch.js:215:37 at _rejected (/data/build-server/cordova/7.1.0/node_modules/q/q.js:797:24) at /data/build-server/cordova/7.1.0/node_modules/q/q.js:823:30 at Promise.when (/data/build-server/cordova/7.1.0/node_modules/q/q.js:1035:31) at Promise.promise.promiseDispatch (/data/build-server/cordova/7.1.0/node_modules/q/q.js:741:41) at /data/build-server/cordova/7.1.0/node_modules/q/q.js:557:44 at flush (/data/build-server/cordova/7.1.0/node_modules/q/q.js:108:17) at _combinedTickCallback (internal/process/next_tick.js:131:7) at process._tickCallback (internal/process/next_tick.js:180:9) Failed to restore plugin "cordova-plugin-admob-free" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin cordova-admob-sdk@~0.20.0 via registry. Probably this is either a connection problem, or plugin spec is incorrect. Check your connection and plugin name/version/URL. Error: EACCES: permission denied, open '/Users/builder/.cordova/lib/npm_cache/cordova-admob-sdk/0.20.0/package/src/ios/GoogleMobileAds.framework/Headers/DFPBannerView.h' Discovered plugin "cordova-admob-sdk" in config.xml. Adding it to the project Installing "cordova-admob-sdk" for android Subproject Path: CordovaLib Adding cordova-admob-sdk to package.json Saved plugin info for "cordova-admob-sdk" to config.xml --save flag or autosave detected Saving android@/data/build-server/cordova/platforms/android/6.4.0 into config.xml file ... 質問) 対応方法をご教授下さい。 よろしくお願いいます。
回答: いくつか問題があるようです。 1. cordova-plugin-admob-freeは、cordova-admob-sdkを自動的に読み込むようになっています。そのため、本来であれば、cordova-plugin-admob-freeだけを組み込めばビルドできるはずです。 2. ところが、npmに登録されているcordova-admob-sdk@0.20.0には、不具合があるようです。具体的には、cordova-admob-sdk内のGoogleMobileAds.framework/Headers 以下が読み込み権限しかなく、そのために、Monacaで正常にビルドを行うことが出来ません。 3. cordova-admob-sdk@0.20.0をnpmのものを使わずに、手動でアップロードする場合は、一旦、cordova-plugin-admob-freeをプラグインから削除して、cordova-admob-sdkをインポートしてから cordova-plugin-admob-freeのインストールしないといけません。(cordova-admob-sdkを先にインポートということです) そうしないと、cordova-plugin-admob-freeが先に組み込まれてしまい、その時に自動的にnpmに登録されているcordova-admob-sdkの方がインポートされてしまいます。 4. プラグインをzipでインポートする場合のcordova-admob-sdkは https://github.com/rehy/cordova-admob-sdk ではなく https://gitlab.com/ratson/cordova-admob-sdk のものを使ってください。(こちらが本家です) 以上をまとめると、次のどちらかの方法で組み込めば、正常にビルドできるようです。 [1]. cordova-plugin-admob-free@0.19.0を利用する または [2] cordova-admob-sdk のバージョン 0.20.0 を https://gitlab.com/ratson/cordova-admob-sdk (本家サイト)からダウンロードして、zipファイルとしてMonacaに組み込みます。(https://gitlab.com/ratson/cordova-admob-sdk/tags の0.20.0からzipファイルをダウンロードすると簡単です)、 続いて、cordova-plugin-admob-free@0.20.0を組み込みます。(これは、zipでなくパッケージ名で「cordova-plugin-admob-free@0.20.0」としてMonacaに組み込む方が良いです。zipで組み込む場合、githubから取得したものには、www/admob.jsが入っていないので、自分のローカル環境でビルドして、一旦、www/admob.jsを生成してから、更にzip圧縮してMonacaに組み込む必要があります)