Android Studio项目结构

本文详细介绍了Android项目的工程视图和项目结构,包括AndroidManifest.xml、build.gradle等关键文件的作用及配置,同时阐述了代码从注册到运行的具体流程。

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

一、Android工程视图下项目结构

  1. manfests:
    • AndroidManifest.xml: APP的配置信息
  2. java:主要为源代码和测试代码
  3. res: 主要为资源目录,存储所有的项目资源
    • drawable: 存储一些xml文件,-*dpi表示存储分辨率的图片,适用于不同的屏幕
    • layout: 存储布局文件
    • mipmap:存储原生图片资源
    • values:存储app引用的一些值
      • colors.xml:存储一些color的样式
      • strings.xml:存储引用的string值
      • style.xml: 存储app需要用到的一些样式

二、project工程视图下项目结构

  1. build:系统生成的文件目录,最后生成的apk文件就在这个目录
  2. app/libs:为项目需要添加的.jar包或.so包等外接库
  3. app/src: 项目的源代码,其中androidTest为测试包,main为主要的项目目录和代码,test为单元测试代码。

三、主要文件

(1)、AndroidManifest.xml

  1. xmlns:android= : 定义了android的命名空间。
  2. package : 制定本应用内Java主程序的包名。
  3. application: 声明了每一个应用程序的组件及其属性。
  4. android:allowBackup:将程序加入到系统的备份和恢复架构中。
  5. android:icon:显而易见表示APP的图标了。
  6. android:label:许可列表。
  7. android:supportsRtl:启用各种RTLAPI来用RTL布局显示应用。
  8. android:theme:android的主题。
  9. activity:android:name表示当前的activity的名字,因为工程为MainActivity,所以这个名字就为这个,之后有新的activity的话,也需要添加才可以使用。
  10. intent-filter:包含了action,data和category三种。
    • action:只有android:name属性,常见的是android.intent.action.MAIN,表示此activity是作为应用程序的入口。
    • data:指定了希望接受的intent请求的数据URI和数据类型。
    • category:android:name属性,常见的是android.intent.category.LAUNCHER,决定应用程序是否显示在程序列表里。

(2)、build.gradle

Android Studio采用Gradle来构建项目。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example.a14784.myapplication"
        minSdkVersion 24
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}
  1. 第一行应用了一个插件,一般有两种值可以选择:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。应用程序可以直接运行,代码库只能依附于别的应用模块来运行。
  2. compileSdkVersion指定项目的编译版本。
  3. buildToolsVersion指定项目构建工具的版本。
  4. defaultConfig闭包对项目的细节进行配置。
  5. buildTypes闭包用于指定生成安装文件的相关配置。
  6. dependencies闭包用于指定当前项目所有的依赖关系。

四、代码流程

(1)、注册代码

文件Android-Manifest.xml,部分代码:
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

这段代码是对MainActivity这个活动进行注册,表示.MainActivty是这个项目的主活动,在手机上点击应用图标时,首先启动的就是这个活动。

(2)、程序入口

上面我们队MainActivity活动进行了注册,这段代码在MainActity.java中。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
  1. MainActivity是继承了AppCompatActivity,这是一种向下兼容的Activity,可以将Activity各个版本的特性和功能兼容到Android 2.1中。
  2. onCreate()方法是一个活动被创建时必须执行的方法。
  3. setContentView()方法用来引入布局,这里引入的是activity_main。

(3)、布局

上面我们引入了activity_main布局,这个布局在文件app>src>main>res>layoutactivity_main.xml中。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.a14784.myapplication.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值