Ответ 1
В настоящий момент это невозможно.
Функция packagingOptions
не применяется к ресурсам или активам Android.
Пожалуйста, знаете ли вы, как исключить какой-либо файл из папки активов проекта Android до объединения нескольких папок с данными или во время слияния?
Например:
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
}
}
В настоящий момент это невозможно.
Функция packagingOptions
не применяется к ресурсам или активам Android.
Я сталкиваюсь с той же проблемой, и кажется, что добавление "!" следует указывать, что файл должен быть исключен:
aaptOptions {
ignoreAssetsPattern "!myfile.txt"
}
"assets.exclude" может работать также путем добавления "!" но я его не тестировал...
Я думаю, что это должно делать то, что вы хотите:
android {
aaptOptions {
ignoreAssetsPattern "myfile.txt"
}
}
Источник: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-aapt-options
мы можем удалить файлы/папки после того, как build.gradle завершит свою внутреннюю задачу по объединению всех ресурсов.
это цикл, в котором предлагается множество задач по сборке Android (на отличном языке).
так что в этом случае mergeAssets.doLast - это отличная задача, в которой мы можем выполнять операции удаления.
здесь я использовал код для удаления zip файла и папки с изображениями
проверено на Android 3.1.4
надеюсь, это поможет
android.applicationVariants.all { variant ->
if (variant.buildType.name == 'release') {
variant.mergeAssets.doLast {
println("deleting item.zip', 'images/**' from variant")
delete(fileTree(dir: variant.mergeAssets.outputDir, includes: ['item.zip', 'images/**']))
}
}
}
Попробуйте следующее:
export ANDROID_AAPT_IGNORE="ignoreAssetsPatternThatActuallyWorks"
./gradlew assembleDebug
Это единственный способ повлиять на шаг mergeDebugAssets
(код найденный здесь).
Отправлено ошибка об этом.
просто используйте bash
zip -d xx.jar xxx.txt
удалить дублированный файл из файла jar
Для защиты информации папки ресурсов Если файл html
имеет значение css
или js
, самый простой способ:
Сначала напишите свой код в html editor
, а затем введите его в Java class
следующим образом:
public class Content{
public static final String myContent ="<!DOCTYPE html> ... </html> "
А затем вызовите метод loadDataWithBaseURL
webView.loadDataWithBaseURL(null,Content.myContent, "text/html" , "UTF-8" ,null);
И вы можете позвонить js
и css
в HTML-коде:
...
<head>
<link rel="stylesheet" type="text/css"
href="file:///android_asset/css/custom.css" />
<script src="file:///android_asset/js/code.jquery.js"></script>
</head>