Android studio 入门第一个APP

2023-10-26

开发第一应用

可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a new Android Studio Project创建工程:

接下来需要输入应用名称(第一个字母要大写)、公司域以及指定应用存放目录,点击Next按钮进入下一步:

如果第一个字母不是大写,会提示:The application name for most app begins with an uppercase letter

接下来需要选择开发什么设备(可选“手机和平板”、“穿戴(Wear)”、“TV”,“车载(Android Auto)”等)上的应用,以及确定最小SDK的版本号。

Minimum SDK的作用是在应用安装前,会对设备的Android版本做校验,如果设备的Android版本低于这个最小版本会阻止用户安装应用。

如果不知道怎么选择最小版本可以点击Help me choose看看每个版本的分布图表和描述:

继续点击Next按钮进行下一步,我们需要通过形象友好的GUI模板,来选择我们第一个Activity的样式:

然后需要给Activity和Layout起一个名字。

点击Finish按钮后,Android Studio开始创建并编译应用。编译结束后,我们就可以看到Android Studio的IDE界面了。

从图上可以看出Android Studio已经帮我们将工程组织的很好了。

界面介绍

如上图所示,我将界面分为5个区域做详细的讲解:

区域1介绍

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML5a24778.PNG

这个区域是运行和调试相关的操作。

1、编译2中显示的模块

2、当前项目的模块列表

3、运行2中显示的模块

4、调试2中显示的模块

5、测试2中显示的模块代码覆盖率

6、调试安卓运行的进程

7、重新运行2中显示的模块

8、停止运行2中显示的模块

区域2介绍

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML5a94cd5.PNG

这个区域主要是和Android设备和虚拟机相关的操作。

1、虚拟设备管理。

2、同步工程的Gradle文件,一般在Gradle配置被修改的时候需要同步一下。

3 、项目结构,一些项目相关的属性配置。

4、Android SDK管理

5、Genymontion模拟器(需要装Genymontion插件,安装篇[模拟器安装]部分)

区域3介绍

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML5bde3b7.PNG

这个区域主要是工程文件资源等相关的操作。

1、展示项目中文件的组织方式,默认是以Android方式展示的,可选择“Project、Packages、Scratches、ProjectFiles、Problems…”等展示方式。平时用的最多的就AndroidProject两种。

2、定位当前打开文件在工程目录中的位置。

3、关闭工程目录中所有的展开项。

4、额外的一些系统配置,点开后是一个弹出菜单:

Autoscroll to Source 和 Autoscroll from Source两个勾选起来后,Android Studio会自动定位当前编辑文件在工程中的位置,用起来会很爽。其他功能大家可以自己摸索摸索。

区域4介绍

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML5cee482.PNG

这个区域主要是用来编写代码和设计布局。

1、已打开的文件的Tab页。(在Tab页上按下Ctrl键 + 点击鼠标会出现一个弹出菜单会有惊喜哦!)

2、UI布局预览区域。

3、布局编辑模式切换,对于一些老鸟来说更喜欢通过Text来编辑布局,新手可以试试Design编辑布局,编辑后再切换到Text模式,对于学习Android布局设计很有帮助。

区域5介绍

这个区域大部分是用来查看一些输出信息的。

1、终端 - 喜欢命令行操作的伙伴不用额外启动终端了。

2、监控 - 可以查看应用的一些输出信息。

3、信息 - 工程编译的一些输出信息。

4、运行 - 应用运行后的一些相关信息。

5、TODO - 标有TOTO注释的列表。

6、事件 - 一些事件日志。

7、Gradle控制台,通过这个可以了解Gradle构建应用的时候一些输出信息。

Android Studio目录结构

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML6038007.PNG

1、Gradle编译系统,版本由wrapper指定

2、Android Studio IDE所需要的文件

3、应用相关文件的存放目录

4、编译后产生的相关文件

5、存放相关依赖库

6、代码存放目录

7、资源文件存放目录(包括:布局、图像、样式等等)

8、应用程序的基本信息清单,描述哪些个组件是存在的

9、git版本管理忽略文件,标记出哪些文件不用进入git库中

10、Android Studio的工程文件

11、模块的gradle相关配置

12、代码混淆规则配置

13、工程的gradle相关配置

14、gradle相关的全局属性设置

15、本地属性设置(key设置,android sdk位置等属性)

应用开发调试

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML60a7a4d.PNG

如上图1所示在需要调试的行号处点击设置断点,然后点击2所示的Debug按钮(或直接按下Shift+F9快捷键)开始调试。

