Android Studio打包APK时为何排除下划线开头文件夹?如何包含?
解决Android打包时assets下划线开头文件夹被排除的问题
嘿,这个问题我之前也碰到过——Android构建工具默认会把下划线开头的assets子文件夹自动排除,导致打包后缺失数据。不过改改Gradle配置就能轻松搞定,给你两种靠谱的解决办法:
方法1:通过Gradle SourceSets强制包含所有assets内容
这是最推荐的方式,不用改动你的原始文件结构。打开你的模块级build.gradle(一般是app/build.gradle或app/build.gradle.kts),找到android代码块,添加以下配置:
Groovy语法(.gradle文件)
android { // 保留你原本的其他配置(比如compileSdk、defaultConfig等) sourceSets { main { // 强制扫描assets目录下所有文件和子目录,包括下划线开头的 assets.srcDirs = fileTree(dir: 'src/main/assets', include: ['**/*']) } } }
Kotlin DSL语法(.gradle.kts文件)
android { // 保留你原本的其他配置 sourceSets { getByName("main") { assets.setSrcDirs( fileTree("src/main/assets") { include("**/*") } ) } } }
这个配置会告诉Gradle:把src/main/assets下的所有内容(不管文件夹名是不是下划线开头)都打包进APK的assets目录里。
方法2:修改文件夹命名(备选方案)
如果不想动Gradle配置,也可以给下划线开头的文件夹重命名(比如把_data改成data),或者在assets目录下建一个非下划线开头的文件夹,把这些内容移进去。不过这种方法需要改动你的文件结构,灵活性不如第一种。
验证配置是否生效
配置完后,先执行./gradlew clean清理旧的构建缓存,再执行./gradlew assembleDebug打包调试版APK。解压APK后,检查assets目录下是否出现了之前被排除的下划线开头文件夹——如果有,就说明配置生效了。
内容的提问来源于stack exchange,提问作者bublebboy
相关产品推荐
相关产品推荐

