安卓应用开发(一):工具与环境

开发工具

Android Studio,用于开发 Android 应用的官方集成开发环境 (IDE)。包括以下功能:

  • 基于Gradle的构建系统
    • gradle是一个项目构建工具,将源工程打包构建为apk
  • 安卓模拟器
  • 统一环境
  • 代码编辑+模拟器实时更新
  • Github集成
  • Lint功能,可以用于性能,兼容性等问题检测
  • C++和NDK支持
  • 支持谷歌云平台,可以继承谷歌云消息和AppEngine
    安装方式:
    官网下载,打开,安装,accept协议,然后一直next到底。
    需要注意一点就是要设置一下国内代理:
    使用清华镜像站:mirrors.tuna.tsinghua.edu.cn
    一般第一次打开就会提示设置代理,如果没有提示就在setting里面找,直接搜proxy就有
    在这里插入图片描述

使用方式:
傻瓜式,根据按钮名称按就行,新建项目有很多项目模板,第一个项目可以选Empty Compose Activity,可以用它来构建 Compose 应用。这个模板只有一个屏幕。
跟着按键名称按,直到下面这一步,然后点击finish:
在这里插入图片描述
整体结构和JetBrains家的IntelliJ IDEA很像,因为本来就是基于 IntelliJ IDEA开发的
在这里插入图片描述
Android Studio的主要界面为:代码界面和设计界面(设计界面就和Qt的Designer一样,是为了让程序员直观看到应用界面)
在这里插入图片描述

项目结构

  • Android应用模块
  • 库模块
  • Google App Engine 模块

Android Studio中的项目视图默认是项目逻辑视图
在这里插入图片描述
实际上存储是这样的结构,可以点击箭头所指地方改变视图:
在这里插入图片描述
最常用的视图还是项目逻辑视图

编程语言

安卓开发最常用的语言是Java和Kotlin,Kotlin代码文件的后缀是kt,程序的入口是main,但是在安卓开发中,程序的入口是onCreate()函数。

class MainActivity : ComponentActivity() {
   override fun onCreate(savedInstanceState: Bundle?) { //程序入口
       super.onCreate(savedInstanceState)
       ......
   }
}

@Composable //这个称为注解,语法是@+注解名,可以理解为给函数添加一些信息
//相关资料:https://juejin.cn/post/6959860379652456484
fun Greeting(name: String) {
   Text(text = "Hello $name!")
}

为了及时展示效果,可以使用Preview注解,实现一个预览函数,这个函数可以不需要构建整个应用就可以查看外观

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
   GreetingCardTheme {
       Greeting("Meghan")
   }
}

虚拟设备

Android studio提供了虚拟安卓设备,方便开发
在工具栏的tool里面有一项Device manager,点开就可以配置一个虚拟设备,可以选择手机型号,手机系统版本,系统版本号边上有个下载按钮,可以点击下载系统镜像。
选完系统镜像后还可以配置横屏竖屏,然后点击完成
在这里插入图片描述
现在上面就会显示你的设备了,就可以直接点击边上的运行按钮运行了,之前点的话就会提示没有目标设备。

顺便歪一下,这个虚拟设备的底层是使用qemu实现的,世界闭环了!

运行效果:
在这里插入图片描述

连接手机

手机打开开发者模式,然后连上电脑,设备那一栏就会显示你的手机,然后点run就行了,APP就会发到手机,需要手动安装,然后会自动启动。

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

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

相关文章

2023年乡镇街道边界数据、行政村边界、省市县区划边界、建筑轮廓边界数据、流域边界数据、降雨量分布、气温分布、道路网分布

数据范围:全国行政区划-行政乡镇街道边界 数据类型:面状数据,全国各省市县【乡镇-边界】乡村界、乡村范围 数据属性:标准12位行政区划编码、乡镇名称、所属地区 分辨率:1:2万--1:5万 数据格式:SHP数据&…

一、Vagrant搭建相关环境

目录 一、创建Vagrant相关环境1.下载安装VirtualBox2.在BlOS中设置CPU虚拟化3.使用Vagrant新建linux虚拟机3.1下载Vagrant3.2Vagrant官方镜像仓库3.3使用Vagrant初始化一个centos7的虚拟机 4.设置固定ip地址 二、安装docker1.按照docker 三、docker安装一些中间件1.mysql安装2.…

C++例题:大数运算---字符串相加(使用数字字符串来模拟竖式计算)