如上图所示Android Studio下方出现了调试视图。

1、当前程序停留的代码行

2、调试相关的一些按钮

3、程序调用栈区,该区域显示了程序执行到断点处所调用过的所有方法,越下面的越早被调用。

4、局部变量观察区

5、用户自定义变量观察区

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML6cc60f7.PNG

1、Step Over(F8) - 程序向下执行一行,如果当前行有方法调用,这个方法执行完毕返回,然后到下一行。

2、Step Into(F7) - 程序向下执行一行,如果当前行有用户自定义方法(非官方类库方法)调用,则进入该方法。

3、Force Step Into(Alt+Shift+F7) - 程序向下执行一行,如果当前行有方法调用,则进入该方法。

4、Step Out(Shift+F8) - 如果在调试的时候你进入了一个方法,并觉得该方法没有问题,你就可以使用Step Out跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。

5、Drop Frame - 点击该按钮后,你将返回到当前方法的调用处重新执行,并且所有上下文变量的值也回到那个时候。只要调用链中还有上级方法,可以跳到其中的任何一个方法。

6、Run to Cursor(Alt+F9) - 一直运行到光标所在的位置。

7、Resume Program(F9) - 一直运行程序直到碰到下一个断点。

8、View Backpoints(Ctrl + Shift +F8) - 查看你设置过的所有断点并可以设置断点的一些属性

9、Mute Backpoints - 选中后所有的断点别设置成无效状态。再次点击可以重新设置所有断点有效。

在点击了View Backpoints按钮后,会出现一个断点属性窗口,可以对断点进行一些更高级的设置。

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML6dbfefa.PNG

1、列出了所有程序中设置的断点

2、可以输入条件,在条件成立后断点才起作用(例如:在输入框中输入 i == 8),这种带条件断点在实际开发过程中非常有用。也可以通过右键点击断点来设置条件断点,如下图:
说明: C:\Users\wqm\work\open-open\document\Android Studio2.0 教程从入门到精通Windows版\image\2016-07-09_16-15-35.gif

好了,到这里调试相关的功能都介绍完了。

应用打包签名

基础

一个 Android Studio 项目中,会存在多个 .gradle 文件。其中, project 目录下存在一个 build.gradle 文件和每一个 module 会存在一个 build.gradle 文件。

工程中的build.gradle

  1. buildscript {

  2. repositories {

  3. jcenter() // 声明使用 maven 仓库

  4. }

  5. dependencies {

  6. // 依赖android提供的2.1.0-alpha5的gradle build

  7. classpath 'com.android.tools.build:gradle:2.1.0-alpha5'

  8. }

  9. }

  10. // 为所有的工程的repositories配置为jcenters

  11. allprojects {

  12. repositories {

  13. jcenter()

  14. }

  15. }

  16. // 清楚工程的任务

  17. task clean(type: Delete) {

  18. delete rootProject.buildDir

  19. }

模块中的build.gradle

  1. // 这表示该module是一个app module

  2. apply plugin: 'com.android.application'

  3. android {

  4. // 基于哪个版本编译

  5. compileSdkVersion 23

  6. // 基于哪个构建工具版本进行构建的

  7. buildToolsVersion "23.0.3"

  8. // 缺省配置主要包括:应用ID,最小SDK版本,目标SDK版本,应用版本号、应用版本名

  9. defaultConfig {

  10. applicationId "open_open.com.helloworld"

  11. minSdkVersion 10

  12. targetSdkVersion 23

  13. versionCode 1

  14. versionName "1.0"

  15. }

  16. // buildTypes是构建类型,常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等。

  17. buildTypes {

  18. release {

  19. minifyEnabled false

  20. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

  21. }

  22. }

  23. }

  24. // dependencies它定义了该module需要依赖的jar,aar,jcenter库信息。

  25. dependencies {

  26. compile fileTree(dir: 'libs', include: ['*.jar'])

  27. testCompile 'junit:junit:4.12'

  28. compile 'com.android.support:appcompat-v7:23.2.1'

  29. }

打包签名

选择Build->Generate Signed APK...,如下图:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML3715a3.PNG

在弹窗中一直Next直到下面这个界面:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML39f279.PNG

在没有Key的情况下,我们可以先点击Create new...按钮来创建一个Key,创建过程很简单,如下图:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML4335d0.PNG

如果你已经存在Key了,那就点击Choose existing...按钮指定.jks文件位置,如下图:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML448c19.PNG

