Android基础——项目的文件结构(三)

代码源文件夹与资源文件夹

【注】此项目文件结构仅限于Android Studio下的Android项目!!!

  在一个Android项目中,代码源文件夹有4个,分别是java、jni、aidl、rs,资源文件夹有3个,分别是assets、res、resources。(这里的文件夹名称是在project视图下的名称,如有疑问可参考Android基础——项目的文件结构(一)Android视图与Project视图对比

  文件夹路径及概要说明如下表所示:

Project视图

概要说明

app/src/main/java

Java源文件夹,存放项目中所有的Java代码源文件。

app/src/main/jni

C/C++源文件夹,存放项目中所有的C和C++代码源文件。

app/src/main/aidl

AIDL源文件夹,存放项目中的Android接口定义语言代码源文件。

app/src/main/rs

RenderScript源文件夹,存放项目中的RenderScript代码源文件。

app/src/main/assets

存放程序员想使用的任何资源文件,其中的文件不能通过R调用。

app/src/main/res

存放项目中所有的资源文件,包括图片、布局、字符串等。

app/src/main/resources

留坑,此文件夹貌似用来存放Java资源文件。

  【注】本次分析java、jni、aidl、assets、res文件夹,rs及resources文件夹本人知识有限,并不了解,还是不发表言论以免误导大家。

  一、java文件夹

  java文件夹是用来存放项目中的java源码的文件夹,在java文件夹中,一般会根据公司域名和项目名称建立子文件夹,如公司域名为com.cnblogs,项目名称为HelloWorld,那么我们就会在java文件夹下新建文件夹com/cnblogs/helloworld(均使用小写字母),在AS中会直接显示com.cnblogs.helloworld为名的文件夹,在新建项目时写入的项目包名也应为com.cnblogs.helloworld,同样在新建文件夹时也可采用com.cnblogs.helloworld的写法,AS会自动建立相应的文件夹层次结构。

  java语言是Android应用开发的主流语言,可以用来控制Android应用程序的业务逻辑和表现效果,学习Android应用开发需要一定的java基础,高级的Android开发必然需要不低的java水平,所以也需要把握住java语言的学习。

  二、jni文件夹

  jni文件夹是用来存放项目中的C/C++源码的文件夹,在Android应用开发中,如果需要用到C/C++函数,那么其源码就应该放在jni文件夹中。JNI(Java Native Interface)是Java平台的一个特性(并不是Android系统特有的),其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点了。一般情况下我们首先是将写好的C/C++代码编译成对应平台的动态库,windows一般是dll文件,linux一般是so文件,再使用Java代码调用动态库中的函数。使用了JNI以后的应用程序就失去了java的跨平台特性,编译出的动态库只支持自己对应的平台。

  三、aidl文件夹

  aidl文件夹是用来存放项目中的AIDL源码的文件夹,AIDL——Android Interface Definition Language,即Android接口定义语言。是用来为Android跨进程提供支持的语言。Android系统中的进程之间不能共享内存,因此需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。

  四、res文件夹

  在Android项目中,最主要的资源文件都是存放在res文件夹下的,res文件夹下的文件都会参与项目的编译,可以通过R文件调用res文件夹的所有资源文件。res文件夹下又主要包括了drawable、layout、menu、mipmap、values等文件夹,调用drawable文件夹下的test文件可以用R.drawable.test,其他文件夹以此类推。

  drawable文件夹用来存放一些drawable资源文件,如图片、xml等。

  layout文件夹用来存放布局文件,各个控件主要通过layout布局文件来提供显示效果。

  menu文件夹用来存放菜单及子菜单项。

  mipmap文件夹用来存放图标文件,如应用程序图标,也可放在drawable文件夹下。

  values文件夹主要用来存放具体值类文件,主要采用键值对的形式存储数据,包括string、color、style、integer等数据。

  五、assets文件夹

  assets文件夹中存放的是原生文件,Android系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R文件访问它们。那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/res和被绑定在apk里,并不会解压到/data/data/包名目录下去,所以我们无法直接获取到assets的绝对路径。Android系统为我们提供了一个AssetManager工具类,AssetManager提供对应用程序的原始资源文件进行访问,允许以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。

Android基础——项目的文件结构(三)的更多相关文章

  1. Android基础——项目的文件结构(二)

    Android基础--项目的文件结构(二) AndroidManifest.xml文件分析 [注]此项目文件结构仅限于Android Studio下的Android项目!!! 在一个Android项目 ...

  2. Android基础——项目的文件结构(一)

    Android基础--项目的文件结构(一) Android视图与Project视图对比 [注]此项目文件结构仅限于Android Studio下的Android项目!!! 在Android Studi ...

  3. android 基础项目及开发出现:error opening trace file: No such file or directory错误解决

    本身这个错误不影响运行,但是看着烦啊.解决方案几种如下: 1.xml标签不完整或者未关闭,常有的事.Eclipse并不是所有的xml标记都检查,单双标记什么的. 2.有人说,据说是 android a ...

  4. Android实践项目汇报(三)

    Google天气客户端 本周学习计划 调试代码使之成功运行并实现天气预报功能. 实际完成情况 由于google取消api接口服务,天气源的传输.所以我换了一个使用 haoserver API接口的程序 ...

  5. Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航

    原文:Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航 经过前面的学习,Android Studio开发环境已准备OK,运行Android应用程序的原生模拟器和Ge ...

  6. GitHub上不错的Android开源项目(三)

    收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://ww ...

  7. Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  8. Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)

    我们经常使用github上的开源项目,使用步骤也很简单 比如: compile 'acffo.xqx.xwaveviewlib:maven:1.0.0' 这里就学习一下如何将自己的类库做出这种可以供他 ...

  9. GitHub上最火的74个Android开源项目(三)

    此前,推出的GitHub平台上“最受欢迎的开源项目”系列文章引发了许多读者的热议,在“GitHub上最火的40个Android开源项目(一).(二)中,我们也相继盘点了40个GitHub上最受欢迎的A ...

