web-dev-qa-db-ja.com

Cordova plugin.xmlからAndroidManifest.xml "application"タグにAndroid:name = "something"を追加します

すでに投稿されているものはどれも良い答えがないので、私は新しい質問を開くことにしました。

AndroidManifest.xml "from plugin.xml"を更新する必要があるため、<application>タグには、すでに持っているものに加えて、次のプロパティがあります。

Android:name="mypackage"

どうすればそれができますか?

ありがとうございました

19
user2548436

同じ問題が発生し、Cordovaフックを使用して作業を行いました。

まず、config.xmlファイルを編集してフックを追加します。

<platform name="Android">
    <hook type="after_prepare" src="scripts/Android_app_name.js" />
</platform>

scripts/Android_app_name.js(実行可能に設定)というファイルを作成し、その中で検索/置換機能を使用するだけです。次のようになります。

#!/usr/bin/env node

module.exports = function(context) {

  var fs = context.requireCordovaModule('fs'),
    path = context.requireCordovaModule('path');

  var platformRoot = path.join(context.opts.projectRoot, 'platforms/Android');


  var manifestFile = path.join(platformRoot, 'AndroidManifest.xml');

  if (fs.existsSync(manifestFile)) {

    fs.readFile(manifestFile, 'utf8', function (err,data) {
      if (err) {
        throw new Error('Unable to find AndroidManifest.xml: ' + err);
      }

      var appClass = 'YOU_APP_CLASS';

      if (data.indexOf(appClass) == -1) {

        var result = data.replace(/<application/g, '<application Android:name="' + appClass + '"');

        fs.writeFile(manifestFile, result, 'utf8', function (err) {
          if (err) throw new Error('Unable to write into AndroidManifest.xml: ' + err);
        })
      }
    });
  }


};
15
ndeverge

確かに、jlreymendezが述べたように、正しい方法はこれです:

    <edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
      <application Android:name="com.mypackage.MyApplication"/>
    </edit-config>

また、プラグインを削除すると変更が元に戻ることに注意してください。フックトリックでは何も起こりません。

4
marcRDZ

以下のようにedit-configタグを使用するための最も簡単で最新の(cordovaバージョン8.1.2)方法:

    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
        <application Android:name="mypackage" />
    </edit-config>

同様の方法で、他の構成も編集できます。

お役に立てば幸いです。

4
VicJordan

私はあなたと同じ問題を抱えていたと思います。これはCordovaのドキュメントで見つかりました。

https://cordova.Apache.org/docs/en/4.0.0/plugin_ref_spec.md.html

「config-fileElement」というタイトルを検索すると、次の例が見つかります。

<config-file target="AndroidManifest.xml" parent="/manifest/application">
    <activity Android:name="com.foo.Foo" Android:label="@string/app_name">
        <intent-filter>
        </intent-filter>
    </activity>
</config-file>
1
jlreymendez