Android Native APP开发笔记:从新建到打包流程记录

2023-11-10

目的

安卓是现在移动端平台占有率最大的平台,如果进行移动端用户应用开发大多数时候都避不开它。这篇文章将记录下安卓原生应用开发整个流程步骤,方便自己以后查询使用。

安卓开发者官网地址:
https://developer.android.com/

https://developer.android.google.cn/
在这里插入图片描述

下载与安装

目前安卓原生应用开发主要使用Android Studio,去官网下载对应的安装包安装即可。(目前版本为2021.3.1)
在这里插入图片描述
安装过程可以根据需要选择是否安装模拟器。安装过程中会联网下载很多内容,需要不少时间的。另外因为网络原因可能需要科学上网。

现在的Android Studio真是比以前的Eclipse用起来舒服多了。

新建项目与运行调试

在这里插入图片描述
在这里插入图片描述
注意路径上不能出现非ASCII字符(主要就是说不能有中文啦)。

初次建立项目会联网下载很多内容,需要不少时间的。另外因为网络原因可能需要科学上网。项目建立完成后就可以选择模拟器或真机设备进行运行或调试了:
在这里插入图片描述

如果是使用模拟器进行调试的话打开模拟器比较慢,需要耐心等待。如果使用真机调试的话可以查看后面 真机调试 章节进行设置。

更换名称和图标

安卓应用本身的各种配置主要在 AndroidManifest.xml 中:
在这里插入图片描述

如果不考虑国际化多语言的话只要修改下面资源中的字段就可以更换应用名称了:
在这里插入图片描述

图标理论上也可以直接更换资源中的图片,不过这里从菜单界面更新更加方便些:
在这里插入图片描述
在这里插入图片描述
需要注意的是再下一页的 Res Directory 选项,该选项会影响这里设置的图标在什么分支中可以用。如果想全局有效的话可以设置为 main

打包应用

开发好了就需要打包生成安装包给别人使用了。

可以根据需求设置版本号:
在这里插入图片描述

只是测试使用的话可以直接打包生成debug版本的安装包:
在这里插入图片描述

正式发布通常使用release版本:
目前安卓的应用都是需要使用密钥签名后才能安装的,这是用来证明应用发布者的身份的,如果一个应用换了签名打包那就没法覆盖安装升级了。
一个应用对应一个密钥,但一个密钥可以用在多个应用中。
调试或者上面debug版本中软件会自动生成供测试用的密钥进行签名。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是请妥善保存密钥库文件,记住密钥库密码;记住使用该密钥库下哪个密钥进行的签名,并记住该密钥密码。

在这里插入图片描述

applicationId

上面有提到说一个APP对应一个包名,其实现在在Android Studio中并不是这样的,区别APP的标识字段是 applicationId ,只不过这个字段默认会使用包名而已。这个字段可以后面手动修改,修改后同步下项目,这样安装时就会安装为两个不同的APP了:
在这里插入图片描述

版本控制

Android Studio默认使用Git进行版本控制。

可能需要先下载安装Git https://git-scm.com/ ,并进行设置:
在这里插入图片描述

然后初始化仓库,仓库路径就是项目目录下:
在这里插入图片描述

之后就可以进行版本控制管理了:
在这里插入图片描述

真机调试

真机调试比较方便,但一开始连接需要设置下,所以这里单独拿出来说。

首先开启安卓设备上的开发者选项(不同机型可能位置有所不同):
在这里插入图片描述
然后在开发者选项中启用USB调试(不同机型可能位置有所不同):
在这里插入图片描述
设置完成后使用USB线连接设备和电脑,理论上就可以在Android Studio中看到设备了,选择即可:
在这里插入图片描述如果没有发现设备的话可以选择 Troubleshoot Device Connection 根据提示来。如果ADB服务启动有问题的话可以尝试重启电脑试试。

如果上面操作还是不能发现设备的话可以根据下图方式安装 Google USB Driver ,然后在设备管理器中更新设备的驱动程序再试试:
在这里插入图片描述
在这里插入图片描述

总结

现在的Android Studio除了打开慢以外使用体验上真的比以前Eclipse好太多了。

这篇文章记录了使用Android Studio开发用户应用程序的整个流程,而接下来具体的开发只要根据应用需求参考官方文档来使用各种组件和API来编写程序就可以了。