1.代码速览 class Solution2 { public:string addStrings(string num1, string num2){//end1和end1是下标int end1 num1.size() - 1;int end2 num2.size() - 1;string str;//下标(指针)从后向前走,走到头才可以结束,所以是end>0int next 0;while (end1 > 0 || end2 &…

C#连接S7-200 smart通讯测试

honeytree 一、编程环境 VS2022软件,选择windows窗体应用(.NET FrameWork):​博途TIA/WINCC社区VX群 ​博途TIA/WINCC社区VX群 添加NuGet程序包;S7netplus 二、引用http://S7.net 三、建立PLC链接 S7-200smart和…

嵌入式5-6QT

1> 思维导图 2> 自由发挥应用场景,实现登录界面。 要求:尽量每行代码都有注释。 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置标题this->setWindowTitle("MYQQ");//设置图标this…

03_Redis

文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库(不支持SQL标准语法)。 …

一个新细节,Go 1.17 将允许切片转换为数组指针!

在 Go 语言中,一个切片(slice)包含了对其支持数组的引用,无论这个数组是作为一个独立的变量存在于某个地方,还是仅仅是一个为支持分片而分配的匿名数组。 其切片基本结构都如下: // runtime/slice.go typ…

Sentinel流量防卫兵

1、分布式服务遇到的问题 服务可用性问题 服务可用性场景 服务雪崩效应 因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程,就叫服务雪崩效应导致服务不可用的原因: 在服务提供者不可用的时候,会出现大量重试的情况&…

鸿蒙内核源码分析(原子操作篇) | 谁在为原子操作保驾护航

基本概念 在支持多任务的操作系统中,修改一块内存区域的数据需要“读取-修改-写入”三个步骤。然而同一内存区域的数据可能同时被多个任务访问,如果在修改数据的过程中被其他任务打断,就会造成该操作的执行结果无法预知。 使用开关中断的方…

CTF(Web)中关于执行读取文件命令的相关知识与绕过技巧

在我遇到的题目中,想要读取文件必然是要执行cat /flag这个命令,但是题目当然不会这么轻松。让你直接cat出来,必然会有各种各样的滤过条件,你要做的就是尝试各种方法在cat /flag的基础上进行各种操作构建出最终的payload。 下面我…

38-1 防火墙了解

一、防火墙的概念: 防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668 [A]1993-12-15)。它是一种位于内部网络与外部网络之间的网络安全系统,是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。…

《QT实用小工具·五十八》模仿VSCode的可任意拖拽的Tab标签组

1、概述 源码放在文章末尾 该项目实现了模仿VSCode的可任意拖拽的Tab标签组,包含如下功能: 拖拽标签页至新窗口 拖拽标签页合并控件 无限嵌套的横纵分割布局(类似Qt Creator的编辑框) 获取当前使用的标签组、标签页 自动向上合并…

【CTF Reverse】XCTF GFSJ0490 simple-unpack Writeup(UPX壳+脱壳+反汇编)

simple-unpack 菜鸡拿到了一个被加壳的二进制文件 解法 拉进 exeinfope。 检测到是 UPX 打包的 ELF 文件。 NOT Win EXE - .o - ELF [ 64bit obj. Exe file - CPU : AMD x86-64 - OS/ABI: Linux/GNU ]Detected UPX! packer - http://upx.github.io -> try unpack with &…

Linux第三节--常见的指令介绍集合(持续更新中)

点赞关注不迷路!,本节涉及初识Linux第三节,主要为常见的几条指令介绍。 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! Linux下基本指令 1. man指令 Linu…

在uniapp里面使用 mp-html 并且开启 latex 功能

在uniapp里面使用 mp-html 并且开启 latex 功能 默认情况下 mp-html 是不会开启 latex 功能的, 如果需要开启 latex 功能是需要到代码操作拉取代码自行打包的。 这里说一下 mp-html 里面的 latex 功能是由 https://github.com/rojer95/katex-mini 提供的技术实现,…

科技园3d数据可视化展示

我们的园区安防3D可视化报警平台通过高精度三维建模技术,将管理对象场景以立体、直观的方式呈现,实现管理对象的全面可视化。同时,平台与各类业务系统深度对接,实现数据、告警、远程操作的整合展示和联动响应,构建中心…

Java基础教程 - 4 流程控制

更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 4 流程控制 4.1 分支结构…

CSS Web服务器、2D、动画和3D转换

Web服务器 我们自己写的网站只能自己访问浏览,但是如果想让其他人也浏览,可以将它放到服务器上。 什么是Web服务器 服务器(我们也会称之为主机)是提供计算服务的设备,它也是一台计算机。在网络环境下,根据服务器提供的服务类型不…

C++构造函数和析构函数的调用顺序

一般情况下,调用析构函数的次序正好与调用构造函数的次序相反,也就是最先被调用的构造函数,其对应的析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。 当然对象的构造函数和析构函数调用时机和…

DRF的序列化【2】

【0】前提概要 【1】基于 View JsonResponse 编写的 5 个接口: 序列化自定义处理: 你需要自己编写序列化逻辑。处理 JSON 格式的 POST 请求数据: 从 request.body 中获取数据,并使用 json.loads() 解析成字典,然后创建相应的对象。request.…