私は今Cordova Plugin
を開発しています、追加したい
Android:allowBackup="true"
AndroidManifest.xml
に入れますが、plugin.xml
で指定する方法がわかりません。
私のために働いた構成編集は次のとおりでした:
<platform name="Android">
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application Android:allowBackup="false"/>
</edit-config>
</platform>
2020年2月の編集:以下の@Shashank Agrawal forcordovaからの回答を参照してください-Android> = 7
回答 shared by @MuhammadOmarはcordova-Android <7で動作します。しかし、状況は変わりましたcordova-Android> = 7
https://cordova.Apache.org/announcements/2017/12/04/cordova-Android-7.0.0.html
だからあなたはそれを少し変更する必要があります
<platform name="Android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application Android:allowBackup="false"/>
</edit-config>
</platform>
私のために働いた構成編集は次のとおりでした:
<platform name="Android">
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application Android:allowBackup="false"/>
</edit-config>
</platform>
Androidアプリがインストール時にバックアップを復元しないようにするには、config.xmlにconfigを追加します。
Xml名前空間が定義されていることを確認します。コルドバのビルドは私にとってこれなしでは失敗しました。
以下を追加することで解決しました。
<platform name="Android">
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:Android="http://schemas.Android.com/apk/res/Android">
<application Android:allowBackup="false" />
</edit-config>
</platform>
アプリのAndroidManifest.xmlで何かを追加/編集する必要があるプラグインを作成している場合、これを行うための機能がplugin.xmlに組み込まれています。質問の例では、次のようになります。
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application Android:allowBackup="true" />
</edit-config>
これはより簡単な例ですが、 cordova custom config プラグインが必要です。
<platform name="Android">
<preference name="Android-manifest/application/@Android:allowBackup" value="true" />
</platform>`
あなたはフックを介してそれをしなければなりません(以下はIonic app)の例です:
config.xmlに次のようにフックを追加します:
<platform name="Android"> <hook type="before_plugin_install" src="hooks/androidBeforeInstall.js" />
hooksフォルダーにjsファイルandroidBeforeInstall.jsを作成し、以下のコードを追加します:
module.exports = function(ctx) {
var fs = ctx.requireCordovaModule('fs'),
path = ctx.requireCordovaModule('path'),
xml = ctx.requireCordovaModule('cordova-common').xmlHelpers;
var manifestPath = path.join(ctx.opts.projectRoot, 'platforms/Android/AndroidManifest.xml');
var doc = xml.parseElementtreeSync(manifestPath);
if (doc.getroot().tag !== 'manifest') {
throw new Error(manifestPath + ' has incorrect root node name (expected "manifest")');
}
doc.getroot().find('./application').attrib['Android:allowBackup'] = "true";
//write the manifest file
fs.writeFileSync(manifestPath, doc.write({
indent: 4
}), 'utf-8');
};
まず、次のようになっていることを確認してください:( Androidをインポートするには)
<widget id="com.myapp" version="0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:Android="http://schemas.Android.com/apk/res/Android">
次に、Androidセクション
<platform name="Android">
...
...
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application Android:allowBackup="false" />
</edit-config>
注:この編集構成セクションを使用して、AndroidManifest.xmlに多くの変更を加えることができます
そして、誰かが疑問に思っている場合は、セクションの下にこれを追加することで、iOSと同様のことを実現できます。
<preference name="BackupWebStorage" value="none" />
最新のcordova version 8.1.2
については、どの回答もうまくいきませんでした。以下は私がそれをどのように行い、完全にうまく機能したかです。同様の方法で、AndroidManifest.xml
の他の構成を更新することもできます。
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application Android:allowBackup="false" />
</edit-config>
完了です!
Edit-configを使用するとプラグインが壊れるので、注意して使用し、後ですべてのプラグインをテストしてください。
詳細: https://issues.Apache.org/jira/browse/CB-13514
プラグインを壊さずに機能するのは、以下を使用することです(cordova-custom-configが必要です)
<platform name="Android">
<custom-preference name="Android-manifest/application/@Android:allowBackup" value="false" />
私の場合、プラグインを使用しました cordova-custom-config
cordova plugin add cordova-custom-config
そして問題は解決されました。
集計するconfig.xml内
<platform name="Android">
...
<custom-preference name="Android-manifest/application/@Android:allowBackup" value="false" />
...
</platform>
cordova-custom-config-example の例でプラグインの詳細を表示します
および ガイド のandoidのドキュメント