题外话

目前组内的产品APP是由其它部门的 .Net程序员 用C# Xamarin开发的,包含Windows和Android版本的。该人员现在已离职,公司内部已经没有做Xamarin的了。另外最近组内硬件产品开发告一段落了,短时间内不会有新产品开发了。所以接下来就打算使用新方案重做一遍APP。

目前组内所有硬件产品主体功能我都使用HTTP方式与客户端进行通讯,客户端通过UDP广播来发现设备。所以我打算APP的主要功能上都使用Web来实现,然后加个壳打包为原生应用(其实也不算Native App了,已经是Hybrid App了)。

桌面端的打包方案没什么好说的,现在最主流的就是 Electronhttps://www.electronjs.org/);移动端方案我主要看过以下几个:
Google 的 Flutter https://flutter.dev/
IonicCapacitor https://capacitorjs.com/
DCloud 的 uni-app https://uniapp.dcloud.net.cn/

后来想想可预见范围内大概也不会有开发 iOS 端的需求,所以还是直接用 Android Native + WebView 组件吧。主要考虑两点:1、以前做过安卓原生应用开发,虽然很早,在还没有Android Studio、Gradle、Kotlin的年代;2、如果做嵌入式安卓的话还会有做安卓应用开发的需求的,就当练手了。

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

Android Native APP开发笔记:从新建到打包流程记录 的相关文章

  • 使用 facebook sdk 为应用程序生成哈希密钥

    我正在使用 facebook sdk 登录我的应用程序 该应用程序在 HTC 设备上运行良好 如果没有预装 Facebook 应用程序 该应用程序也可以在三星设备上正常运行 但是 如果移动设备上已经有 facebook 应用程序 然后用户安
  • Android Studio Profiler 中显示“无可调试进程”

    当我尝试在 Android Studio 中使用探查器时 我能够看到已连接的设备 但在探查器中收到 无可调试进程 有人可以帮助我为什么我收到 不可调试的进程 吗 您可以尝试以下任意 全部操作 使缓存失效并重新启动Android Studio
  • Dagger 2 不会注入我的对象,但可以从组件中获取

    我有我的组件 GithubListActivityScope Component modules GithubListActivityModule class GlideActivityModule class public interfa
  • Eddystone Beacon 中广播的 MAC ID 会改变吗?

    我将描述我的设置 我制作了一个模拟 Eddystone 信标的 Android 应用程序 我能够使用 PlayStore 中的 Beacon Toy 应用程序检测手机上的 Eddystone 信标 但问题是 自上次检查以来 显示的 MAC
  • 如何对齐文本和图标可组合项,以便即使文本溢出后它们也能保持在一起?

    我有一个文本和一个图标可组合项 我希望图标粘在可组合项的右侧 这是我的代码 Row verticalAlignment Alignment CenterVertically horizontalArrangement Arrangement
  • Android Studio 1.2.1.1 中 Gradle 项目刷新失败

    我在全新安装的 Android Studio v 1 2 1 1 上创建了示例项目 但遇到了以下错误消息 Gradle project refresh failed in Android Studio 1 2 1 1 见下图 所以我试图在谷
  • 如何删除旧版本的Android Studio

    我必须释放硬盘中的一些空间 并寻找要删除的内容 我发现我有许多引用旧版本的 Android Studio AS 文件夹 我发现文件夹的路径是 C Users mysuername 我想要的是删除旧版本并只保留最新版本的方法 当时是 ASPr
  • Android:可以写入lib目录吗?

    是否可以以编程方式将文件复制到 data data application package lib 目录中 或在 data data application package lib 目录中创建符号链接 当尝试写入 lib 目录时 我总是收到
  • Kotlin + Room:java.lang.IllegalArgumentException:void 无法转换为元素

    我试图在我的 Java Kotlin 项目中添加 Room 但是当我尝试编译该项目时 它失败了 app kaptDebugKotlin出现以下错误 e java lang IllegalStateException failed to an
  • 在 Phonegap 3.x CLI 上构建 android 发布 apk

    如何使用 Phonegap 3 x CLI 在本地构建 Android 应用程序并准备发布 我检查了项目的platforms android目录中生成的bin文件夹 并且只有 debug APK 顺便说一句 我使用这个命令 phonegap
  • 使用 Backstack 时 TabLayout ViewPager 未加载 [重复]

    这个问题在这里已经有答案了 我在一个片段中使用 TabLayout 和 viewPager 在选项卡下方的两个片段之间切换 当我单击下部片段之一内的 FAB 时 我会加载一个新片段 用于输入 但是 当我按 后退 按钮时 TabLayout
  • ArgumentMatchers.any 不得为 null

    我正在尝试测试ViewModel以确保实时数据得到正确更新 然而使用时ArgumentMatchers any 它失败了IllegalStateException saying ArgumentMatchers any mViewModel
  • 免费和付费版本 Android 应用程序的最佳方法?

    我开发了一个 Android 应用程序 我希望它可以作为免费版本和付费版本提供 最好的方法是什么 我可以想到三种解决方案 将项目分成两个分支并维护它们 创建一个库项目并有两个附加项目 一个 免费 版本和一个 付费 版本 使用应用内结算 问
  • 如何让android BottomAppBar圆角化

    我正在使用BottomAppBar来自谷歌这样的
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • 如果我清理了反向引用,我是否可以观察 ViewModel?

    建议的实施方式ViewModel是通过使用来公开变化的数据LiveData活动 片段和视图的对象 有一些情况 当LiveData不是一个理想的答案或根本没有答案 自然的选择是将观察者模式应用于ViewModel 使其成为可观察的 注册观察员
  • 加载带有月份标题的 recyclerview 不同类型适配器

    如果从 api 获取不同的月份名称 则尝试将月份名称显示为标题 在这里 我加载月份标题 但是当我加载标题时 它不会加载其他视图 如果数据不同 我需要将月份加载为标题 并且还加载其他视图持有者 我看到一些例子 他们都在 Model 类中使用
  • Android:禁用 1.5 纸杯蛋糕动画过渡

    长话短说 如何禁用活动之间的屏幕转换 如果您愿意的话 我们实现了自己的选项卡处理程序 现在它正在选项卡之间进行转换 这看起来很俗气 谢谢 Chris See android content Intent FLAG ACTIVITY NO A
  • Android:适合SystemWindows和换行符干扰bottomSheets

    我发现如果父布局包含android fitsSystemWindows true 当发生与视图相关的操作时 它会干扰我的 BottomSheets 定位 具体来说 我遇到的是 文本视图中的换行符将触发底页偏移系统 通知栏的高度 换行符 fi

