web-dev-qa-db-ja.com

CordovaはAndroidManifest.xmlを作成しません

CordovaとAndroidStudioでAndroid/iOSアプリを作成しています。昨日Cordovaを8に更新するまで、すべてが正常に機能していました。 Nodeも最新に更新しました。 Cordovaプロジェクトを作成し、Androidプラットフォームを追加するとき。まったく異なるディレクトリ構造が生成されます。プロジェクトのプラットフォームディレクトリD:\testApp1\platforms\Androidassetsres、および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)

誰か助けてくれますか?

26
Kamran

Cordova CLI v8.0は、デフォルトで[email protected]を使用します。

ほとんどのCordovaプラグインは[email protected]をまだサポートしていないため、バージョンを指定して古いプラグインを使用してみることもできます。

cordova platform add [email protected]

または、[email protected]を使用することに満足している場合は、cordova-plugi-admobproをサポートするための[email protected]の更新を待つこともできます。

39
Raymond Xie

最終編集:

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リリースを読む ブログ投稿

31
jcesarmobile

Cordovaプロジェクトのconfig.xmlファイルで、xmlタグ<platform name="Android">セクションの下に、次のタグを追加します。

<resource-file src="platforms/Android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />
12

7.0から6.4にダウングレードすると、私にとってはうまくいきませんでした

cordova platform rm Android
cordova platform add [email protected]
cordova build
2
Solvik

AndroidManifest.xmlをコピーしてエラーを修正しました

platform\Android\app\src\main \

プラットフォーム\ Android \

2
JeffNhan

問題は、アプリをローカルで実行しているときにリリース用にビルドしようとしたときに発生するようです。ローカルホストでアプリを停止し、リリース用にビルドします。問題が解決しました。

0

これは私のために働いた。

package.json add cordova-Androidバージョン

 "cordova-Android": "~6.3.0"

次に、プラットフォームを追加します

cordova platform add Android
0
Maheshvirus

私の問題は、platforms\Androidにlibsフォルダーを作成するカスタムプラグインでした。そのため、Cordovaは、私のプロジェクトはEclipseプロジェクトであると信じていたため、古い場所でAndroidManifestを探していました。

Cordova Android +7.0.0にアップグレードする場合は、platforms\Androidに次のアイテムが含まれていないことを確認してください。

  • AndroidManifest.xml
  • ライブラリ
  • 解像度

これ リンク 助けた

0
  1. まず、プラグインがcordova Android 7.0.0+をサポートしていることを確認します
  2. プラットフォーム/ Androidルートディレクトリにある次のフォルダーまたはファイルをすべて削除します:['AndroidManifest.xml'、 'libs'、 'res'].

Cordovaはこれらのファイルを使用して、プロジェクトがEclipseプロジェクトかどうかを判断します。それらが存在する場合、プロジェクトは古いパス構造を持つEclipseプロジェクトとして扱われます。一部のプラグインは、Androidフォルダーにこれらのファイル/フォルダーを作成する場合があります。

0
johnny