由于从事Android Webview应用程序的开发,我才刚刚开始在其中使用node_modules文件夹,所以自然地我对如何排除它进行了一些研究,最终得到了this question here
尝试了一些答案,对我来说最有效的答案是the one about aaptOptions
因此,当然,我自然会在尝试使用它,试图找出可行的方法,然后我成功地从调试apk中排除了一些文件夹。
aaptOptions {
ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:'
}
我确实可以确认这些文件夹没有包含在Android Studio的最终APK中!成功!
因此,我意识到我可以做一些聪明的事情:当我运行我的应用程序时,在我的终端上对其进行测试,调试,我希望在某些地方自动放置某些凭据-我这样做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是什么,无论构建类型如何,它都可以运行。如果我将版本放到调试后,则在任何一个版本中都不会得到示例示例。如果我在发布后进行调试,则两者都会得到示例代码。
我如何得到想要的东西?
答案 0 :(得分:0)
通常,应该像其他配置块一样配置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
}
}
}
}