2011-01-12 13 views
6

Po dodaniu pliku GZIP-ed do zasobów mojego projektu Android rozszerzenie ".gz" jest usuwane po zakończeniu projektu. (Na przykład, "foo.gz" w moim folderze zasobów musi być dostępny w kodzie przy użyciu getAssets().open("foo").) Nie wydaje się, że ma to miejsce w przypadku innych rozszerzeń (np. ".html"), z których korzystam. Zasób nadal jest GZIP-ed (muszę zawinąć strumień wejściowy do GZIPInputStream, aby go odczytać).Dlaczego Android aapt usuwa rozszerzenie plików .gz?

Czy to standardowe zachowanie lub błąd? Jeśli jest to standard, czy istnieje dokumentacja, które rozszerzenia są usuwane i które są zachowywane?

EDYCJA: Złe rzeczy źle przesadziłem. Występuje ten problem z wtyczką Eclipse. Nie próbowałem uruchamiać programu aapt bezpośrednio, aby sprawdzić, czy problem dotyczy samego narzędzia lub sposobu używania go przez wtyczkę.

+1

Android narzędzie pakiet aktywów (AAPT) uznaje .gz plików i dodaje je do .zip bez ich ponownego sprężania (czyli Odcina nagłówek gzip i spada ich do „skompresowany” wpisem archiwum zip, jest to optymalizacja czasu kompilacji). Zachowanie, które opisujesz, brzmi jednak inaczej. – fadden

+0

Usunięcie rozszerzenia .gz wydaje się szczególnie nieprzyjazne dla programisty. Ponadto archiwum .apk ma plik w tym samym miejscu w folderze zasobów, jak w przypadku każdej innej nazwy. –

+0

To wydaje się być celowe (oparte tylko na nazwie pliku) w ramach aapt, Może myśl była taka, że ​​jeśli jest zgnieciony ... to um mylą ludzi? 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 –

Odpowiedz

0

Tutaj Jak mogę to rozwiązać, po prostu robię cordova przed budową haka. 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

Popraw mnie, jeśli się mylę, ale wygląda na to, że po prostu usuwa wszystkie pliki kończące się na '.gz'. Dlaczego miałbym to robić? –

+0

Wystarczy walkthru, aż aapt działa dobrze – josx

Powiązane problemy