Android Studio开发(一) 构建项目

1、项目创建测试

1.1 前言

Android Studio 是由 Google 推出的官方集成开发环境(IDE),专门用于开发 Android 应用程序。

  • 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的,提供了丰富的功能和插件支持,使开发 Android 应用更加高效和便捷。

  • 功能丰富: Android Studio 提供了许多功能丰富的工具,如代码编辑器、调试器、布局编辑器、性能分析工具等,帮助开发者快速构建高质量的 Android 应用。

  • Gradle 构建系统: Android Studio 使用 Gradle 作为构建系统,使项目配置和构建更加灵活和可控,可以方便地管理依赖关系、资源文件等。

  • 模拟器和调试器: Android Studio 集成了 Android 模拟器和调试器,开发者可以方便地在模拟器或真机上调试和测试应用程序。

  • 布局编辑器: Android Studio 提供了强大的布局编辑器,支持可视化设计界面和 XML 布局文件的编辑,帮助开发者快速构建用户界面。

  • 版本控制: Android Studio 集成了版本控制系统,如 Git,使团队协作开发更加方便,可以轻松管理代码版本和协作开发。

1.2 新建项目

选择file-->New-->New Project进行项目创建,选用Empty Activity:

选择编程语言和兼容的最低安卓版本后点击finish即可:

创建完成后的项目如图所示:

1.3 运行项目

在如图所示的位置点击下拉选择Device Manager:

进行虚拟设备创建,首先选择设备的外观信息:

然后选择虚拟设备的Android版本,并进行下载:

最后选择设备名称和屏幕的放置形式:

点击运行按钮可以查看新建工程的运行效果:

展示运行界面:

2、项目文件介绍

新建项目的目录结构大致如下:

2.1 app目录

2.1.1 manifests

manifests:包含应用程序的清单文件(AndroidManifest.xml),其中定义了应用程序的组件(如活动、服务、接收器等)以及应用程序的权限等信息。

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

    <application
        android:allowBackup="true" // 允许备份
        android:dataExtractionRules="@xml/data_extraction_rules" // 数据提取规则
        android:fullBackupContent="@xml/backup_rules" // 完全备份内容
        android:icon="@mipmap/ic_launcher" // 应用图标
        android:label="@string/app_name" // 应用名称
        android:supportsRtl="true" // 支持RTL布局
        android:theme="@style/Theme.MyApplication" // 应用主题
        tools:targetApi="31"> // 工具:目标API版本为31
        <activity
            android:name=".MainActivity" // 指定活动的类名
            android:exported="true"> // 允许其他应用启动该活动
            <intent-filter>
                <action android:name="android.intent.action.MAIN" /> // 指定为主活动
                <category android:name="android.intent.category.LAUNCHER" /> // 指定为启动器
            </intent-filter>
        </activity>
    </application>

</manifest>
2.1.2 java

包含Java代码文件,包括应用程序的源代码文件,按照包名结构组织。

2.1.3 res

包含资源文件:

  • drawable

    • 包含图形资源文件,如图片(.png、.jpg等)。
    • 可以按照不同分辨率(hdpi、mdpi、xhdpi等)存放不同版本的图片。
  • layout

    • 包含布局文件,定义应用程序的界面布局。
    • 使用XML文件编写,描述UI元素的位置、大小和交互方式。
  • values

    • 包含各种资源值文件,如字符串(strings.xml)、颜色(colors.xml)、尺寸(dimens.xml)等。
    • 可以在代码中引用这些值,实现资源的重用和统一管理。
  • mipmap

    • 包含应用程序图标资源文件。
    • 用于存放应用程序的图标,支持不同分辨率的图标。
  • xml

    • 用于存放应用程序的配置信息

2.2 gradle script

2.2.1 build.gradle (Project)

定义了整个项目的构建配置,包括项目的构建脚本依赖关系、全局配置等。

2.2.2 build.gradle (Module:app)

定义了当前模块(app模块)的构建配置,包括应用程序的依赖关系、版本信息等。

plugins {
    // 应用com.android.application插件,用于构建Android应用程序
    id 'com.android.application'
}

