Android开发环境搭建

news2025/1/6 19:45:12

前面从全局和整体角度看了下Android包含哪些东西,自然,也涵盖了开发需要了解的内容,具体参见博文:从技术角度看Android大系统的构成_龙赤子的博客-CSDN博客

写完博文,感觉对Android开发也胸有成竹了,于是就决定对现有应用做一番修改。

知之非艰,行之惟艰,世间万物莫不如是。等到博主实际上手开工时,才发现无从下手。不过话说回来,对于“怎么吃掉一头大象”,哲人已有答案,那就是一口一口吃。我想,对于一个大系统的开发,自然也是这个理。那就先梳理思路,从搭建环境开始吧。

目录

一 准备过程:

二 根据调试目标,先了解NDK

三 Studio

四 SDK下载

五 安装虚拟机

六 搭建工作环境

1.搭建Samba 服务器:

2.释放开发包:

七 下载代码,准备编译

1.下载应用源代码

2.配置Android 的环境变量 ,参考已有版本。在/etc/profile文件中完成

3.准备编译工具

八 代码编译

九 下一步,调测程序

十 补充工程工具的问题

十一 补充SDK内容的问题


一 准备过程:

现在Android已经比以前完善了很多,这也包括文档部分。官方文档首页:https://developer.android.google.cn/docs。从官网上可以看到,文档包含了很多内容。可以说,你需要的基本都在上面。目前个人感觉缺少的就是初学者的入门路线图。这就好比去逛一个很大的景区,不熟悉的人希望有一个欧拉回路,能让自己做到不重复路线、不浪费时间,又能不漏掉景点;而对于常来之人,可能直达自己感兴趣的目的地才是首选。所以,有时候多也就意味着少。

具体来讲,文档包括了:

  1. 发布版本:各个版本及其特色。目前已经更新到Android13了。
  2. IDE(Android Studio):介绍IDE的下载、使用。包括工程的创建、迁移、导入等。在之前,我记得这些都是大家零碎整理的博客。官方很少见详细的说明。当然,也可能是我记错了。
  3. NDK:底层原生开发工具和环境的说明。介绍了版本的变迁、变化等。
  4. SDK:上层框架和Java层API的环境和相关开发工具。
  5. 开发主题:关于新功能新特性的说明。
  6. Kotlin:新的开发语言。
  7. 示例:一些开发视频和教程。

文档完善是个好事,但是多了有个问题,就是容易抓不住重点,找不到需要的内容。复杂的事物都是这样,慢慢习惯。

二 根据调试目标,先了解NDK

NDK 文档

https://developer.android.google.cn/ndk/guides

NDK 下载

https://developer.android.google.cn/ndk/downloads/older_releases#ndk-17c-downloads

android {

    ndkVersion "17.2.4988734"

}

三 Studio

https://developer.android.google.cn/studio/projects/install-ndk

四 SDK下载

现在官方不再单独提供SDK的下载,而是绑定到了Studio中。关于在Studio中下载SDK的方法,后面再补充。

也可通过其他途径下载:

https://www.androiddevtools.cn/

但是版本也都比较老。另外,解压缩后,无 platforms,需要再单独下载,比较麻烦。

五 安装虚拟机

使用Virtual box 报 0x00000000地址不可写错误。网上查找说是Win7破解版需要更新主题。因为电脑一直比较稳定,不打算替换。放弃该方案虚拟机。

换用Vmware Workstation. Player16及以上版本,要求Win8及以上系统,放弃,继续使用老的Workstation。

Ubuntu使用了较新的20大版本。

安装成功后,Security Crt ssh连接提示密钥交换错误。这是因为Ubuntu更新的原因。按网上方法,添加对旧加密方法的支持。具体来说,错误如下:

Key exchange failed.

No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256

使用Xterm工具连接成功。根据如下网站信息,更新 ssh配置后,Security Crt ssh登录成功。我本人执着于Security Crt主要是多个窗口切换比较方便,习惯了。

https://www.modb.pro/db/382057

安装32位的库,方法来自Android 官方文档的说明。(好像是安装Linux版本的Studio所需)

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386

六 搭建工作环境

1.搭建Samba 服务器:

下载 Samba软件

修改配置文件

重启smbd服务。方法见网络

2.释放开发包:

拷贝NDK压缩包,解压到工作目录。下面所述是在Linux虚拟机里搭建Android编译环境。主要是因为要编译老代码。如果是新开发,可以在Windows下使用Android Studio,一站式解决。

七 下载代码,准备编译

1.下载应用源代码

2.配置Android 的环境变量 ,参考已有版本。在/etc/profile文件中完成

需要Java 环境变量

需要Ndk 环境变量

需要SDK 环境变量

3.准备编译工具

考虑到下载的SDK只是一个框架,内容框架,很多内容,包括platforms等需要再单独下载。而现在,Android已不再单独提供这些包的下载。相关内容已经嵌入到Android studio里面,需要通过该工具来下载。于是,先下载Studio,安装后看。

