如何使用phonegap插件中的Plugin.xml文件在清单文件中添加android:largeHeap ="true"

sat*_*ish 7 plugins android cordova

我们如何使用android phonegap中的plugin.xml文件在清单文件中将android:largeHeap添加为true

hev*_*ets 14

对我们有用的解决方案是使用Cordova/PhoneGap Hook进行此操作.

在以下路径创建一个钩子

{app-root}/hooks/after_prepare directory/010-update-android-manifest.js

重要的是使此文件可执行

chmod +x 010-update-android-manifest.js

#!/usr/bin/env node

var fs    = require('fs');
var async = require('async');
var exec  = require('child_process').exec;
var path  = require('path');

var root = process.argv[2];
var androidManifest = path.join(root, 'platforms/android/AndroidManifest.xml');
fs.exists(path.join(root, 'platforms/android'), function(exists) {
    if(!exists) return;
    fs.readFile(androidManifest, 'utf8', function(err, data) {
        if(err) throw err;

        var lines = data.split('\n');
        var searchingFor = '<application android:hardwareAccelerated="true"';
        var newManifest = [];
        var largeHeap = 'android:largeHeap="true"';
        lines.forEach(function(line) {
            if(line.trim().indexOf(searchingFor) != -1 && line.trim().indexOf(largeHeap) == -1) {
                newManifest.push(line.replace(/\>$/, ' ') + largeHeap + ">");
            } else {
                newManifest.push(line);
            }
        });

        fs.writeFileSync(androidManifest, newManifest.join('\n'));
    });
});
Run Code Online (Sandbox Code Playgroud)

这会将android:largeHeap ="true"附加到应用程序标记.

构建您的应用

cordova build

  • 非常感谢。要在Visual Studio 2015中使用它,我必须更改“ root”并删除“ async”(无论如何都没有使用)`var root = path.join(__ dirname,“ ..”);`和在config.xml中在&lt;platform name =“ android”&gt;里面添加了&lt;hook type =“ after_prepare” src =“ hooks / 010-update-android-manifest.js” /&gt;`只是评论,因为我迷失了如何添加自己。 (2认同)