在Android Studio中,如何放置“assets”文件夹?

1584

我对assets文件夹感到困惑。在Android Studio中它不会自动创建,而几乎所有讨论这个问题的论坛都是关于Eclipse的。

如何在Android Studio中配置Assets目录?

27个回答

1821

由于Android Studio使用新的基于Gradle的构建系统,因此您应该将assets/放在源集内部(例如:src/main/assets/)。

在典型的Android Studio项目中,您将拥有一个app/模块,其中包含一个main/源集(从项目根目录开始的app/src/main/),因此您的主要资产将放在app/src/main/assets/中。但是:

  • 如果您需要特定于构建类型(例如debugrelease)的资源,请为这些角色创建源集(例如:app/src/release/assets/

  • 您的产品风格也可以具有带有资产的源集(例如:app/src/googleplay/assets/

  • 您的仪器测试可以具有带有自定义资产的androidTest源集(例如:app/src/androidTest/assets/),但请确保要求InstrumentationRegistry获取getContext()而不是getTargetContext()以访问这些资产

另外,快速提醒一下:在运行时,资产是只读的。请使用内部存储, 外部存储存储访问框架来进行读/写操作。(注意:前两个链接指向我的博客)

1
我正在尝试将自定义字体包含在资产目录中。我只需将.ttf文件粘贴到src/main/assets/font.ttf吗?还是需要通过代码显式地将字体分配给控件才能看到它? - Harshad Kale
3
“或者我需要通过代码显式地为控件分配字体以查看它吗?”-- 是的,完全正确。您需要在所有您想要使用这种特定字体的TextView小部件(和其他从TextView继承的小部件)上调用setTypeface()方法。 - CommonsWare
17
好的,没问题。那个方法很有效。我希望有一种方式可以将Assets字体(自定义)包含在Styles.xml中,而不是通过代码使用它。(我的要求可能听起来太简单了,因为我是初学者,如果这样的话请原谅我 :-P) - Harshad Kale
1
谢谢!我已经搜索了几个小时了。我尝试在 /src/main/res/ 下创建一个资产子目录,但该目录被从 apk 构建中删除了。 - srowley
2
@Bora:那么您在“assets/”目录中没有countries.txt文件。这是一个示例项目,其中包括将文件从资产复制到内部存储的操作。如果您还有其他疑问,请提出单独的Stack Overflow问题,并提供一个[mcve]。 - CommonsWare
显示剩余7条评论

1626
让Android Studio为您完成。
  1. 在Android Studio(版本1.0及以上)中,右键单击 enter image description here 文件夹并导航到 Assets Folder

enter image description here

  1. 在下一个屏幕上,只需单击 Finish

enter image description here

就这样!它将在 main 目标源集中创建 assets 文件夹。

enter image description here


106
该解决方案适用于 Android Studio 1.0 及以上版本。其他答案已过时。 - JR Tan
54
图示能够改变世界的一切! - fullmoon
2
问题:在较新版本的Android Studio(我使用的是2.1.2),空的资产文件夹不会显示在项目文件窗口中,这使得添加文件变得困难。:( - SMBiggs
2
@ScottBiggs 一旦您按照上述(在v2.1.2上)添加_assets_文件夹,它应该在_app > src > main_内可见。 - Prince
2
在Java文件中,这个文件夹的链接是什么? - Whip
例如,如果您需要访问 assets>fonts,您可以这样做:Typeface t = Typeface.createFromAsset(getAssets(),"font/myfont.ttf")); 因此,调用 getAssets() 将为您提供 assets 文件夹内目录的路径。 - Prince

131

查看您项目的.iml文件,您将看到以下行:

 <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />

这意味着Gradle已经声明了“assets”文件夹。您需要在src/main/下创建它(我使用的是Android Studio 0.4.2)。


9
我的 .iml 文件里没有这个,我应该将这部分代码添加到文件的哪个部分? - nitsujri
12
你可能有两个.iml文件,检查这两个文件。 - fernandohur
1
检查 app.iml 文件而不是 <Project-Name>.iml。 - Tony
1
始终在您的src根目录下,而不是项目目录中。那只是为gradle准备的东西。 - Sindri Þór

95

选择app文件夹,然后:

文件 > 新建 > 文件夹 > assets Folder

输入图像描述

默认位置在/main文件夹内。

输入图像描述


2
这是被接受的答案的 TL;DR 版本,实际上非常有用。 - Guillaume Perrot

66

首先,"Assets" 文件夹不会自动随项目创建。我们需要手动创建它。

Assets 文件夹的位置是:App > src > Assets

请看下面的简单图片。

enter image description here

注意: 创建资产文件夹只需点击项目 => 右键单击 => 选择新建 => 文件夹 => 资产。它会创建资产文件夹。


如果有其他像我一样被这些答案搞糊涂的新手,文件夹结构可能会根据左上角的选择而有所不同。我的选择是“Android”,而这里的所有人都在使用“Project”或“Project Files”。 - Big_Chair
项目结构根据您选择的项目结构、项目、项目文件、包、Android等而有所不同,但是您可以按照我分享的屏幕并查看项目结构类型的选择。 - Lovekush Vishwakarma

43

很简单,按照以下步骤操作

文件 > 新建 > 文件夹 > 资源文件夹

注意 : 在创建文件夹之前必须选择应用程序。


31

在Android Studio中,您可以指定源代码文件夹、资源文件夹和资产文件夹的位置。对于build.gradle文件中的每个模块或应用程序,您可以添加以下内容:

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

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

如果遵循惯例,这是否必要? - H.Rabiee
如果您的项目不是从Android Studio的模板创建的(例如,从AOSP源代码克隆),那么这非常有用。 - Phạm Nguyễn Hoàng

30

简单地说,双击Shift键,然后输入资产文件夹

选择正确的位置进行创建


1
最简单的一个!(Y) - GreenROBO
这是一个秘密。哇。谢谢。 - ralphgabb

22

点击主菜单→新建→目录,并输入名称为"assets"

或者...主菜单→新建→文件夹→资产文件夹(见图片)

输入图像描述


21
在Android Studio 4.1.1中, 右击你的模块(例如app) -> 新建 -> 文件夹 -> 资产文件夹。 在这里输入图片描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接