随机推荐

  1. Android和CraigDJ

    下载HTML source - 46.8 KB 下载APK - 8.1 MB Introduction  大家好,欢迎来到我的Android应用程序项目! 我必须承认,我仍然对原生安卓环境几乎一无所知 ...

  2. 《New Horizon College English》2--长篇阅读技能指南

    <New Horizon College English>2--长篇阅读技能指南 <长篇阅读>目的是提升学生的英语阅读技能和限时获取信息的能力.<长篇阅读>共四级, ...

  3. 踩坑系列:MySql only_full_group_by配置,竟导致所有应用报错?

    1. 踩坑经历 一个很平常的下午,大家都在埋头认真写bug呢,突然企业微信群里炸锅了,好多应用都出现大量的Error日志,而且都报同一个错误,就是下面这个: Caused by: com.mysql. ...

  4. hasura的golang反向代理

    概述 反向代理代码 对请求的处理 对返回值的处理 遇到的问题 概述 一直在寻找一个好用的 graphql 服务, 之前使用比较多的是 prisma, 但是 prisma1 很久不再维护了, 而 pri ...

  5. day21 Pyhton学习 模块

    一.模块:就是一个包含了python定义和声明的文件,文件名是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共 ...

  6. 学习go语言并完成第一个作品

    之前有使用C#写一个Windows下的发送邮件的命令行工具,方便一些脚本出现异常时向我的邮箱发送邮件提醒.但这并没有被我频繁使用,因为我的有些脚本还是在linux下面运行,因此我又有一篇文章用linu ...

  7. 【C语言C++编程学习笔记】一种很酷的 C 语言技巧,灵活运用编程技巧让你写代码事半功倍!

    C语言常常让人觉得它所能表达的东西非常有限.它不具有类似第一级函数和模式匹配这样的高级功能.但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了. ☆ 指定的初始化 很多人都 ...

  8. 自定义常用input表单元素二:纯css实现自定义radio单选按钮

    这是接着上一篇纯css自定义复选框checkbox的第二篇,自定义一个radio单选按钮,同样,采用css伪类和"+"css选择器为思路,下面是预览图: 下面直入主题放代码:HTM ...

  9. goland 2020 去除形参提醒

    IDEA依次打开File→settings → Editor →Inlay Hints →java ,根据个人喜好 在 Show parameter name hints 选项中灵活配置即可.新版对该 ...

  10. docker的常用操作之三:网络配置

    一, docker安装后容器使用哪些网络类型? 在宿主机执行如下命令: [root@localhost liuhongdi]# docker network ls NETWORK ID NAME DR ...