【Android从零单排系列三】《认识一下Android项目结构》

简介: 前两篇文章介绍了一下android发展的历史背景、android环境搭建,这篇文章和大家说一下android项目的目录结构及作用。

目录

前言

前两篇文章介绍了一下android发展的历史背景、android环境搭建,这篇文章和大家说一下android项目的目录结构及作用。

一.Android项目结构

image.gif编辑

app :主程序文件夹,放程序的各个文件夹, res 里面是资源文件,如图片、layout、values 等资源。

       build: 构建目录

       libs: 依赖的包

       src: 写 Java 代码的地方

       res: 资源文件

       anim:存放动画文件

       drawable: 图像资源,存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的 drawable 类型的 XML 文件。

       layout: 布局资源

       mipmap: 图像资源

                   mipmap-hdpi:高分辨率

                   mipmap-mdpi:中等分辨率

                   mipmap-xhdpi:超高分辨率 默认项目图片都放到这里面

                   mipmap-xxhdpi:超超高分辨率

        values:

                   colors: 色彩资源

                   string: 字符串资源

                   demens: css配置文件,定义尺寸资源(图中未给出)

                   styles: 定义样式资源

           AndroidManifest.xml: 主配置文件,用于配置各个组件的访问权限

           build.gradle 文件默认放依赖的各种库文件

二.代码示例

我挑一些典型的文件给大家说明下

1.AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hzhl.zhgd">
    <!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 网络状态权限 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<!--
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
-->
    <application
        android:name="com.hzhl.zhgd.application.AppApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_security_config"
        android:supportsRtl="true"
        android:theme="@style/Theme.WisdomBuild"
        android:usesCleartextTraffic="true">
        <activity
            android:name="com.hzhl.zhgd.ui.SplashActivity"
            android:exported="true"
            android:theme="@style/Theme.Main">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.MainActivity"
            android:launchMode="singleTop" />
        <activity android:name=".ui.login.LoginActivity" />
        <activity android:name=".ui.home.SelectProjectActivity" />
        <activity android:name=".ui.mine.EditPwActivity" />
        <activity android:name=".ui.mine.WebViewActivity" />
        <activity android:name=".ui.mine.HelpActivity" />
        <activity android:name=".ui.home.check.SafetyCheckListActivity" />
        <activity
            android:name=".ui.home.check.CheckRecordActivity"
            android:windowSoftInputMode="stateHidden|adjustPan" />
        <activity android:name=".ui.home.check.SelectAreaActivity" />
        <activity android:name=".ui.home.check.SelectImageTypeActivity" />
        <activity android:name=".ui.home.check.SelectUnitActivity" />
        <activity android:name=".ui.home.check.SelectHiddenDangerActivity" />
        <activity android:name=".ui.home.check.SelectUserActivity" />
        <activity
            android:name=".ui.home.check.CheckDetailActivity"
            android:windowSoftInputMode="adjustPan" />
        <activity android:name=".ui.home.check.QualityCheckListActivity" />
    </application>
    <queries package="${applicationId}">
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE">
            </action>
        </intent>
        <intent>
            <action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
            </action>
        </intent>
    </queries>
</manifest>

image.gif

AndroidManifest.xml里面主要配置各个activity的声明,新建一个activity就要在这里面配置一下。

2.build.gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'kotlin-parcelize'
}
def app_android = this.getRootProject().ext.app_android
def basic_app_dependencies = this.rootProject.ext.basic_app_dependencies
android {
    compileSdk app_android.compileSdkVersion
    defaultConfig {
        applicationId app_android.applicationId
        minSdk app_android.minSdkVersion
        targetSdk app_android.targetSdkVersion
        versionCode app_android.versionCode
        versionName app_android.versionName
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    dataBinding {
        enabled = true
    }
}
dependencies {
    basic_app_dependencies.each { k, v ->
        implementation v
    }
    implementation "androidx.multidex:multidex:2.0.1"
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation project(':common')
    implementation 'com.qianwen:update-app:3.5.2'
    implementation 'com.qianwen:okhttp-utils:3.8.0'
    implementation 'com.github.getActivity:XXPermissions:13.5'
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
}

image.gif

这里面是基础配置及引用的各个库文件

本系列文章只适合初学者,有经验的开发直接绕行,今天先到这里吧,明天继续给大家分享。

相关文章
|
XML 测试技术 开发工具
Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航
原文:Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航 经过前面的学习,Android Studio开发环境已准备OK,运行Android应用程序的原生模拟器和Genymotion模拟器都准备妥当。
1968 0
|
6天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。
|
5天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
18 5
|
3天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
5天前
|
缓存 数据库 Android开发
安卓开发中的性能优化技巧
【10月更文挑战第29天】在移动应用的海洋中,性能是船只能否破浪前行的关键。本文将深入探讨安卓开发中的性能优化策略,从代码层面到系统层面,揭示如何让应用运行得更快、更流畅。我们将以实际案例和最佳实践为灯塔,引领开发者避开性能瓶颈的暗礁。
16 3
|
7天前
|
存储 IDE 开发工具
探索Android开发之旅:从新手到专家
【10月更文挑战第26天】在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何在Android平台上从零开始,最终成为一名熟练的开发者。通过简单易懂的语言和实际代码示例,本文将引导你了解Android开发的基础知识、关键概念以及如何实现一个基本的应用程序。无论你是编程新手还是希望扩展你的技术栈,这篇文章都将为你提供价值和启发。让我们开始吧!
|
13天前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
42 5