如果可以通过Studio下载成功,则再从Studio安装目录中提取出来使用。或者使用command tools 方式,Android提供通过命令行的方式来下载上述包。或者第三种方式,就是快速的将原来的包拷贝过来,测试用看看。

这里选择第三种方式。最后,拷贝Ant构建打包工具。至此,环境构建完成。

八 代码编译

环境构建好后,编译看效果。具体过程略。

九 下一步,调测程序

具体内容略。主要涉及多个NDK版本的尝试,开发环境Eclipse和Android Studio的切换等。

十 补充工程工具的问题

中间用Studio调测后,回到Eclipse,结果工程不能用了。

首先是打开Eclipse,弹出框提示Failed to get the required adt version number from the sdk

之前从来没有遇到这个问题

 

继续编译工程时,IDE工具下面的信息框提示Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!

提示有错误,需要先处理错误。

clean工程后,继续尝试,问题仍然存在。

关闭Eclipse后再打开尝试,问题仍然存在。

关机重启,打开Eclipse尝试,问题仍然存在。

到此,基本确定工具环境有问题了。

网上搜了一些资料后,提示说跟Studio升级工具有关。

回想了一下,的确,在用Studio验证弹框问题时,顺便升级了几个SDK版本和build tools。

我估计问题跟升级build tools有关。另外,SDK目录下的SDK Manager可执行程序点击运行没反应,而其他版本SDK目录下的则不存在该问题。

分别检查了下Eclipse和Studio的SDK目录,发现两个用了同一个目录。因此,Studio的工具和SDK版本升级操作,肯定是影响到了Eclipse对相关工具的使用。

Eclipse应该是要低版本的工具和SDK。

于是,单独为Eclipse构建了一个低版本的环境,再次打开Eclipse,进入到工具栏的window->preference里面,指定Android项目的路径。

执行Apply,重新编译,通过。问题解决。

看来以后Studio和Eclipse就要各自用各自的SDK了。Eclipse下的目前暂时避免升级,以免带来意外的问题。

 

十一 补充SDK内容的问题

关于SDK中包含的内容,进行补充。

可以通过Studio看到,主要有两部分,一部分是平台包,一部分是工具。

平台包好理解,包含了各个Android版本的支持包。右边显示是否已安装。每一个平台的包里有那些东西,我们点开右下角的Show Package Details,就可以看到更详细的信息。

这里,我们选取一个最多的看看。

首先是SDK本身,里面包含了大量的支持jar包,我们编写应用的组件级支持就在这里,否则编译时就会找不到相关类和接口。

其次,有部分源码。以前的版本还有例子代码,后来google把例子移走了。可能官方文档里可以找到,不过不是很确定。

再次,就是支持该级别API的各种类型产品的镜像包。区分了不同的平台。这些是模拟器运行的基础。

最后,就是Google的API和带Google本身提供的一些API的镜像

看完平台包,我们再看看SDK工具集。

首先是构建工具。这个看着是跟API版本走的。

其次,CMake,就不用多说了。

再看,东西不少。模拟器,命令行工具,布局解释器,NDK包,文档,平台工具,SDK工具。这几个工具,单从名字上看,都分不清是做什么用的。这还没完,继续往后看,还有

例子程序,支持库等比较杂的东西。

作为开发者,我们并不是要去详细了解这里的每一个都是干什么用的。技术层面来讲,了解其中的部分就可以了,主要是有一个直观的感受。从学习角度来看,要在心里清楚,我们开发的一个个APP就如同构建和装饰的一个个房间,是在别人大量而又复杂的工作基础上展开的。虽然不用实现地基和骨架的事,但不能觉得没有这些事。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ActiveReports.NET 17.0 Crack