随机推荐

  • 微信小程序:从小程序打开H5页面

    1 样式 关于踩的坑和更多信息请看后续文章 已发布 2 两个wxml 第一个wxml
  • 退役小节

    大学期间我能拿的出手的好像只有acm 貌似acm的成绩也拿不出手 有点荒废的意思 大一被猴哥拉进武术协会 然后第二年这个协会就解散了 解散之前猴哥还在协会找个女朋友 真的是皮 第一学期刷了500道题 然后就进了acm实验室 为什么要进实验室
  • 语义分割系列26-VIT+SETR——Transformer结构如何在语义分割中大放异彩

    SETR Rethinking Semantic Segmentation from a Sequence to Sequence Perspectivewith Transformers 重新思考语义分割范式 使用Transformer实
  • Java 函数式编程 详细介绍

    在兼顾面向对象特性的基础上 Java语言通过Lambda表达式与方法引用等 为开发者打开了函数式编程的大门 下面我们做一个初探 Lambda的延迟执行 有些场景的代码执行后 结果不一定会被使用 从而造成性能浪费 而Lambda表达式是延迟执
  • linux远程管理工具之tabby

    linux远程管理工具之tabby Tabby简介 Tabby下载及安装 PowerShell 快捷键 Tabby简介 tabby是一款开源且免费的终端连接工具 可以使用于多平台 例如 windows mac linux等系统都支持 Tab
  • 峰面积峰高半峰宽_峰高峰面积的计算方法

    峰面积和峰高的计算方法 峰面积和峰高是色谱图上最基本数据 它们的测量精度将直接影响定量分析的精度 在色谱峰是对称 峰 且与其他峰完全分离的情况下 准确地测出峰高和峰面积是不困难的 但是当色谱峰不对称 没 有完全分离开以及基线发生较明显的漂移
  • Hudi学习2:数仓和数据湖介绍

    数据湖解决了 1 数仓无法存储非结构化数据 图像 音视频等 的问题 2 解决了数仓必须分层 数据湖直接存储原始数据 不需要分层 直接用于应用 数仓和数据湖的区别 性价比 分层可能存在冗余
  • Pytorch 中 LSTM 和 LSTMCell 的区别

    LSTM 的官方文档在这里 在例子中 LSTM 函数的参数为输入特征向量的长度 input size 10 隐藏层向量的长度 hidden size 20 隐藏层的数量 num layers 2 输入 input 的维度是时间 序列长度 句
  • Java学习interface4

    A package com mashibing interfacedemo5 public interface A public void show B package com mashibing interfacedemo5 public
  • dataphin如何使用zip文件,离线安装python第三方包?

    好久没写文章啦 快过年了啦 打工人要回家啦 背景介绍 每次在dataphin里使用pandas的时候 都要pip install pandas dataphin需要下载pandas安装包 比较费时 总而言之 这种方式慢 所以我要在datap
  • 台式计算机销量排名,2019台式电脑销量排行_笔记本哪些好 2019笔记本销量排行榜...

    笔记本哪些好 2019笔记本销量排行榜 JPG 594x348 232KB 428 250 笔记本哪些好 2019笔记本销量排行榜 JPG 570x350 128KB 407 250 台式电脑哪款好 2019十款热门台式电脑排行榜 JPG
  • cocos2d-x 旅程开始--(实现瓦片地图中的碰撞检测)

    转眼隔了一天了 昨天搞了整整一下午加一晚上 楞是没搞定小坦克跟砖头的碰撞检测 带着个问题睡觉甚是难受啊 还好今天弄成功了 不过感觉程序不怎么稳定啊 而且发现自己写的东西让我重写一遍的话我肯定写不出来 还要继续学习啊 上次的进度 实现了坦克的
  • 学生信息管理系统——C语言版本(易懂)

    一 功能概述 1 账号的登录与注册 2 学生信息的增添 3 学生信息对于学号的排序 4 学生信息的删除 5 学生信息的修改 6 学生信息的查找 7 学生信息的分类 8 学生信息表的打印 9 结束程序时对信息的在内存中的保存 10 执行程序时
  • 地类图斑代码大全_使用字段计算器对同一地类图斑自动编号(标记重复记录)...

    问题描述 在某个表中把某个字段 如字段一 中具有相同值的记录标出来 并且按照从小到大的排序自动增加一个编号 存储在字段二中 实现如下的效果 FID 字段1 字段2 1 001 0011 2 001 0012 3 002 0021 4 002
  • 离散系统的稳定性分析

    自控笔记 6 5 离散系统的稳定性分析 一 离散系统稳定的充要条件 线性连续系统的稳定的充要条件是特征方程的根全部位于左半s平面 在离散系统中 根据s平面与z平面之间的映射关系 s j z
  • android开发技术要点

    android开发技术要点 应用内HTML5的开发 提升应用内HTML5的开发和使用体验 com tencent smtt 手机京东 第三方登录 腾讯QQ互联平台 热补丁 Tinker 微信Android热补丁方案 地图 腾讯位置服务 百度
  • 计算机视觉基础1

    颜色空间 空间之间可以进行转换 RGB空间 HSV空间 CIE XYZ颜色空间 基于人类颜色视觉的直接测定 主流的颜色空间 RGB三通道彩色图 图片 三维矩阵 0 255 单通道灰度图 Gray 图像预处理 是图像增强的过程 目标 改善图像
  • Cholesky分解、乔列斯基分解

    一 简介 1 1 定理 Cholesky分解法 又叫 平方根法 是一种分解 正定Hermite矩阵 即 A A H boldsymbol A boldsymbol A mathrm H A AH 的方法 以下我用
  • 苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V5.0

    github https github com Jackie0Feng SAMS 系统需求描述 某班有最多不超过30人 具体人数由键盘输入 参加期末考试 考试科目最多不超过6门 具体门数由键盘输入 定义结构体类型 用结构体数组作函数参数编程
  • Android Native APP开发笔记:从新建到打包流程记录

    文章目录 目的 下载与安装 新建项目与运行调试 更换名称和图标 打包应用 applicationId 版本控制 真机调试 总结 题外话 目的 安卓是现在移动端平台占有率最大的平台 如果进行移动端用户应用开发大多数时候都避不开它 这篇文章将记