2011-01-12 32 views
6

Khi tôi thêm tệp GZIP-ed vào nội dung của dự án Android của tôi, tiện ích mở rộng ".gz" bị tước khi dự án được đóng gói. (Ví dụ: "foo.gz" trong thư mục nội dung của tôi cần được truy cập bằng mã sử dụng getAssets().open("foo").) Điều này dường như không xảy ra với các tiện ích mở rộng khác (ví dụ: ".html") mà tôi đang sử dụng. Nội dung vẫn là GZIP-ed (tôi phải bọc luồng đầu vào trong GZIPInputStream để đọc nó).Tại sao aapt Android loại bỏ phần mở rộng tệp .gz của nội dung?

Hành vi tiêu chuẩn này hoặc lỗi? Nếu đó là tiêu chuẩn, có bất kỳ tài liệu nào về các phần mở rộng nào bị loại bỏ và các phần mở rộng nào được giữ nguyên không?

CHỈNH SỬA: Tôi đã hiểu nhầm mọi thứ. Tôi đang gặp phải vấn đề này với trình cắm thêm của Eclipse. Tôi đã không cố gắng chạy aapt trực tiếp để xem liệu vấn đề là với các công cụ chính nó hoặc với cách plug-in đang sử dụng nó.

+1

Android công cụ gói tài sản (aapt) nhận gz tập tin và thêm chúng vào trong .zip mà không cần nén chúng (tức là nó dải tắt tiêu đề gzip và giọt họ vào một mục "nén" trong kho lưu trữ zip; đây là tối ưu hóa thời gian xây dựng). Tuy nhiên, hành vi bạn mô tả âm thanh khác nhau. – fadden

+0

Tước phần mở rộng .gz có vẻ đặc biệt là lập trình-không thân thiện. Ngoài ra, kho lưu trữ .apk có tệp ở cùng một vị trí trong thư mục nội dung giống với bất kỳ tên nào khác. –

+0

Điều này dường như là cố ý (dựa trên tên tập tin chỉ) trong aapt, Có lẽ suy nghĩ là nếu nó được gzipped .... sau đó um nhầm lẫn mọi người? 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 –

Trả lời

0

Đây là cách tôi giải quyết nó, chỉ cần thực hiện một cordova trước khi xây dựng móc. 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

Sửa lỗi nếu tôi sai, nhưng có vẻ như nó chỉ xóa tất cả các tệp kết thúc bằng '.gz'. Tại sao tôi lại muốn làm điều đó? –

+0

Chỉ cần một walkthru cho đến khi aapt hoạt động tốt – josx

Các vấn đề liên quan