ActiveReports.NET 17 添加新的 RDL 仪表板报告类型、新的 Blazor Web Designer,以及对 .NET 7 的全面支持。 2023 年 1 月 25 日 - 15:28新版本 特征 RDL 仪表板 - 新报告类型 RDL 仪表板提供了一种在可滚动的交互式容器中显示数据可视化控件(例如图表、…

【Typescript学习】使用 React 和 TypeScript 构建web应用(三)所有组件

教程来自freecodeCamp:【英字】使用 React 和 TypeScript 构建应用程序 跟做,仅记录用 其他资料:https://www.freecodecamp.org/chinese/news/learn-typescript-beginners-guide/ 第三天 以下是视频(0:40-0:60) 的内容 目录第三天1 创建Todo…

JavaEE day6 初识JavaScript

什么是JS JS是通行在各种浏览器的一种语言,JAVA后端代码运行在服务器上,JS代码内容配合HTML,浏览器对JS代码进行解释运行,然后展现在浏览器上,web开发离不开JS。 一般步骤为:(index.html与scr…

LinuxC—高级IO

高级IO 1 非阻塞IO/有限状态机编程 1.1 基本概念 定义 有限状态机(Finite State Machine) 缩写为 FSM,状态机有 3 个组成部分:状态、事件、动作。 状态:所有可能存在的状态。包括当前状态和条件满足后要迁移的状态。事件:也称为…

自动驾驶环境感知——视觉传感器技术

文章目录1. 摄像头的成像原理1.1 单目视觉传感器的硬件结构1.2 单目视觉的成像原理 –小孔成像模型1.3 单目视觉的成像原理 – 像素坐标系1.4 单目视觉三维坐标系转换 – 外参1.5 单目视觉的坐标系转换 – 从世界坐标点到像素坐标1.6 单目视觉的特性2. 视觉传感器的标定2.1 视觉…

CSS之精灵图

1. 精灵图 1.1 为什么需要精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。 为什么使用精灵图&#xff…

9、断点调试

文章目录9、断点调试9.1 为什么需要Debug9.2 Debug的步骤1 添加断点2 启动调试3 单步调试工具介绍9.3 多种Debug情况介绍1 行断点2 方法断点3 字段断点4 条件断点5 异常断点6 线程断点7 强制结束9.4 自定义调试数据视图9.5 常见问题【尚硅谷】idea实战教程-讲师:宋红…

Linux安装mysql--CentOS系统

Linux安装mysql 安装包: https://pan.baidu.com/s/10xvFpfl4nTktaEdhKbY3og 首先启动虚拟机,我是用FinalShell连接的 然后将下载的安装包上传至Linux系统中,直接rz回车就会跳出选择文件的窗口,选择需要上传的安装包即可等待上传…

计算机网络01_---软考高级系统架构师010

计算机网络知识点汇总: IPV4中有单播,组播,广播.IPV6没有广播 网络标准喝协议中要知道有IEEE802.3 以太网协议 局域网是以太网的一种 然后,IEEE802.11是无线局域网协议. TCP/IP协议族,这里,要知道从网络层开始,这里到传输层,然后传输层有个 TCP协议,这里TCP链接的时候有…

【沐风老师】3DMAX地板生成器插件FloorGenerator使用教程

FloorGenerator地板生成器插件,创建任何形状的地板几何图形,你可以完全控制从斜边到木板倾斜的所有参数。 伴随该地板的是”多重纹理贴图(MultiTexture)“插件,它使你能够将任意数量的位图随机指定给生成的地板。还提…

听障人士亲述:我们在VRChat用手语交流,成员规模5000人

如果你在B站上搜索VRChat,排在前面的热门视频几乎都是与老外聊天的内容。除了练习语言、交文化流外,你还能在VRChat上遇到不少哇哇乱叫的小孩。作为一款VR社交应用,除了有趣的小游戏外,说话聊天也是VRChat关键的玩法之一。而有这么…

离线ctr特征中心更新

3.8 离线ctr特征中心更新 学习目标 目标 了解特征服务中心的作用应用 无 3.8.1 特征服务中心 特征服务中心可以作为离线计算用户与文章的高级特征,充当着重要的角色。可以为程序提供快速的特征处理与特征结果,而且不仅仅提供给离线使用。还可以作为实时…

【My Electronic Notes系列——直流稳压电源】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

快速安装OpenShift在Ubuntu系统上并使用

目录 OpenShift简介: 服务器信息 安装Docker 安装OpenShift 访问Dashboard oc常用命令 附 OpenShift简介: OpenShift 是一个开源容器应用平台,由 Red Hat 开发。它建立在 Kubernetes 之上,并提供用于部署、扩展和管理容器…

【Linux】基础:线程的同步与互斥

【Linux】基础:线程的同步与互斥 摘要:本文主要介绍线程的同步与互斥方面的内容,分为理论与实现两部分完成。首先从整体上介绍线程同步与互斥相关概念,在理解概念后对两者分开介绍。在互斥方面,主要介绍内容为互斥量的…

LinuxC—线程

线程 1 线程的基本概念 什么是线程 进程其实是一个容器,当我们在编程的时候实际上是在以线程为单位进行编程,包括处理器的调度也是以线程为单位的,一个进程可以有多个线程,一个进程的多个线程共享相同的进程空间,所以…

设计模式 - 创建型模式_抽象工厂模式

文章目录创建型模式概述Case场景模拟工程模拟早期单机Redis的使用Bad ImplBetter Impl (抽象⼯⼚模式重构代码)定义适配接⼝实现集群适配器接口代理方式的抽象工厂类单元测试小结创建型模式 创建型模式提供创建对象的机制, 能够提升已有代码…

0、Spring工程构建Spring快速入门Spring配置文件详解注入Sprint相关API

1、Spring工程构建 创建工程项目目录文件夹 IDEA选择项目new一个module 配置案例 aop创建 创建并下载完毕后,点击file选择projert 选择按照的jdk版本 output选择当前目录, 点击右下方apply 选择facets,点击""号选择web 选择当前…

Pinia状态管理

1、Pinia和Vuex的对比 1.1、什么是Pinia呢? Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近pia(西班牙语中的菠萝)的词; Pinia开始于大概2019年,最初是作为一个实验为Vue…

Linux使用操作

文章目录各类小技巧(快捷键)软件安装systemctl软连接日期、时区IP地址、主机名IP地址和主机名虚拟机配置固定IP网络传输下载和网络请求端口进程管理主机状态环境变量上传、下载压缩、解压各类小技巧(快捷键) 强制停止 Linux某些程…