android基础—小白篇(二):创建属于自己的第一APK——Hello World!

当我们学习一个新的编程语言时,我们的第一个程序就是 Hello World,当然我们的第一个android程序也会是Hello World啦,话不多说,让我们开始我的第一个android程序吧!

  • 创建android项目:


    这个界面很熟悉吧,没错这就是我们的android studio的欢迎界面,但是些都是些什么意思呢,嘿嘿,其实博主的英语也很菜的,比如有24个英文字母哈。

    先从第一行开始解释:

    第一行的就是创建一个新的android studio的项目(为什么是android studio的项目呢,因为我们之前都是用eclipse开发的嘛,里面的文件格式不太一样,所以就是创建android studio项目了。)

    第二行的就是打开一个android studio的项目,比如同学从网上下了一个Demo(即例子)我们直接点第二个然后选择下的那个Demo就OK啦!

    第三行的就是直接翻译的话就是”查看下版本控制”,看到后面那个小三角了么,点击下,就会出现,github,CVS,Git,Google Cloud,Mercurial,Subversion那么这些是什么呢,这些其实是一些”仓库”,它们可以帮我们保存代码,我们可以点击它们,按照固定的格式就可以打开我们的之前保存在这些”仓库”的代码,非常便捷!但是,放在上面的代码有些是开源的,所以重要的代码不要放上面哦~

    第四行就是导入我们之前在eclipse中编写的项目。

    第五行就是导入一个android样本。

    既然我们是创建项目那我们就毫不犹豫的点第一个啦!


那么这个界面又是做什么的呢?
不要着急嘛,虽说博主的英语很渣,但是这点儿还是可以看的懂的。

标号为1的:我们要创建一个android项目,那么这个项目一定得有名字吧,没错,你猜对了,这个就是项目的名字,不信看英语,application name 即:应用程序的名字。

标号为2的;我们若是纯翻译的话就是,公司的名称,这个就相当于一个限定符,会加到包名里面去。

标号为3的:就是包名了。

标号为3的:就是这个项目在硬盘上的存储路径了,后面有三个点可以自己设置哦~

设置完后直接Next!

我们在手机上下载应用时是不是有的应用在下面声明,本应用只适于5.X.X以上适用,让当初没有钱买新手机的同学们拿着4.X.X多的系统干瞪眼对吧,以后这个系统适用版本同学你就可以制定啦,不过博主最近在看郭神(郭霖)的第一行代码知道,现在市场上最低的android版本为4.0的,所以自己制定版本虽好,但也要符合市场规律哦~

其他的选项是用来开发可穿戴设备,电视,汽车程序的,由于现在这几个领域在国内并没有普及,我们就先空着吧。接着点Next!

这个界面我们可以选择一种模板,但是由于我们是刚接触android嘛,所以复杂的我们也玩不转,所以就默认的就好,就是那个Empty Activity!继续点Next!

这里我们可以设置Activity类的名字,也可以设置布局的名字,由于我们没有什么特殊需要,默认就好,终于到头啦(因为Next已经不能点了嘛),点击finish稍等一会儿就好了!

当出现这个界面时便代表我们的项目创建成功了,但是要等待一下看见最底下的进度条了么,最好等进度条都完成了,我们再做其他的操作,毕竟现在android studio的编译速度还是很慢的,比如有的大神说,自从用了android studio我便多了几次喝咖啡的时间,当然有android studio的插件可以提高android studio的编译速度的。

下面为了防止同学用的是iphone手机,我们还是来创建一个android模拟器吧,当然使用android手机的同学可以略过哦~

  • 创建android模拟器:

请同学们在第二行菜单中找一下图示那个红色箭头所指的图标,然后点击它!

点击中间那个create:

这里我们在phone的选项中,选择一下我们模拟器的大小,这个不会影响后边的哦,同学们高兴就好,想要大的就大的,想要小的就要小的,比如博主特别羡慕有Nexus 6P的人,所以就给自己选了个6P。

选择好后,点击Next就好了。

接下来就到了为我们的模拟器选择系统的时候了,但是博主只下了7.0的所以博主就为我的模拟器装7.0的系统啦,同学们要注意右边有没有红色的提示哦,比如这个提示就是博主没有为模拟器选择内存大小,当然还会有其他的提示的,同学们只要点击后,根据提示一步步操作就好啦,没有什么难度的,毕竟我们都把android的环境搭建成功了呢,选择好后,直接点Next!

到这个界面我们的模拟器就要创建成功了,这一界面没什么说的,无非就是为我们的模拟器起个名字啦,再或者设置下横屏竖屏啦,同学开心就好,想怎么设怎么设,想怎么起名就怎么起名,高兴就好!哈哈!