android {
    // 定义应用程序的命名空间
    namespace 'com.example.myapplication'
    // 编译SDK的版本
    compileSdk 33

    defaultConfig {
        // 应用程序的包名
        applicationId "com.example.myapplication"
        // 最低支持的SDK版本
        minSdk 24
        // 目标SDK版本
        targetSdk 33
        // 版本号
        versionCode 1
        // 版本名称
        versionName "1.0"

        // 测试运行器
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            // 是否启用代码混淆
            minifyEnabled false
            // 混淆规则文件
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        // 源码和目标代码的兼容性
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    // AppCompat库
    implementation 'androidx.appcompat:appcompat:1.4.1'
    // Material Design组件库
    implementation 'com.google.android.material:material:1.5.0'
    // ConstraintLayout库
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    // 单元测试库
    testImplementation 'junit:junit:4.13.2'
    // Android测试库
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    // Espresso测试库
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
2.2.3 proguard-rules.pro

用于配置 ProGuard 的混淆规则,用于在构建 Release 版本时对代码进行混淆,以保护代码安全并减小 APK 大小。

2.2.4 gradle.properties

该文件用于存储Gradle构建脚本中使用的属性值。

2.2.5 gradle-wrapper.properties

Gradle包装器的配置文件,用于指定Gradle的版本等信息。

2.2.6 local.properties

存储本地环境相关的配置信息,通常包括 SDK 路径、密钥等。

2.2.7 settings.gradle

定义了项目的模块信息,包括模块的名称、路径等。

3、总结

本文讲解了Android Studio创建工程的一般过程,使用模拟器运行新建项目;讲解了项目的目录结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/430260.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Redis]——Spring整合Redis(SpringDataRedis)

⭐准备工作&#xff1a; 确保Redis服务已启动idea开发环境 ⭐Redis整合步骤&#xff1a; 1.pom文件引入依赖 2.yml文件配置连接信息 3.修改Redis序列化方式 4.注入RedisTemplate 使用 小知识&#xff1a; Spring整合的Redis可以将Object对象自动序列化成字符串&#xff0…

数学建模【灰色关联分析】

一、灰色关联分析简介 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要因素&#xff0c;哪些是次要因素;哪些因素…

高级统计方法 第5次作业

作业评阅&#xff1a; 概念 1.问题 2.问题&#xff08;略&#xff09; 4.问题&#xff08;略&#xff09; &#xff08;a&#xff09;问题&#xff08;略&#xff09; 10%&#xff0c;忽略 X < 0.05和 X > 0.95的情况。 &#xff08;b&#xff09;问题&#xff08;略…

金田金業: 避险情绪骤升 黄金暴力拉升

现货黄金周一(3月4日)亚市早间开盘于2082美元/盎司&#xff0c;最高2119.86美元/盎司&#xff0c;最低2079.44美元/盎司&#xff0c;收盘2114.28美元/盎司&#xff0c;全天波幅约40美金&#xff0c;当日涨幅1.51%。 【基本面】 周一(3月4日)无重要数据公布&#xff0c;投资者关…

TPM引领智能制造新篇章:赋能企业转型升级

在智能制造日益成为工业发展主流趋势的今天&#xff0c;全面生产维护&#xff08;Total Productive Maintenance&#xff0c;简称TPM&#xff09;作为一种先进的管理理念和方法&#xff0c;正逐渐展现出其为企业实现智能制造赋能助力的巨大潜力。TPM不仅关注设备的维护和保养&a…

【机器学习】包裹式特征选择之递归特征添加法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

Leetcode刷题笔记题解(C++):232. 用栈实现队列

思路&#xff1a;双栈实现入队列和出队列的操作 //AB栈来实现队列 //A栈用来push 可以利用A栈获取到队列的back即A.top //B栈用来pop 如果要获取队列的top&#xff0c;可以先把A栈元素依次弹出依次压入B栈中&#xff0c;然后B.top就是队列的top&#xff0c;pop也类似 cla…

云原生学习

1. 高可用架构 1.1 架构图 Kubernetes是属于主从设备模型&#xff08;Master-Slave架构&#xff09;&#xff0c;即有Master节点负责核心的调度、管理和运维&#xff0c;Slave节点则执行用户的程序。在Kubernetes中&#xff0c;主节点一般被称为Master Node 或者 Head Node&am…

【C语言】Leetcode 206.反转链表

博主主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《Leetcode》 题目 解决思路 思路一&#xff1a;翻转链表 struct ListNode* reverseList(struct ListNode* head) {if(head NULL){return NULL;}struct ListNode* n1 NULL,*n2 head,*n3 n2 -> next;while(…

手写分布式配置中心(三)增加实时刷新功能(短轮询)

要实现配置自动实时刷新&#xff0c;需要改造之前的代码。 服务端改造 服务端增加一个版本号version&#xff0c;新增配置的时候为1&#xff0c;每次更新配置就加1。 Overridepublic long insertConfigDO(ConfigDO configDO) {insertLock.lock();try {long id 1;List<Con…

【EI会议征稿通知】第六届人工智能技术与应用国际学术会议(ICAITA 2024)

第六届人工智能技术与应用国际学术会议(ICAITA 2024) 2024 6th International Conference on Artificial Intelligence Technologies and Applications 第六届人工智能技术与应用国际学术会议(ICAITA 2024)&#xff0c;由长春理工大学主办&#xff0c;长春理工大学电子信息工…

【Linux】Shell命令运行原理和权限详解

【Linux】Shell命令运行原理和权限详解 一、剩余指令的补充1.tar指令2.bc指令3.uname4.热键 二、Shell命令运行原理1.Shell2.为什么Linux不让用户直接使用kernel 三、Linux权限概念四、Linux权限管理1.文件访问的用户分类2.文件类型和访问权限&#xff08;1&#xff09;文件类型…

H3C PBR 实验

H3C PBR 实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址&#xff0c;公司分别通过电信和联通线路接入互联网公司内网配置 RIP 互通&#xff0c;公网配置 OSPF 互通&#xff0c;R6上配置默认路由指向 R1&#xff0c;内网使用路由器模拟 PCR1 分别在电信和联通出口上配置…

【Python】进阶学习:pandas--info()用法详解

【Python】进阶学习&#xff1a;pandas–info()用法详解 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订…

力扣hot10---子串

题目&#xff1a; 思路&#xff1a; 一看到子数组的和&#xff0c;就很容易想到前缀和&#xff0c;求出来前缀和数组后&#xff0c;对前缀和数组进行两重for循环遍历&#xff0c;就大功告成啦&#xff01;&#xff08;感觉想一会儿就可以想到&#xff09; 代码&#xff1a; …

《操作系统原理》算法总结

一、进程调度算法 先来先服务调度算法&#xff08;FCFS&#xff09; 每次调度是从就绪队列中&#xff0c;选择一个最先进入就绪队列的进程&#xff0c;把处理器分配给该进程&#xff0c;使之得到执行。该进程一旦占有了处理器&#xff0c;它就一直运行下去&#xff0c;直到该…

使用IGEV和双目相机生成深度图实现测距

介绍 以下是源代码的demo&#xff0c;我根据自己的需求&#xff0c;做了部分改动&#xff0c;比如双目相机输入的格式是RGBA&#xff0c;但IGEV处理的输入通道数是3&#xff0c;我就在其他py文件将图片转成RGB格式 设备 1080ti和jetson orin nx两个都可以 代码 import sys…

VS2019 - error C2653: 不是类或命名空间名称

文章目录 VS2019 - error C2653: 不是类或命名空间名称概述笔记类的头文件类的实现文件备注END VS2019 - error C2653: 不是类或命名空间名称 概述 工程开了预编译头包含. 编码中, 随手写一个类, 将功能函数加入, 还没开始用这个类, 先习惯性的编译一下. 编译报错如下: St…

C# 高级特性(十一):多线程之async,await

之前使用Thread和Task启动多线程时都会遇到一个麻烦&#xff0c;就是如何反馈结果。在代码里就是如何设计回调函数。如果带界面还得考虑UI线程的问题。 而使用async&#xff0c;await可以达到两个效果。 1 不用设计回调函数&#xff0c;直接按单线程的格式写。 2 不用考虑UI…

音视频学习笔记——设计模式

✊✊✊&#x1f308;大家好&#xff01;本篇文章主要记录自己在进行音视频学习中&#xff0c;整理的包括单例模式、工厂模式、策略模式、观察者模式等6种相关的设计模式和4种准则的内容重点&#x1f607;。 音视频学习笔记——设计模式 本专栏知识点是通过<零声教育>的音…