2

Google の Play ストアがタブレットにも役立つと認識できるように、Android アプリに必要のないいくつかの設定を設定したいと考えています。AndroidManifest.xml に次の 2 行を追加する必要があります。

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />

私は PhoneGap ビルドを使用してアプリをコンパイルしているので、何らかの方法でそれらをconfig.xmlファイルに追加する必要があるため、PhoneGap はビルド プロセス中に適切な場所にそれらを追加します (私は推測します) ... しかし、成功しません! config.xmlファイルを使用してuses-featureを追加するために使用する必要がある特定の構文はありますか?

config.xmlファイルに以下の行を追加してminSdkVersionを設定するのとほぼ同じことを行ったことに注意してください。ビルド後、マニフェスト ファイルにそれが含まれています。

<preference name="android-minSdkVersion" value="11" />
4

2 に答える 2

2

解決策を見つけました!PhoneGap Documentation - Config File Elementsに基づいて、「config.xml」ファイルに次のようなものを追加するだけです。

<gap:config-file platform="android" parent="/manifest" mode="add">
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.telephony" android:required="false" />
</gap:config-file>

ギャップ名前空間をウィジェットノードに追加することも必要です。

xmlns:gap="http://phonegap.com/ns/1.0"
于 2015-04-06T08:14:14.177 に答える
1

<config-file>オーバーライドに非常に便利に見えます... 残念ながら、これはPhoneGapのみの機能のようです。Cordova の場合、おそらくフックを使用する必要があります。

良い例はここにあります

スクリプトを修正して、必要な機能を追加しました (GPS とカメラをオプション機能にする必要があります)。

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 insertAt = data.indexOf("</manifest>");

        var optionalFeatures = "<uses-feature android:name=\"android.hardware.LOCATION\" android:required=\"false\"/><uses-feature android:name=\"android.hardware.location.GPS\" android:required=\"false\"/><uses-feature android:name=\"android.hardware.camera\" android:required=\"false\"/><uses-feature android:name=\"android.hardware.camera.autofocus\" android:required=\"false\"/>";

        var result = data.slice(0, insertAt) + optionalFeatures + data.slice(insertAt);

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

    });
}

};

次に、config.xml でフックを設定します。

 <hook type="after_build" src="scripts/afterBuild.js" />

それが役に立てば幸い

于 2016-07-04T15:50:33.190 に答える