相关疑难解决方法(0)

在 Android 中使用特定于构建的 aaptOptions(用于排除特定资产文件/文件夹)

一直在开发一个Android Webview应用程序,我刚刚开始使用其中的node_modules文件夹,所以很自然地我做了一些关于如何排除它的研究,我最终在这里提出了这个问题

尝试了一些答案,实际上最适合我的是关于 aaptOptions 的答案

当然,我很自然地在尝试它,试图找出有效的方法,并且我成功地从调试 apk 中排除了一些文件夹。

            aaptOptions {
                ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:'
            }
Run Code Online (Sandbox Code Playgroud)

我确实可以确认这些文件夹不包含在 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:'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用!我已经测试过它,它似乎可以运行最后定义的 aaptOptions ,无论构建类型如何。如果我将发布放在调试之后,则在任何一个构建中都不会获得示例信用。如果我在发布之后进行调试,我会在两者中获得示例信用。

我怎样才能得到我正在寻找的东西?

android android-gradle-plugin

6
推荐指数
1
解决办法
2275
查看次数

Gradle 如何从 apk 中排除文件

我将密钥库存储在资产目录中。如何在构建中排除它以创建 .apk?

我以这种方式尝试过,但仍然存在:

android {
    ...
    packagingOptions {
            ...
            exclude 'META-INF/LICENSE.txt'
            ...
            exclude 'assets/keystore'
    }
}
Run Code Online (Sandbox Code Playgroud)

它排除LICENSE.txt但不排除keystore

android gradle

5
推荐指数
1
解决办法
4332
查看次数

标签 统计

android ×2

android-gradle-plugin ×1

gradle ×1