Android Studio 中 assets 文件夹的放置位置

Android Studio 中 assets 文件夹的放置位置

技术背景

由于 Android Studio 使用基于 Gradle 的新构建系统,因此需要按照一定规则放置 assets 文件夹。

实现步骤

通用位置

在典型的 Android Studio 项目中,通常会有一个 app/ 模块,有一个 main/ 源码集(项目根目录下的 app/src/main/),主要的 assets 文件夹应放在 app/src/main/assets/

按构建类型放置

若需要特定于构建类型的 assets,如 debugrelease 版本不同的资源,可以为这些角色创建源码集。比如,debug 版本的 assets 放在 app/src/debug/assets/release 版本的放在 app/src/release/assets/

按产品风味放置

产品风味也可以有带 assets 的源码集,例如 app/src/googleplay/assets/

测试专用放置

仪器测试(instrumentation tests)可以有一个带有自定义 assetsandroidTest 源码集,如 app/src/androidTest/assets/。不过,访问这些资源时,要向 InstrumentationRegistry 请求 getContext(),而不是 getTargetContext()

通过 Android Studio 菜单创建

  • 方法一:在 Android Studio(1.0 及以上版本)中,右键单击相应文件夹,选择 Assets Folder,然后点击 Finish,它会在 main 源码集中创建 assets 文件夹。
  • 方法二:选择 app 文件夹,通过 File -> New -> folder -> assets Folder 创建,默认位置在 /main 文件夹内。
  • 方法三:可以直接在 main 文件夹下,右键选择 New -> Directory,命名为 assets
  • 方法四:在项目结构中进行设置,路径为 Project Structure > Project Settings

核心代码

如果需要在 Gradle 中配置 assets 文件夹的路径,可以在 build.gradle 文件中添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"

sourceSets {
main {
java.srcDirs = ['src']
assets.srcDirs = ['src/main/assets/']
res.srcDirs = ['res']
manifest.srcFile 'AndroidManifest.xml'
}
}
}

如果需要指定多个 assets 文件夹,则可以这样配置:

1
2
3
4
5
6
// file: build.gradle
sourceSets {
main {
assets.srcDirs = ['src/main/res/icon/', 'src/main/assets/']
}
}

最佳实践

  • 对于通用资源,统一放在 app/src/main/assets/,便于管理和维护。
  • 对于不同构建类型或产品风味的资源,按需创建相应的源码集,避免资源混乱。
  • 在创建 assets 文件夹时,尽量使用 Android Studio 的菜单功能,避免手动创建可能出现的配置错误。

常见问题

  • 文件夹不显示:如果在侧边栏看不到 assets 文件夹,可能是因为选择了 android 视图。可点击顶部的下拉菜单,选择 Packages 视图,即可看到标准的文件夹层级结构。
  • 创建无效:若尝试了各种方法都无法创建 assets 文件夹,可以尝试清理项目,即通过 Project -> clean 来解决。