CordovaとAndroidStudioでAndroid/iOSアプリを作成しています。昨日Cordovaを8に更新するまで、すべてが正常に機能していました。 Nodeも最新に更新しました。 Cordovaプロジェクトを作成し、Androidプラットフォームを追加するとき。まったく異なるディレクトリ構造が生成されます。プロジェクトのプラットフォームディレクトリD:\testApp1\platforms\Android
にassets
、res
、およびsrc
フォルダーが表示されません。さらに重要なのは、上記のディレクトリにAndroidManifest.xml
がないため、admob
プラグインが追加されないことです。
プラグインの追加中に表示されるエラーは次のとおりです。
「cordova-plugin-admobpro」のインストールに失敗しました:エラー:ENOENT:そのようなファイルまたはディレクトリがありません。Object.fs.openSync(fs.js:646で「D:\ Projects\testApp1\platforms\Android\AndroidManifest.xml」を開きます:18)Object.fs.readFileSync(fs.js:551:33)at Object.parseElementtreeSync(D:\ Projects\testApp1\platforms\Android\cordova\node_modules\cordova-common\src\util\xml-helpers。 js:180:27)新しいAndroidManifest(D:\ Projects\testApp1\platforms\Android\cordova\lib\AndroidManifest.js:29:20)at AndroidProject.getPackageName(D:\ Projects\testApp1\platforms\Android\cordova\lib\AndroidProject.js:99:12)Api.addPlugin(D:\ Projects\testApp1\platforms\Android\cordova\Api.js:223:57)at handleInstall(C:\ Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js:594:10)at C:\ Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js:357:28 at _fulfilled(C:\ Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_ modules\q\q.js:787:54)self.promiseDispatch.done(C:\ Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js: 816:30)
誰か助けてくれますか?
Cordova CLI v8.0は、デフォルトで[email protected]
を使用します。
ほとんどのCordovaプラグインは[email protected]
をまだサポートしていないため、バージョンを指定して古いプラグインを使用してみることもできます。
cordova platform add [email protected]
または、[email protected]
を使用することに満足している場合は、cordova-plugi-admobpro
をサポートするための[email protected]
の更新を待つこともできます。
最終編集:
cordova-Android 7.1.4がリリースされ、この種の問題のほとんどが修正されるはずです。
編集:
人々が答えを支持し続けているので、私は問題についてより詳細に説明します。
問題は、実際にプラグインがAndroidManifest.xml
またはconfig.xml
に書き込むことではありません。場所が変更され、プラグインがパスを更新する必要があるのは事実ですが、必須ではなく、Cordovaが新しいパスを処理します。
問題は、ソースコードではないものにsource-file
タグを使用するプラグインです。 (つまり、resource-file
タグを使用する代わりにイメージをコピーするために使用します)これにより、Cordovaを混乱させるresフォルダー(またはlib)が作成され、実際にはAndroid studioプロジェクト。新しい場所を調べる代わりに、古い場所でファイルを検索します。
これはcordova-Androidでパッチされており、次のリリースで修正される予定です。回避策は、source-file
タグを使用してプラグインを探し、resource-file
タグを使用するように更新することです。
古い回答:
現在はapp/src/main/AndroidManifest.xml
にあります。
プラグインが書き込みを行っている場合は、適切な場所に書き込むように更新する必要があります。
Cordova-Android 7.0.0リリースを読む ブログ投稿
Cordovaプロジェクトのconfig.xml
ファイルで、xmlタグ<platform name="Android">
セクションの下に、次のタグを追加します。
<resource-file src="platforms/Android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />
7.0から6.4にダウングレードすると、私にとってはうまくいきませんでした
cordova platform rm Android
cordova platform add [email protected]
cordova build
AndroidManifest.xmlをコピーしてエラーを修正しました
platform\Android\app\src\main \
に
プラットフォーム\ Android \
問題は、アプリをローカルで実行しているときにリリース用にビルドしようとしたときに発生するようです。ローカルホストでアプリを停止し、リリース用にビルドします。問題が解決しました。
これは私のために働いた。
package.json add cordova-Androidバージョン
"cordova-Android": "~6.3.0"
次に、プラットフォームを追加します
cordova platform add Android
私の問題は、platforms\Androidにlibsフォルダーを作成するカスタムプラグインでした。そのため、Cordovaは、私のプロジェクトはEclipseプロジェクトであると信じていたため、古い場所でAndroidManifestを探していました。
Cordova Android +7.0.0にアップグレードする場合は、platforms\Androidに次のアイテムが含まれていないことを確認してください。
これ リンク 助けた
Cordovaはこれらのファイルを使用して、プロジェクトがEclipseプロジェクトかどうかを判断します。それらが存在する場合、プロジェクトは古いパス構造を持つEclipseプロジェクトとして扱われます。一部のプラグインは、Androidフォルダーにこれらのファイル/フォルダーを作成する場合があります。