输入Key store passwordKey password(在创建Key的时候输入的那两个密码),点击Next按钮:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML4627eb.PNG

接下来就点击Finish按钮,坐等AS打包签名完成,签名完成后AS会提示我们:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML48b922.PNG

点击Show in Explorer,可以找到我们签名好的APK文件:

说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML4a9d0a.PNG

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android studio 入门第一个APP 的相关文章

  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • Android 在启动时启动服务,如何在设备重启后重新启动服务类?

    我需要在启动时启动一项服务 我搜索了很多 他们正在谈论广播接收器 由于我是 Android 开发新手 所以我对 Android 上的服务并没有清楚的了解 请提供一些源代码 您的接收者 public class MyReceiver exte
  • 当参数具有默认值时,为什么无法使用导航组件将参数传递给片段?

    我正在使用导航组件 但我不明白为什么如果定义了参数 则将参数传递给下面的方法时会出现错误 我正在使用 SafeArgs 只有当我为此参数定义默认值时才会出现此错误 有人可以解释一下为什么会发生这种情况以及如何解决它吗 这是导航图的部分代码
  • 我们可以在 android studio 中拥有没有 app 文件夹的项目,并将所有内容(java/res/etc)放在根目录中吗

    我想知道在 Android studio 中是否可以有没有应用程序模块 应用程序或任何其他名称 的 android 项目 意味着我可以在项目本身的根目录中创建包和资源 而不是使用应用程序模块 编辑 结构看起来像 MyApp idea gra
  • 如何覆盖日期选择器的高度和宽度以填充父布局

    我有一个活动包含一个日期选择器 我想设置DatePicker适合屏幕 我试过这个答案 https stackoverflow com questions 6674667 how to customize date pickers width
  • 当应用程序未运行时如何堆叠 Firebase Cloud Messaging 通知?

    我在用Firebase Cloud Messaging将推送通知从我的服务器发送到我的 Android 应用程序 当应用程序运行时 通知是stacked因为我将它们设置为我的一个组FirebaseMessagingService 这很好 但
  • 手动启用时 Firebase Crashlytics 不报告崩溃

    Crashlytics 在没有选择加入报告的情况下也能正常工作 但一旦我根据规定设置了选择加入报告 它就会停止报告任何内容tutorial https firebase google com docs crashlytics customi
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • 如何在android中录制音频时暂停背景音乐

    我正在 Android 中开发一个音频记录应用程序 因此 如果设备音乐播放器中已播放任何背景音乐 则应在开始录制之前暂停该背景音乐 并且每当录制停止或暂停时 背景音乐都应恢复 播放录制的音频时也应该如此 有人可以帮我解决这个问题吗 提前致谢
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • Google Android Drive api 在已安装版本上登录失败

    我开发了一个使用 GoogleDrive api 的 Android 应用程序 当处于调试状态或运行调试版本时 应用程序 工作正常 并正确验证附加的谷歌帐户 等 当我构建发行版本时 使用我的签名密钥 并且 安装apk文件 当我运行时 Goo
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这
  • 修改 ADW Android 启动器?

    我想更改和修改开源 ADW 启动器 启动器可在此处获取 https github com AnderWeb android packages apps Launcher https github com AnderWeb android p