好了,到这一界面我们的模拟器就是创建完成了,现在我们启动它吧,看到模拟器后面那个绿色的三角了么,没错,点击它,我们的模拟器就启动成功啦!下面上效果图:

模拟器正在开机……

OK,模拟器开启成功!

现在我们项目有了,模拟器也有了,那我们直接看看执行结果吧,可能有的同学会疑惑,代码还没写呢,难道能有结果?哈哈,我们先执行看看嘛,若是没有结果,我们再改也不迟!

  • 下载程序到模拟器(或手机)
  • 注意:当下载程序到手机时,我们需要把手机的开发者模式打开,但是由于手机的不同,打开开发者模式的方法也不尽相同,所以恕博主无能为力了,各位同学只能自己去百度来获取自己手机的开发者模式了,当拥有开发者模式后,在开发者模式中将USB调试功能打开,若是处于关闭状态下,也无法将程序下载到手机的。

还是第二行菜单,不过这次我们要点的是红色箭头所指的那个绿色的三角了,点击它!

在这里我们选择我们的模拟器就好啦!(用真机的小伙伴请选择自己的手机哦~,如果是真机的话,那么这里就是自己手机的型号了!)然后点击OK!

等待android studio编译成功,和下载到模拟器(或真机)成功……

程序下载完成后就是这个样子啦,哈哈,神奇吧,我们没有写一句代码,下载到模拟器(或真机),Hello World!竟然出来了,究竟是为什么呢,现在让我们一块儿来看一下吧!


  • 分析Project


在我们项目的最左边有一个Project点击它!



我们会看到这个界面,任何一个新建的项目都会默认使用android模式的项目结构,但这并不是项目的真实结构,这个是被android studio转换过的,这种项目结构简单明了,适合快速开发,但是对于我们这些菜鸟小白来说,理解这些并不容易啊,谁让我们是小白呢?当然啦,我们是可以更换项目结构模式的,点击android区域就可以切换啦!



这里我们把项目结构模式切换成Project,这就是项目真实的目录结构了。



哎,对于我们这些刚接触android的菜鸟小白来讲还是不懂嘛,没关系,博主还是会一点儿的,我来给同学们一一讲解下吧!

.gradle 和 .idea:这两个目录放置的都是 android studio自动生成的一些文件,我们就不用关心啦,当然最主要的是不用我们去手动编辑。

app:这个目录中放置的是项目中的代码,资源等内容,我们后面的开发工作也基本都是在这个目录下进行的,待会儿还会对或者目录单独进行讲解说明的。

build:这个目录也不需要过多的关心,它主要包含了一些在编译时自动生成的文件。

gradle:这个目录包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradl下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。android studio默认没有启用gradle wrapper的方式,如果需要打开,可以点击android studio导航栏->File->Settings->Build,Execution,Deployment->Gradle,进行配置更改。

.gitignore:这个文件是用来将制定的目录或文件排除在版本控制之外的。关于版本控制我们后边的博客在说哈!

build.gradle:这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。一会儿我们再详细分析gradle构建脚本中的具体内容。

gradle.properties:这个文件是全局的gradle的配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。

gradlew和gradlew.bat:这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统使用的。

