需要的软件列表
- Java JDK5或以后版本;
- Android SDK 工具包
- Java运行时环境JRE (其实JDK中已经包含JRE)
- Android Studio
Android Studio在开发Android程序方面远比Eclipse强大和方便的多。而且先安装Android Studio后,不用再专门去官网安装SDK包。
百度云盘(内带Android Studio安装包以 Android开发入门教程《第一行代码》):
链接:https://pan.baidu.com/s/1V6UFuFoY8OCAzBdt6JyR8g
提取码:7z4o
复制这段内容后打开百度网盘手机App,操作更方便哦
安装步骤
如果不需要更该默认配置,狂点Next!!!
第一个Android程序 HelloWorld
由于没有下载SDK工具包,这里可能会自动下载很多东西。
创建一个新项目
选择模板,如果没有特别需要这里选择Empty Activity即空模板
项目名称
这里的Name是什么,手机运行的程序Name就是什么。
启动模拟器
由于Android Studio自动生成了很多东西,所以现在不需要编写人格代码,HelloWord项目就可以运行了。但在这之前还必须有一个运行的载体,可以是一部Android手机也可以是Android模拟器。
创建一个Android模拟器
这里选择设备,不仅能创建手机模拟器,还可以创建平板、手表、电视等模拟器。这里选择的是Nexus 5X这台设备的模拟器了。
选择最新的Android7.0系统,这里可能需要下载系统。下载之后选择,就是下面这个界面。在这里我们可以对模拟器的一些配置进行确认,比如说是模拟器的名字、分辨率、横竖屏等信息。如果没有特殊需要全部默认即可,点击Finish。
这就是生成的模拟器,点击三角形运行模拟器。
可以看到模拟器已经生成一个手机,有一个开机的过程。你几乎可以像使用手机一样使用它,模仿度非常高。
下来我们来运行HelloWorld项目
运行之后可以看到出现下面界面,还可以在任务查看其中看到一个HelloWorld的程序app。
分析第一个Android程序
先来看看项目的目录及文件
manifests文件
这个目录下的文件为xml文件,用来声明所有的组件,这个文件是Android操作系统与你的应用程序之间的接口,如果没有在文件中声明你的组件,将无法被操作系统所识别。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloword">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
android:icon="@mipmap/ic_launcher"
:指出了位于res/drawable-hdpi下面的应用程序图标。名为mipmap/ic_launcher.png的图片;
android:label="@string/app_name"
:指定用于活动名称的字符串,可以使用标签来指定多个活动。
android:name=".MainActivity"
:指定一个Activity类子类的全名;
android:name="android.intent.action.MAIN"
:意图过滤器的action命名,表示这个活动被用做应用程序的入口。
android:name="android.intent.category.LAUNCHER"
:表明应用程序可以通过设备启动器的图标来启动。
@String
:指的是strings.xml文件。
java目录
控制逻辑的java代码;
generatedJava
配置文件
res目录
一些界面图片、样式类似于Web开发中的resource目录。
上述项目内容其实并不是真正的project内容,而是由Android Studio转换过的。这种项目结构适合快速开发。切换到Project项目真实的目录结构。
可以看到很真实。
来看一下主要的几个目录的作用:
- .gradle和.idea:放置得都是Android Studio自动生成的一些文件,无需关心;
- app:项目中的代码、资源等内容的放置目录;
- build包含一些在编译时自动生成的文件;
- gradle:
- .gitgnore用来将指定的目录或文件排出在版本控制外;
- build.grade:这时项目全局的gradle构建脚本;
- gradle.properties:这是全局的gradle配置文件,在这里配置的属性将影响到项目中所有的gradle编译脚本。
- gradlew和gradlew.bat用来在命令界面执行gradle命令的,其中gradlew是在Linux或Mac系统中,gradlew.bat是在Windows系统中使用的。
- HelloWorld.iml 是所有IDEA项目都会生成的一个文件;
- local.properties用于指定本机Android SDK路径,通常内容都是自动生成的。
- settings.gradle:用于指定项目中所有引入的模块。
HelloWorld程序是如何运行起来的
一、先打开AndroidMainifest.xml文件
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这段代码表示对MainActivity这个活动进行注册,下面的两行代码表示MainActivity是这个项目的主活动。手机上点开应用图标,首先启动的就是这个活动。
看看这个活动的代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
继承自AppCompatActivity,它是一种向下兼容的Activity。我们项目中的所有活动都必须继承它或者它的子类才能拥有活动特性。这个onCreate方法是一个活动被创建时必定要执行的方法。
由于在Android程序中讲究逻辑和视图分离,因此不推荐在活动中直接编写界面,那么上面的Hello World界面是怎么来的? 方法中的第二行代码setContentView给当前活动引入一个layout.activity_main的布局
打开layout/activity_main.xml文件可以看到前端的样式
切换代test文件可以看到在里面定义了helloWorld
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
详解项目中的资源
打开res/values/strings.xml文件可以看到如下代码,这里定义了一个应用程序名的字符串。可以使用两种方式来引用它
- 通过R.string.hello_world可以获得该字符串的引用;
- 在XML中通过@string/hello_world可以获得该字符串的引用;
当然string是可以替换的,如果想引用图片资源可以提换成drawable,如果引用图标可以替换成mipmap,如果是布局文件可以替换成layout。
<resources>
<string name="app_name">HelloWord</string>
</resources>
打开AndroidMainifest.xml
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
可以看到这里的引用正是这种形式;
详解build.gradle文件
Gradle是一个非常先进的项目构建工具,而Studio 是采用Gradle来构建项目的。Gradle使用了一种基于Groovy的领域特定语言DSL来声明项目配置,屏弃了传统基于XML的各种烦琐配置。
从项目中可以看到两个build.grade文件,先来看看外层文件
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
两处repositories的闭包都声明了jcenter()这行配置,其实它是一个代码托管仓库,声明了者行代码,我们就可以在项目中轻松引用任何jcenter上的开源项目了。
而dependencies闭包里生命了一个Gradle插件。
再开看看app目录下的build.gradle文件:
//com.android.application表示这是一个应用程序模块
//也可以选择com.android.library表示这是一个库模块
//两者最大的区别就是:应用程序模块是可以直接运行的、
// 库模块只能作为代码库依附于别的应用程序模块执行
apply plugin: 'com.android.application'
android {
compileSdkVersion 28 //指定项目的编译版本
defaultConfig {
applicationId "com.example.helloword" //项目的包名
minSdkVersion 15 //指定项目最低兼容的Android系统版本
targetSdkVersion 28 //表示你在该目标版本上已经做过充分测试
versionCode 1 //指定项目的版本号
versionName "1.0" //指定项目的版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//用于指定生成安装文件的相关配置,通常只会有两个自闭包即debug和releasse
//debug用于指定生成测试版安装文件的配置
//release用于生成正式版安装文件的配置
buildTypes {
release {
minifyEnabled false //指定是否对项目的代码进行混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
//用于指定混淆时所采用的规则文件
}
}
}
//可以指定当前项目所有依赖关系
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Android Studio项目一共有3中依赖关系:本地依赖、库依赖和远程依赖;
本地依赖可以对本地的Jat包或目录添加依赖关系;
库依赖可以对项目中库模块添加依赖关系;
远程依赖可以对jcenter库上的开源项目添加依赖关系。
掌握日志工具的使用
使用Android的日志工具Log
有五种方法来打印:
Log.v()
:用于打印那些最为琐碎的、意义小的日志;Log.d()
:用于打印一些调试信息,对应级别debug;Log.i()
:用于打印一些重要的数据,对应info级别;Log.w()
:用于打印一些警告信息;Log.e()
:用于打印程序中的错误信息。