2011-01-12 3 views
6

Когда я добавляю файл GZIP-ed в свои активы проекта Android, расширение «.gz» удаляется при компоновке проекта. (Так, например, «foo.gz» в моей папке с ресурсами необходимо получить в коде с помощью getAssets().open("foo").) Это не похоже на другие расширения (например, «.html»), которые я использую. Этот актив по-прежнему GZIP-ed (я должен обернуть поток ввода в GZIPInputStream, чтобы прочитать его).Почему Android-адаптер удаляет расширение .gz для расширения активов?

Является ли это стандартным поведением или ошибкой? Если это стандартно, есть ли какая-либо документация о том, какие расширения разделяются и которые сохраняются?

РЕДАКТИРОВАТЬ: Я неправильно исказил вещи. Я испытываю эту проблему с подключаемым модулем Eclipse. Я не пробовал запустить aapt напрямую, чтобы узнать, есть ли проблема с самим инструментом или с тем, как этот плагин использует его.

+1

инструмент Android пакет активов (AAPT) распознает .gz файлы и добавляет их в .zip без их повторного сжатия (т.е. отсекает заголовок GZIP и бросает их в «сжатом» записи в zip-архив, это оптимизация времени сборки). Поведение, которое вы описываете, звучит иначе. – fadden

+0

Снятие расширения .gz кажется особенно программистом-недружелюбным. Кроме того, архив .apk имеет файл в том же месте в папке с ресурсами, как и с любым другим именем. –

+0

Это кажется преднамеренным (основанным только на имени файла) внутри aapt, Может быть, мысль заключалась в том, что если он gzipped ... то смутить людей? http://www.google.com/codesearch#uX1GffpyOZk/tools/aapt/Package.cpp&exact_package=git://android.git.kernel.org/platform/frameworks/base.git&q=%22Writing%20all%20files%22&type = cs & l = 309 –

ответ

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); 
+1

Исправьте меня, если я ошибаюсь, но похоже, что он просто удаляет все файлы, заканчивающиеся на '.gz'. Почему я хочу это сделать? –

+0

Просто прогулка до тех пор, пока не будет хорошо работать – josx

 Смежные вопросы

  • Нет связанных вопросов^_^