随机推荐

  • Kubernetes 网络概念及策略控制(叶磊)

    本文将主要分享以下 5 方面的内容 Kubernetes 基本网络模型 Netns 探秘 主流网络方案简介 Network Policy 的用处 思考时间 Kubernetes 基本网络模型 本节来介绍一下 Kubernetes 对网络模型
  • SpringBoot 集成MyBatis-Plus提示反序列化异常:cannot deserialize from Object value (no delegate- or property-bas

    SpringBoot集成MyBatis Plus 实现HTPP POST提交实体对象提示如下错误片段 重点错误信息字段 cannot deserialize from Object value no delegate or property
  • ECharts折线图+联动+dataZoom

  • SpringBoot配置数据源DataSource

    使用properties文件配置springboot默认数据源 这种方式十分简单 只用在application properties文件中配置数据库连接属性即可 spring datasource url jdbc mysql localh
  • 7-22 龟兔赛跑 (20分)

    思路 当时间为10的倍数的时候看看兔子的路程有没有乌龟的长 若比乌龟长 则兔子开始休息三十分钟 其中有一个测试点就是注意兔子在休息中时间t到了 代码如下 include
  • ERROR: Invalid requirement: ‘_libgcc_mutex=0.1=main‘ XXX Hint: = is not a valid operator. Did you me

    问题如图所示 我是在GitHub加载environment yml文件时 遭遇这种情况 其实 这也不难解决 其一将environment yml文件中dependencices中 报错的部分依赖项 放到 pip 下 或者将 libgcc m
  • 探索将大语言模型用作推荐系统

    编者按 目前大语言模型主要问答 对话等场景 进行被动回答 是否可以将大模型应用于推荐系统 进行主动推送呢 这篇文章回顾了可以将大模型作为推荐系统的理论基础 并重点描述了基于英文和阿拉伯语的购物数据集微调T5 large模型 探索将LLMs用
  • d3dcompiler_43.dll文件丢失怎么修复,最新修复方法分享

    本教程操作系统 Windows系统 d3dcompiler 43 dll是电脑文件中的dll文件 动态链接库文件 如果计算机中丢失了某个dll文件 可能会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 在我们打开软件或者
  • PyTorch Lightning错误TypeError: lr_scheduler_step() takes 3 positional arguments but 4 were given

    问题 使用PyTorch Lightning时对lr scheduler step定义如下 def lr scheduler step self scheduler metric scheduler step 出错 TypeError lr
  • Ubuntu 安装 cmake

    目录 1 下载cmake安装包 2 开始安装 3 查看cmake版本 参考链接 https blog csdn net qq 27350133 article details 121994229 1 下载cmake安装包 cmake安装包下
  • Jmeter实现websocket协议接口测试

    一 为了方便使用 首先将jmeter设置成中文 有两种方法 1 在Jmeter界面进行设置 Options gt Choose Language gt Chinese Simplified 这种方法在关闭jmeter重启后又会恢复成默认的英
  • 最优化理论·非线性最小二乘

    最优化理论 非线性最小二乘 标签 空格分隔 数学 非线性最小二乘问题是椭圆拟合中最易遇到的优化问题 本文主要对非线性二乘的基本分析做简单介绍 1 什么是最小二乘问题 目标函数能够写为m个函数平方和的优化问题 其中 每个函数 f i x
  • 高内聚、低耦合

    http www cnblogs com robnetcn archive 2012 04 15 2449008 html 起因 模块独立性指每个模块只完成系统要求的独立子功能 并且与其他模块的联系最少且接口简单 两个定性的度量标准 耦合性
  • crunch 字典生成 hashcat 破解密码

    crunch crunch 9 9 t 2003 gt gt 999 txt 生成9位密码 b 指定文件输出的大小 避免字典文件过大 c 指定文件输出的行数 即包含密码的个数 d 限制相同元素出现的次数 e 定义停止字符 即到该字符串就停止
  • 配置Tomcat数据源和连接池

    修改C Tomcat 6 0 conf context xml 在
  • TCP/IP网络编程(一)

    TCP IP网络编程 第一章 理解网络编程和套接字 实现 先准备一个linux的操作系统然后用xshell连上 CentOS7安装以及Xshell连接常见问题解决 jump into zehe的博客 CSDN博客 下载gcc root lo
  • R语言使用choose函数计算排列组合:组合数(输入两个参数、combination)

    R语言使用choose函数计算排列组合 组合数 输入两个参数 combination 目录 R语言使用choose函数计算组合数 输入两个参数 combination R 语言特点 R语言使用choose函数计算组合数 输入两个参数 com
  • Java高频面试复习题,助你面试成功

    前言 2022年对程序员来说是特别严峻的一年 也是大改革的一年 大部分人因为今年 疫情 的原因纷纷离开了自己原有的岗位 也有人抓住机会逆流而上拿到更高的待遇 2022年金九银十已经到来了 试问你进入了自己心仪的企业了吗 拿到自己满意的薪资待
  • 利用Chrome网络请求调试页面跳转问题

    背景 现在大量的信息系统都是基于WEB服务 这些WEB服务糅合了单点登录 权限控制 网关 代理等多种技术手段 当请求一个页面时 发现它跳转的目标竟然让人匪夷所思 完全不是意想中的样子 怎样捕捉这些跳转信息 并进行分析 是解决跳转问题的有效手
  • Android studio 入门第一个APP

    开发第一应用 可以开发属于自己的应用 是否有点小激动 好吧 让我们开始 首先点击Start a new Android Studio Project创建工程 接下来需要输入应用名称 第一个字母要大写 公司域以及指定应用存放目录 点击Next