Android 项目文件结构分析

本文深入解析Android Studio项目结构,包括.app、.gradle、.idea等关键目录的作用,以及MainActivity函数执行流程。详细介绍资源文件引用方式,如strings.xml和AndroidManifest.xml的使用。

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

一.项目结构

Android Studio(以下均简称AS)的项目结构默认为Android模式的项目结构,但是Android模式的项目结构(图1.1)

图1.1

并非项目真正的结构,只是方便用户开发,若要查看真是目录结构,可以切换置Project模式(图1.2)。

图1.2

 

二.文件目录详解

图2.1是一张Project模式下的文件目录结构。

图2.1

下面我们就来逐一分析个文件/目录的作用

 1. .gradle和.idea

 这两个目录都是AS自行生成的文件,请不要去自行编辑。

 2. app

 这个文件一般是我们主要要用到的文件目录,详细的目录结构见图2.2

图2.2

 

  -build

   AS在编译时自动生成的文件。

  -libs

   使用的第三方jar包将被放入此路径。

  -androidTest

   编写测试用例,可以对项目进行一些自动化的测试。

  -java

   我们写的java代码被放在这个路径下。

  -res

   资源文件,我们用到的图片、布局、字符串都被放在这个路径下。

图2.3

我们这里说下res下各文件夹的作用

    --drawable:图片

    --layout:布局文件

    --mipmap-(*)hdpi:应用图标

    --values:串、样式、颜色设置

我们直到各个文件夹的作用了,那么如何引用这些资源呢?

我们打开res/values/string.xml查看到该文件的代码,如下:

<resources>
    <string name="app_name">helloWorld</string>
</resources>

这里定义了一个程序名的字符串,我们可以用两种方法来引用它:

*在代码中通过R.string.hello_world来获得该串引用;

*在xml中通过@string/hello_world来获得该串引用;(见如下AndroidManifest.xml文件的调用)

 

  -AndroidManifest.xml

   整个安卓项目的配置文件,你的程序用到的四大组件都要在这里注册。关于AndroidManifest.xml文件的详细说明见如下分  析。(在看以下分析前建议先看完res资源文件介绍)。

   这份是AndroidManifest.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.helloworld">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

下面我们着重看以下这一部分

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
</application>

 相关参数说明:

    --android:icon:项目的应用图标

    --android:label:项目的名称

 

  -test

   用来编写Unit Test,项目测试的另一种方法(之前提到了androidTest)。

  -.gitnore

   将指定的文件或目录排除在版本控制范围外。

  -app.iml

   IDEA自动生成的文件。

  -build.gradle

   app模块的gradle构建脚本。

  -proguard-rules.pro

   代码的混淆规则,用于防破解。

 3. build

 项目编译自动生成的文件

 4. gradle

 包含gradle wrapper的配置文件,联网时系统会自动下载gradle。

 5. .gitignore

 涉及版本控制,后面会提到。

 6. build.gradle

 全局的gradle脚本,不需要修改。

 7. gradle.properties

 全局的gradle的配置文件

 8. gradlew和gradlew.bat

 用来在命令行界面执行gradle命令的,前者是mac/linux的,后者是windows的。

 9. helloWorld.iml

 IDEA特征文件

 10. local.properties

 本机的Android SDK路径。

 11. settings.gradle

 指定项目中所有引入的模块。

 

三.MainActivity的函数执行

先上代码

package com.example.helloworld;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

这里要说明的有以下几点:

AppCompatActivity 这是一个向下兼容的Activity(Activity是Android提供活动的基类)。
onCreate() 这是一个活动创建时必须执行的方法。
setContentView() 调用此方法给当前活动引入一个activity_main的布局。

关于布局文件都是在res/layout下的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水能zai舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值