8

当我将 GZIP 文件添加到我的 Android 项目的资产时,在打包项目时会去除“.gz”扩展名。(因此,例如,我的资产文件夹中的“foo.gz”需要使用代码在代码中访问getAssets().open("foo")。)这似乎不会发生在我正在使用的其他扩展名(例如,“.html”)中。该资产仍然是 GZIP-ed(我必须将输入流包装在 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 回答