Cordova plugin.xmlからAndroidManifest.xml "application"タグにAndroid:name = "something"を追加します
すでに投稿されているものはどれも良い答えがないので、私は新しい質問を開くことにしました。
AndroidManifest.xml "from plugin.xml"を更新する必要があるため、<application>
タグには、すでに持っているものに加えて、次のプロパティがあります。
Android:name="mypackage"
どうすればそれができますか?
ありがとうございました
同じ問題が発生し、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);
})
}
});
}
};
確かに、jlreymendezが述べたように、正しい方法はこれです:
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application Android:name="com.mypackage.MyApplication"/>
</edit-config>
また、プラグインを削除すると変更が元に戻ることに注意してください。フックトリックでは何も起こりません。
以下のように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>
同様の方法で、他の構成も編集できます。
お役に立てば幸いです。
私はあなたと同じ問題を抱えていたと思います。これは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>