2014-09-18 40 views
17

Vui lòng, bạn có biết cách loại trừ một số tệp khỏi thư mục nội dung dự án Android trước khi nhiều thư mục nội dung được hợp nhất hoặc trong quá trình hợp nhất không?Gradle: Loại trừ tệp khỏi thư mục nội dung Android

Ví dụ:

android { 
    sourceSets { 
    main { 
     assets.srcDirs = [fileTree(dir: 'assets1', exclude: 'myfile.txt'), 'assets2'] // does not work 
     assets.exclude 'assets1/myfile.txt' // does not work 
     assets.exclude '**/*.txt' // does not work 
     assets.exclude '*.txt' // does not work 
    } 
    } 

    packagingOptions { 
    exclude 'assets1/myfile.txt' // does not work 
    exclude '**/*.txt' // does not work 
    exclude '*.txt' // does not work either 
    } 


    aaptOptions { 
    ignoreAssetsPattern "myfile.txt" // does not work 
    } 
} 
+0

FYI: 'assets.srcDirs = [fileTree (dir: 'assets1', loại trừ: 'myfile.txt'), 'asset2'] 'không hoạt động. – Blackhex

+0

Bạn có tìm thấy giải pháp cho điều này không? Có cùng một vấn đề với một số tập tin tài sản từ một phụ thuộc jar – 3c71

Trả lời

6

Nó không thể vào lúc này.

Tính năng không áp dụng cho tài nguyên hoặc nội dung Android.

+0

Cảm ơn, tôi sẽ cố gắng thử nghiệm với sự phụ thuộc vào tác vụ Sao chép hoặc FileTree trước khi tôi sẽ từ bỏ ... – Blackhex

6

Tôi nghĩ rằng điều này sẽ làm những gì bạn muốn:

android { 
    aaptOptions { 
     ignoreAssetsPattern "myfile.txt" 
    } 
} 

Nguồn:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-aapt-options

+0

Thật tuyệt, cảm ơn, tôi sẽ thử và chấp nhận câu trả lời của bạn cho phù hợp. – Blackhex

+1

Không, điều này cũng không hoạt động. Lỗi về các tệp trùng lặp được ném trong giai đoạn '' mergeAssets'' trong khi tôi nghĩ rằng '' aaptOption'' được áp dụng trong giai đoạn gói. – Blackhex

+0

Ok, tôi hiểu ... xin lỗi họ:/ –

1

Hãy thử điều này:

export ANDROID_AAPT_IGNORE="ignoreAssetsPatternThatActuallyWorks" 
./gradlew assembleDebug 

Đó là cách duy nhất để ảnh hưởng đến bước mergeDebugAssets (mã found here).

Đã nộp a bug về việc này.

+0

Cảm ơn bạn, tôi sẽ cố gắng ... – Blackhex

13

Tôi gặp sự cố tương tự và có vẻ như thêm "!" hoạt động để chỉ ra tệp cần được loại trừ:

aaptOptions { 
    ignoreAssetsPattern "!myfile.txt" 
} 

"asset.exclude" cũng có thể hoạt động bằng cách thêm "!" nhưng tôi đã không kiểm tra nó ...

+2

sử dụng '*' cho char rộng và sử dụng ':' để tách các mẫu. như: ** "! *. txt:! *. rtf" ** –

+0

hoạt động cho tôi .. – jony89

0

chỉ cần sử dụng bash

zip -d xx.jar xxx.txt 

để loại bỏ tập tin trùng lặp từ tập tin jar

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