Applicationtest.iml(注意名字是和项目名称一样的,这个并不是死的):iml文件是所有IntelliJ IDEA 项目都会自动生成的一个文件(android studio 是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们并不需要修改这个文件中的任何内容。

local.properties:这个文件用于指定本机中的,android SDK路径,通常内容是自动生成的,我们并不需要修改。但是当你本机中的android SDK位置发生变化了,那么就将这个文件中的路径改成新的位置即可。

settings.gradle:这个文件用于指定项目中所有引入的模块,由于我们的这个项目只有一个模块,因此该文件也就只引入了app这一个模块。通常情况下模块的引入都是自动完成的,需要我们手动改这个文件的场景可能比较少。

现在整个项目的外层目录都介绍完了,但是你可能已经发现了,除了app目录外,其他大多数的文件和目录都是自动生成的,需要我们改动的很少,所以……app目录下的内容才是我们的工作重点嘛,展开app目录如下:



build:整个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件,不过它里面的内容会更多更复杂,我们不需要过多的关心。

libs: 如果我们的项目中使用到了第三方jar包,我们就需要把这些jar包都放在libs目录下了,放在整个目录下的jar包都会被自动添加到构建路径里去。

androidTest: 此处时用来编写android Test测试用例的,可以对项目进行一些自动化测试。

java: 这个肯定是用来放置我们所有java代码的地方,展开该目录,就会看到我们刚才创建的MainActivity文件就在里面。(未必是MainActivity,因为这个名字是我们自己起的嘛)。

res:整个目录下的内容就有点多了,简单说的话,就是我们在项目中使用到的图片,布局,字符串,等资源都要存放在整个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,所以我们并不用担心res目录会乱。

AndroidManifest.xml:这个是我们整个android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件中注册,另外还可以在这个文件中给应用程序添加权限声明,由于这个文件我们将来会经常用到,所以以后再做详细介绍啦!

test:此处是用来编写Unit Test测试用例的,是对项目进行自动测试的另一种方式。

.gitignore:这个文件用于将app模块内的指定的目录或文件排除再版本控制之外,作用和外层的.gitignore文件类似。

app.iml:IntelliJ IDEA项目自动生成的文件,我们不需要关心和修改这个文件中的内容。

build.gradle:这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置,我们一会儿会详细分析gradle构建脚本中的具体内容。

proguard-rules.pro:这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读!

OK,现在我们已经把所有的目录大致的了解了一下,理解不了没关系,我们后面还有很长的路呢,万里长征第二步,还有9000多步呢,待我们走完后,肯定会比现在深刻的,现在我们来看看我们的Hello World到底是怎么出来的吧!

注:以上所有的目录解释,均来自于郭霖的第一行代码第二版。


  • Hello World 到底是怎么出来的

我们刚才在分析app目录中的AndroidManifest.xml,文件时说过,这个是我们整个android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件中注册,换种说法就是,我们若是不在该文件中配置,则我们的android项目无法运行。所以我们在看”Hello World”怎么出来的时候,我们的第一步则是打开该文件找到如下代码:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这段代码表示对MainActivity活动进行注册,下面和包含的代码则代表将该活动设置为主活动页,那么什么是活动呢?活动android程序中的门面,android程序就是有各种活动组成的东西,只要你在android应用中看得到的部分其实都是活动,因此在刚才的模拟器中看到的Hello World!其实就是在MainActivity这个活动当中,既然找到了,那我们就去相应的java文件夹中去找它吧!打开MainActivity.java代码如下:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

在这段代码中,我们可以看到,MainActivity 继承了AppCompatActivity,这是一种向下兼容的Activity,然后重写了onCreate方法,这个方法是什么呢,下篇博客我会讲解下activity的生命周期,然后同学们就会知道onCreate是干什么的啦,现在我们主要先看下Hello World这个字符串是怎么出来的哈,然后调用了setContentView方法绑定了activity_main布局,那么Hello World字符串会不会在这个布局中呢,没事儿,我们一步步找嘛,总之MainActivity中已经没什么可看的了,我们去布局中找吧,还记得布局在哪儿么?我们一步一步来哈,不着急打开:app->src->main->res->layout,看看有没有activity_main,哈哈,它果然在这儿,但是打开后它是这个样子的:

这可怎么办,还是看不到Hello World!嘿嘿!看到上图那两个箭头了么?当前我们在1,界面,我们点2试试,哈哈,这次是不是又看到代码了,我把代码贴出来哈:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.llx.lenovo.applicationtest.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

嘿嘿!布局先不用管哈,我们的目的是找Hello World嘛~,看下面那个控件,对就那个TextView的,它里面是不是有一个这样的属性:android:text=……,看内容,哈哈,“Hello World!”终于找到它了,现在同学明白为什么我们一句代码都不用敲,就建个项目再建了虚拟机然后把程序下载进去,Hello World 就出来了吧!

项目下的build.gradle详解:

这个里面只需要改classpath就好了,比如你的AS版本为2.2.3那么就改成2.2.3,这个可以向下兼容但是不可以向上兼容的,每个人的gradle不一样,所以,我们从github上下载下来的源码通常是需要改这里的。

app目录下的build.gradle详解:

先来解释1吧:
指的是当前编译API的版本,然后下面对应的就是编译工具了。github下载下来源码的话,有时会修改。
2:
就是当前项目的包名了,没什么说的。
3:
min…就是适配的最低API;target……就是适配的最高API了。
4:
当创建一个项目的时候,会默认的添加V7包的,若是我们要添加一个V4包的话,那么版本应该和V7的一样!

忘解释了,尴尬尴尬,原因是一个初学Android的同学问我,我才想起我有一篇基础的博客,过来瞅,发现少了点儿东西,这才补上。
罪过…罪过……

OK,这篇博客就到这里了,同学们若是有什么不懂的,可以在下面评论区中留言哈,我看到后会回的,另外对android有兴趣的同学可以加我们刘博主的群:555974449,群里面有很多大神的,而且很热情,很热心的,大家不懂的可以问的。

注:以上内容有借鉴郭霖所著的第一行代码第二版。

你可能感兴趣的:(android)