Android Studio学习笔记——文件和目录解析

本文详细介绍了Android Studio中的项目结构,包括module的概念及其类型,如AndroidApplicationModules、TestModules等,以及如何创建和配置这些模块。此外还阐述了项目文件的作用及组成,帮助开发者更好地理解和管理项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、module(相当于Eclipse的project)

    module是整个项目结构的第一级,它囊括了具体的源代码和资源文件,以下介绍几种module:

  • Android Application Modules
        这个模块用来存放源代码、资源文件以及应用级别的设置。比如,module-level构建文件, 资源文件和Android Manifest文件. 这个模块的内容最终会被打包进apk文件.
  • Test Modules
        测试模块,该模块的内容最终会被编译打包进测试程序,默认情况下,AS(Android studio,下同)会创建androidTest module以插入JUnit单元测试.

  • Library Modules
        库模块。这个模块包含了你可以在Android项目中引用的共享的源代码及资源文件,这有利于代码的复用,库模块不能被安装到设备上,它们只会在编译的时候被放进apk文件中。

  • App Engine Modules
        可用来给你的app添加云端服务等。

        当你使用adt创建一个项目时,只会生成很少一部分文件和文件夹,有些取决于你是否是用AS或者android tool创建模块的。随着你的应用变得越来越复杂,你也许需要新的资源、目录或文件。

        注:项目文件夹和文件应用于整个Android项目,并且会覆盖相似模块的文件设置。

二、Android Project Files(项目文件)

    AS的项目文件和设置作用于整个项目范围。

  • .idea
    IntelliJ IDEA的设置目录.
  • app
    应用模块的目录和文件
  • build
    这个目录为项目中所有模块指定构建输出位置
  • gradle
    包含gradler-wrapper文件.
  • .gitignore
    git中忽略的文件
  • build.gradle
    用于构建系统的可自定义的属性文件. 你可以编辑此文件来指定app模块所使用的默认编译配置,也可以设置keystore文件的位置和key alias使编译工具可以在release模式下为你的app进行签名。这个文件是项目中必须的,因此你需要将它加入到版本控制系统中。
  • gradle.properties
    项目级别的Gradle配置文件.
  • gradlew
    Unix系统Gradle启动脚本.
  • gradlew.bat
    Windows系统Gradle启动脚本.
  • local.properties
    编译系统使用的开发环境配置文件,比如sdk安装路径。由于这个文件的内容是跟本地开发环境相关的,因此不能把它加入到版本控制系统中。
  • .iml
    IntelliJ IDEA创建的用来保存模块信息的模块文件。
  • settings.gradle
    指定要编译的子项目。
三、Android Application Modules(应用模块)

    安卓应用模块是根据你的编译配置,最终会被编译进apk文件的模块。它们包含源代码和资源文件。默认情况下会为你生成很多代码和资源文件,如果还需要其他的需要自行创建。以下的目录和文件组成一个Android应用模块:

  • build/
    包含指定的编译参数要用的文件夹,保存在主应用模块。
  • libs/
    包含私有库,保存在主应用模块。
  • src/
    包含了保存在src/main/java//ActivityName>.java下的Activity和其他代码文件(如.java或.aidl)。
  • androidTest/
    包含单元测试。
  • main/java/com.>project<.>app<
    包含activity使用的java文件
  • main/jni/
    包含jni文件
  • main/gen/
    包含AS自动生成的文件
  • main/assets/
    存放原始文件,可用于存放游戏数据等。
  • main/res/anim/
    存放动画XML文件
  • main/res/color/
    存放颜色XML文件
  • main/res/drawable/
    存放图标文件
  • main/res/mipmap/
    存放应用图标
  • main/res/layout/
    存放布局文件
  • main/res/menu/
    存放菜单文件
  • main/res/raw/
    存放原始文件
  • main/res/values/
    存放字符、颜色值、尺寸等XML文件
  • main/res/xml/
    存放各种配置用的XML文件
  • AndroidManifest.xml
    Android配置清单
  • .gitignore/
    git忽略文件
  • app.iml/
    IntelliJ IDEA 模块
  • build.gradle
    见前面的build.gradle描述
  • proguard-rules.pro
    代码混淆配置文件
四、Library Module(库模块)

    可以将第三方库引入你的工程,库不能单独打包成apk文件。如果引用多个库,可以为他们设置不同的优先级,如果两个库定义了相同的resource id,那么低优先级的会被高优先级覆盖,高优先级会被应用程序本身覆盖。在引用库的时候要注意以下几点:

  • 资源冲突
    不同的库中定义了相同的resource id,那么他们最终会按照应用本身>高优先级库>低优先级库的方式合并,开发的时候应清楚这一点。
  • 使用前缀来避免资源冲突
    可以通过使用前缀来避免冲突
  • 不能将库文件导出为jar
    以后sdk tools将会支持这一功能
  • 库可以引用jar文件
    需要手动修改依赖模块的build path并且添加jar文件的path
  • 库模块可以引用外部jar文件
    注意库模块以及引用这个库的应用都要在他们的manifest文件中使用标签声明这个外部jar
  • 库模块不能包含原始文件(raw)
  • 库模块的平台版本必须小等于主应用模块的版本
  • 库模块的名字没有限制
  • 每个库模块都生成自己的R.java
  • 库模块位置
    没有对库模块位置做特殊要求,可以使用相对路径来引用库模块
五、创建新project(相当于Eclipse的workspace)

点击File-New-New Project,会弹出一个向导,根据向导提示一步一步完成即可。

六、创建新module

与创建新project类似

七、配置库模块
  • 把一个现有的application module变成library,只要修改该模块的build.gradle文件,将apply plugin: 'com.android.application'改为apply plugin: 'com.android.library'即可

  • 为library module添加依赖关系
    在project视图下,编辑app/build.gradle,给lib模块加上依赖关系

...
dependencies {
    ...
    compile project(":lib")
}
八、引用库模块

基于AS v1.2.2
1. 确保要引用的库模块和使用该库的主模块都在工程中,如果没有先将他们导入
2. 在project视图下,右键要引用库的模块,点击Open Module Settings或者在左键选中要引用库的模块,按F12,这两种方法都会打开project structure界面
3. 切换到dependencies选项卡,单击右侧加号图标,可以选择引用库、文件或者模块,通过上下箭头图标可以改变优先级
4. 通过单击Scope条目可以下拉选择以何种方式应用依赖,默认是compile
5. 执行以上步骤之后就可以点击OK关闭project structure界面

九、在主应用中的manifest文件中声明库中用到的组件

    声明时需要使用完整包名,如:

<manifest>
  ...
  <application>
    ...
    <activity android:name="com.example.android.tictactoe.library.GameActivity" />
    ...
  </application>
</manifest>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值