Gradle: Исключить файл из папки 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
  }
}

Ответы

Ответ 1

В настоящий момент это невозможно.

Функция packagingOptions не применяется к ресурсам или активам Android.

Ответ 2

Я сталкиваюсь с той же проблемой, и кажется, что добавление "!" следует указывать, что файл должен быть исключен:

aaptOptions {
    ignoreAssetsPattern "!myfile.txt" 
}

"assets.exclude" может работать также путем добавления "!" но я его не тестировал...

Ответ 4

мы можем удалить файлы/папки после того, как build.gradle завершит свою внутреннюю задачу по объединению всех ресурсов.

android.applicationVariants.all {вариант ->}

это цикл, в котором предлагается множество задач по сборке 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/**']))
    }
 }
}

Ответ 5

Попробуйте следующее:

export ANDROID_AAPT_IGNORE="ignoreAssetsPatternThatActuallyWorks"
./gradlew assembleDebug

Это единственный способ повлиять на шаг mergeDebugAssets (код найденный здесь).

Отправлено ошибка об этом.

Ответ 6

просто используйте bash

zip -d xx.jar xxx.txt

удалить дублированный файл из файла jar

Ответ 7

Для защиты информации папки ресурсов Если файл 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>