8

Android プロジェクトのアセットに GZIP ファイルを追加すると、プロジェクトがパッケージ化されるときに「.gz」拡張子が取り除かれます。(つまり、たとえば、assets フォルダー内の "foo.gz" は、コードを使用してアクセスする必要がありますgetAssets().open("foo")。) これは、私が使用している他の拡張子 (".html" など) では発生しないようです。アセットはまだ GZIP 化されています (入力ストリームを GZIPInputStream でラップして読み取る必要があります)。

これは標準的な動作ですか、それともバグですか? 標準の場合、どの拡張機能が削除され、どの拡張機能が保持されるかについてのドキュメントはありますか?

編集:私は見栄えのするものを誤解しました。Eclipse プラグインでこの問題が発生しています。aapt を直接実行して、問題がツール自体にあるのか、それともプラグインがそれをどのように使用しているのかを確認することは試していません。

4

1 に答える 1

0

ここでは、ビルドフックの前にコルドバを実行するだけで解決できます。 https://gist.github.com/josx/fc76006e6d877b17fefd

#!/usr/bin/env node

/**
 * Lets clean up some files that conflicts with aapt.
 * https://osvaldojiang.com/p/137
 * https://github.com/driftyco/ionic/issues/4584
 * http://stackoverflow.com/questions/4666098/why-does-android-aapt-remove-gz-file-extension-of-assets
 * https://forum.ionicframework.com/t/android-build-failed-ionic-cordova-unable-to-add-asset-file-file-already-in-archive/41146
 */

var glob = require('glob');
var fs = require('fs');
var path = require('path');

var deleteFilesFromFolder = function(globExp) {
  // Find files
  glob(globExp, function(err,files) {
    if (err) throw err;
    files.forEach(function(item, index,array) {
      console.log(item + " found");
    });

    // Delete files
    files.forEach(function(item, index,array) {
      fs.unlink(item, function(err) {
        if (err) throw err;
          console.log(item + " deleted");
      });
    });
  });
};

var globExp = path.resolve(__dirname, '../../www/lib') + '/**/*.gz';
deleteFilesFromFolder(globExp);
于 2016-01-14T20:25:09.437 に答える