Android studio(hedgedog版本)开发(一)—— Android tudio基本介绍
一、引言
Android studio的更新换代很快,而且每一次调整的幅度很大,很多小白(比如我)在上手时参照以前的教程和博客去操作往往晕头转向。经过一段时间的安卓开发的上手,想跟各位分享一下我在Android开发中基础配置问题上的一些经验。
作为第一篇文章,简单跟各位介绍一下Android studio吧。Android studio的前身是大家耳熟能详的Eclipse Android Development Tools (ADT),然而,Google在2013年的Google I/O开发者大会上推出了Android Studio,这个基于IntelliJ IDEA的新开发环境很快就被接受和欢迎,因为它具有许多针对Android开发优化的功能和提升工作效率的工具。从那时起,Android Studio就成为了Android开发的官方IDE。
Android Studio的下载可参考CSDN上其他博主的文章。
二、基本概念
那么接下来介绍一下小白在刚上手时需要厘清的一些概念,其中有部分我的做工程的师兄也没有完全搞清楚,但我认为把Android studio的整体架构组成搞清楚还是很有必要的。
1. SDK, NDK, 和JDK
先看看chat给的大致定义吧:
NDK
对于NDK,简单来讲,如果你需要使用的一个硬件库是用C/C++写的,而你需要在安卓程序中调用这个硬件的控制函数,那么这时候你就需要通过NDK在Android studio中做交叉编译了。同时像chat说的,当你的app需要实现某些特殊功能的时候,你可能会需要C/C++。顺便提一嘴,对于python的交叉编译,Android studio也有一个插件库叫做chaquopy,有需要的可以去搜一下,官网上有详细的配置过程。对于NDK,这位博主的文章有详细的配置过程:Android Studio 进行NDK开发,实现JNI,以及编写C++与Java交互(Java调用本地函数)并编译出本地so动态库_android studio jni-CSDN博客
SDK和JDK
对于 Android Studio中的SDK,它和你在其他地方看到的SDK含义完全相同。如果你对SDK了解甚少,我有一个不是很恰当但是形象的理解:SDK是一种“操作系统”,它提供了控制底层元件活动的一套软件包,和Windows,linux一样,它们虽然各有不同,但都是依据电脑底层的硬件芯片的结构设计的,目的是要让用户控制芯片给其指令来控制其他硬件从而实现功能。Android Studio这里的sdk其实就是提供构建安卓应用架构的方式,而你使用的代码就是API,用于给出你的指令,表达你希望程序干什么。需要注意的是安卓系统自身的sdk其实和这里开发时的sdk是同一个sdk,这也是我为什么强调他是一种操作系统。
那么由于Android Studio最初的底层sdk库是用Java写的,你所使用的语言也是java/kotlin,故而需要一个JDK编译工具来编译你的项目。Kotlin语言是Jetbrain公司(是的,就是那个做IDEA和Pycharm的公司)为了弥补Java语言自身的缺点而开发的语言,是Java的延申,所以JDK当然也兼容Kotlin。Google也注意到了Kotlin的优势,于是在2017年将kotlin作为Android Studio的首推语言,当然时至今日Java依旧占大头,但是两者其实很相似。很多初学者在使用较新版本的Android Studio设置模板的语言时会发现没有这个选项,那是因为选择了新推出的混合编译模板,默认使用两种语言,所以记得选择基础空白模板,第二个会为你设置一个默认视图界面,请自己选择:
(新版本里面连个注释都没,确实令人迷惑)
说回两种语言,由于Kotlin语言的介入,即使你选择了Java模板中的gradle配置文件也是用kotlin生成的:(因为官方推荐的是Kotlin DSL,你也可以自己在新建时改成Groovy DSL)
但是就如我之前说的,Java短时间内不可能被完全取代。
2. Gradle
Android Studio开发的核心,用于将你的安卓工程构建并打包成能在手机上运行的apk。刚刚说的SDK,NDK,JDK的设置都必须和gradle的设置相配合,当你的gradle能够正确地管理你的项目中使用的各种开发包,配置需要的依赖时,你的项目才能运行。其实对于刚上手Android Studio的开发者来说,gradle的配置简直是恶梦,特别是当你没有基础但是想通过Android Studio运行一个样例应用时,gradle版本和配置的不统一会让人束手无策。但是gradle相对复杂的配置方式同时也确保了应用运行的稳定性。Gradle本身就是一个构建工具,在Android Studio中使用的是 gradle plugin,请注意区分gradle版本和Android Studio的gradle插件版本。在每一次更改gradle文件后请记得同步(sync):
3. 工程的基本框架
没有安卓开发经历的开发者可以先试着打开一个模板的工程,看看他的框架结构。
首先,作为一个需要开发视图和用户交互的安卓工程,各种配置界面和app的前端文件是少不了的。Android Studio里用的是XML文件,我们需要重点关注的.xml文件主要有以下两个:
(1)AndroidManifest.xml
它是整个应用程序的"章程",描述了应用程序的基本特性和相关组件。这里也可以说是对后续代码和组件的一个配置,如目标系统的sdk版本,应用的权限设置(如能否联网),应用本身特性的设置(图标,标签,主题等等),以及各种activity的类别和彼此之间的关系(如mainactivity)
(2)activity_main.xml
位于layout文件夹下的文件,设置的界面的布局样式以及按钮和输出,后续的代码如果需要改变布局均需要从这里调用相应对象。
其他的xml配置文件还有很多,但是作为初学者可以不用急于搞清楚里面的所有内容。
说完前端的配置文件,让我们来看看代码主体。app\src\main\java,这个路径下的代码文件是我们需要重点编辑的地方,你可以看到一个默认生成的mainactivity文件,这是生成模板中默认的一个主活动,可以看到之前在manifest里是默认设置其为主活动的,也即启动后运行的活动。
这个mainactivity可以根据你的需要选择其继承的父类,比如默认是继承于AppCompatActivity这个类的,目的是为了兼容老版本安卓系统的一些配置,一些具体的Java特性这里不过多阐述。
写完你的主体代码后,别忘了进行gradle的配置,如果你使用的是官方支持的第三方库,请按照官网的说明进行配置。那么我们需要重点关注的gradle配置文件有:
(1)模块级的build.gradle文件:该文件位于app文件夹下,如下图
主要进行该应用模块相关的信息配置,如可支持的最低sdk版本,目标sdk版本,应用ID等。模块所需的依赖也记得在这里配置(上图为空模板) 。
(2)项目级的build.gradle文件:新版本的这个文件需要进行的配置很简略,具体情况有所不同。
(3)gradle.setting文件:有些旧版本的项目级build文件的配置被转移到了这里,因为一些配置优先级上的优化。
如果你想知道新版本的gradle配置文件中的具体细节以及配置方法,请到官网去查看。这是当前版本gradle的API,有兴趣的可以钻研下:Class Index | Android Developers
一代gradle有一代gradle的用法,真是奇奇又妙妙啊。
三、结语
这一篇文章主要给各位介绍一些关于Android Studio的基本概念,接下来会分享一些在具体开发中遇到的具体问题。