Использование специфичных для сборки aaptOptions в Android (для исключения определенных файлов / папок Assets) - PullRequest
1 голос
/ 10 мая 2019

Я работал над приложением Android Webview, и я только сейчас начал использовать там папку node_modules, поэтому, естественно, я провел некоторое исследование о том, как ее исключить, и в итоге получил этот вопрос здесь

Пробовал некоторые ответы, и тот, который на самом деле работал лучше всего для меня, был тот, что о aaptOptions

Так что, естественно, я играю с этим, пытаясь выяснить, что работает, и мне удается исключить несколько папок из apk отладки.

            aaptOptions {
                ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:'
            }

И я действительно могу подтвердить, что эти папки не включены в окончательный APK в Android Studio!Удачи!

Итак, я понимаю, что могу сделать что-то умное: когда я запускаю свое приложение, тестирую его на своем конце, отлаживаю, мне нравится, когда в определенных местах автоматически вводятся определенные учетные данные- Я делаю это с помощью javascript - но, очевидно, я не хочу, чтобы эти учетные данные были включены в APK, которые я мог бы отправить в мир, - хотя я уже кодировал его, чтобы не вводить учетные данные автоматически, пока я не отлаживаю,учетные данные по-прежнему на самом деле в файлах javascript , и, вероятно, кто-то может заглянуть туда и увидеть их!

Поэтому я хотел создать файл 'example-creds.js' ииспользуйте aaptOptions, чтобы не включать этот файл, ТОЛЬКО в релизные сборки, поэтому я придумал что-то похожее на это (лишние детали удалены):

android {
    buildTypes {
        release {
            aaptOptions {
                ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:!example-creds.js:'
            }
        }

        debug {
            aaptOptions {
                ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:'
            }
        }
    }
}

НО ЭТО НЕ РАБОТАЕТ! Я проверил его, и, похоже, он запускается независимо от того, какие последние определены aaptOptions, независимо от типа сборки.Если я ставлю релиз после отладки, я не получаю ни одного примера-кредита ни в одной из сборок.Если я ставлю отладку после выпуска, я получаю примеры кредитов в обоих.

Как я могу получить то, что я ищу?

1 Ответ

0 голосов
/ 10 мая 2019

Как правило, можно настроить AaptOptions так же, как любой другой блок конфигурации.Попробуйте запустить этот скрипт afterEvaluate (то есть после того, как эти aaptOptions были оценены):

task afterEvaluate {
    doLast {
        applicationVariants.all { variant ->
            variant.outputs.all { output ->
                def pattern = "!node_modules:!jsunmin:!.idea:!jade:!css-scss:"
                if(variant.getBuildType().getName() == 'release') {
                    pattern = pattern + "!example-creds.js:"
                }
                aaptOptions.ignoreAssetsPattern = pattern
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...