创建一个新项目
设置 Android Studio
首先设置 Android Studio ,然后打开它。现在,你已准备好制作首个 Android 应用程序了!
注意: 本指南基于 Android Studio 2.2,但其他版本的过程主要是相同的。
配置你的项目
基本配置
你可以通过两种方式启动新项目:
- 单击欢迎屏幕中的
Start a New Android Studio Project
。 - 如果你已打开项目,请导航至
File
→New Project
。
接下来,你需要填写一些字段来描述你的应用程序:
-
应用程序名称 - 此名称将显示给用户。
示例:
Hello World
。你可以随时在AndroidManifest.xml
文件中进行更改。 -
公司域 - 这是项目包名称的限定符。
示例:
stackoverflow.com
。 -
包名称 (又名
applicationId
) - 这是完全限定的项目包名称。它应该遵循反向域名表示法 (又名反向 DNS ): 顶级域名**。公司域名。** [ 公司细分**。** ] 申请名称。
示例:
com.stackoverflow.android.helloworld
或com.stackoverflow.helloworld
。你始终可以通过在 gradle 文件中覆盖 applicationId 来更改它。
除非你不打算将你的应用程序提交到 Google Play 商店,否则请勿使用默认前缀“com.example”。包名称将是你在 Google Play 中的唯一 applicationId 。
- 项目位置 - 这是存储项目的目录。
选择 Form Factors 和 API Level
在下一个窗口中,你可以选择应用支持的外形规格,例如手机,平板电脑,电视,Wear 和 Google Glass。选定的形状因子成为项目中的 app 模块。对于每种外形规格,你还可以选择该应用的 API 级别。要获取更多信息,请单击“ 帮助我选择”
当前 Android 版本发行版的图表,当你单击帮助我选择时显示。
Android 平台分发窗口显示运行每个 Android 版本的移动设备的分布,如图 2 所示。单击 API 级别以查看相应 Android 版本中引入的功能列表。这有助于你选择具有应用所需的所有功能的最低 API 级别,以便你可以访问尽可能多的设备。然后单击确定。
现在,选择应用程序将支持的 Android SDK 平台和版本 。
目前,仅选择手机和平板电脑。
该最低 SDK 是你的应用程序的下限。这是 Google Play Store
用来确定应用程序可以安装在哪些设备上的信号之一。例如, Stack Exchange 的应用程序支持 Android 4.1+。
Android Studio 会告诉你(大约)在指定的最小 SDK 的情况下支持的设备百分比。
较低的 API 级别针对更多设备,但可用的功能较少。
在决定使用 Minimum SDK 时,你应该考虑 Dashboards 统计信息 ,它会为你提供有关上周访问 Google Play 商店的设备的版本信息。
来自: Android 开发者网站上的 Dashboards 。
添加活动
现在我们将为我们的应用程序选择一个默认活动。在 Android 中, Activity
是一个将呈现给用户的单个屏幕。应用程序可以容纳多个活动并在它们之间导航。在本例中,选择 Empty Activity
并单击下一步。
在这里,如果你愿意,可以更改活动和布局的名称。一个好的做法是将 Activity
作为活动名称的后缀,并将 activity_
作为布局名称的前缀。如果我们将这些保留为默认值,Android Studio 将为我们生成一个名为 MainActivity
的活动,以及一个名为 activity_main
的布局文件。现在点击 Finish
。
Android Studio 将创建和配置我们的项目,这可能需要一些时间,具体取决于系统。
检查项目
要了解 Android 的工作原理,让我们来看看为我们创建的一些文件。
在 Android Studio 的左侧窗格中,我们可以看到 Android 应用程序的结构 。
首先,让我们通过双击打开 AndroidManifest.xml
。Android 清单文件描述了有关 Android 应用程序的一些基本信息。它包含我们活动的声明,以及一些更高级的组件。
如果应用程序需要访问受权限保护的功能,则必须声明它需要具有清单中的 <uses-permission>
元素的权限。然后,当应用程序安装在设备上时,安装程序通过检查签署应用程序证书的权限并在某些情况下询问用户来确定是否授予所请求的权限。应用程序还可以使用权限保护自己的组件(活动,服务,广播接收器和内容提供商)。它可以使用 Android 定义的任何权限(在 android.Manifest.permission 中列出)或由其他应用程序声明。或者它可以定义自己的。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stackoverflow.helloworld">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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>
接下来,让我们打开 activity_main.xml
,它位于 app/src/main/res/layout/
。此文件包含 MainActivity 的可视组件的声明。你会看到视觉设计师。这允许你将元素拖放到选定的布局上。
你还可以通过单击 Android Studio 底部的文本切换到 xml 布局设计器,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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.stackexchange.docs.helloworld.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
你将在此布局中看到一个名为 TextView
的小部件,其中 android:text
属性设置为 Hello World!
。这是一个文本块,将在用户运行应用程序时显示。
你可以阅读有关布局和属性的更多信息。
接下来,我们来看看 MainActivity
。这是为 MainActivity
生成的 Java 代码。
public class MainActivity extends AppCompatActivity {
// The onCreate method is called when an Activity starts
// This is where we will set up our layout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView sets the Activity's layout to a specified XML layout
// In our case we are using the activity_main layout
setContentView(R.layout.activity_main);
}
}
根据我们的 Android 清单中的定义,MainActivity
将在用户启动 HelloWorld
应用程序时默认启动。
最后,打开位于 app/
的名为 build.gradle
的文件。
Android Studio 使用构建系统 Gradle 来编译和构建 Android 应用程序和库。
apply plugin: 'com.android.application'
android {
signingConfigs {
applicationName {
keyAlias 'applicationName'
keyPassword 'password'
storeFile file('../key/applicationName.jks')
storePassword 'anotherPassword'
}
}
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.stackexchange.docs.helloworld"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
signingConfig signingConfigs.applicationName
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0'
}
此文件包含有关构建和应用程序版本的信息,你还可以使用它来向外部库添加依赖项。现在,我们不做任何改变。
建议始终选择可用于依赖项的最新版本:
- buildToolsVersion :26.0.0
- com.android.support:appcompat-v7:26.0.0(2017 年 7 月)
- 火力 :11.0.4(2017 年八月)
compileSdkVersion
compileSdkVersion
是告诉 Gradle 用于编译应用程序的 Android SDK 版本的方法。使用新的 Android SDK 是使用该级别中添加的任何新 API 的要求。
应该强调的是,更改 compileSdkVersion
不会改变运行时行为。虽然更改 compileSdkVersion
时可能会出现新的编译器警告/错误,但你的 compileSdkVersion
不包含在你的 APK 中:它纯粹是在编译时使用的。
因此,强烈建议你始终使用最新的 SDK 进行编译。你将获得对现有代码进行新编译检查的所有好处,避免新弃用的 API,并准备好使用新 API。
minSdkVersion
如果 compileSdkVersion
设置了最新的 API,则 minSdkVersion
是你应用的下限。minSdkVersion
是 Google Play 商店用于确定应用程序可以安装在哪个用户设备上的信号之一。
它在开发过程中也扮演着重要角色:默认情况下,lint 针对你的项目运行,当你使用 minSdkVersion
上方的任何 API 时会发出警告,帮助你避免尝试调用不存在的 API 的运行时问题。在仅在较新的平台版本上使用 API时,在运行时检查系统版本是一种常见技术。
targetSdkVersion
targetSdkVersion
是 Android 提供前向兼容性的主要方式,除非更新 targetSdkVersion
,否则不应用行为更改。这允许你在完成行为更改之前使用新的 API。更新以定位最新的 SDK 应该是每个应用程序的高优先级。这并不意味着你必须使用所引入的每个新功能,也不应该盲目更新你的 targetSdkVersion
而不进行测试。
targetSDKVersion 是 Android 的版本,它是可用工具的上限。如果 targetSDKVersion 小于 23,则即使应用程序在 API 23+上运行,应用程序也不需要在运行时为实例请求权限。TargetSDKVersion 并没有阻止 Android 的版本采摘 Android 版本上面运行的应用程序。
你可以找到有关 Gradle 插件的更多信息:
运行应用程序
现在,让我们运行我们的 HelloWorld 应用程序。你可以运行 Android 虚拟设备(可以使用 Android Studio 中的 AVD Manager 进行设置,如下例所示),也可以通过 USB 线连接自己的 Android 设备。
设置 Android 设备
要在 Android 设备上从 Android Studio 运行应用程序,你必须在设备的设置中启用 Developer Options
中的 USB Debugging
。
Settings > Developer options > USB debugging
如果在设置中看不到 Developer Options
,请导航至 About Phone
并点击 Build Number
七次。这将使 Developer Options
能够显示在你的设置中。
Settings > About phone > Build number
你还可能需要更改 build.gradle
配置以构建你的设备所具有的版本。
从 Android Studio 运行
单击 Android Studio 顶部工具栏中的绿色 Run
按钮。在显示的窗口中,选择要在其上运行应用程序的设备(如有必要,请启动 Android 虚拟设备,或者如果需要设置 ,请参阅设置 AVD(Android 虚拟设备) )并单击 OK
。
在运行 Android 4.4(KitKat)
且可能更高的设备上,将显示一个弹出窗口以授权 USB 调试。点击 OK
接受。
该应用程序现在将在你的 Android 设备或模拟器上安装并运行。
APK 文件位置
准备发布应用程序时,可以配置,构建和测试应用程序的发行版。配置任务很简单,涉及基本代码清理和代码修改任务,有助于优化你的应用程序。构建过程类似于调试构建过程,可以使用 JDK 和 Android SDK 工具完成。测试任务可作为最终检查,确保你的应用程序在实际条件下按预期执行。准备好发布应用程序后,你将拥有一个已签名的 APK 文件,你可以将其直接分发给用户或通过 Google Play 等应用程序市场进行分发。
Android Studio
由于在上面的示例中使用了 Gradle,因此生成的 APK 文件的位置为:<Your Project Location>/app/build/outputs/apk/app-debug.apk
IntelliJ
如果你在切换到 Studio 之前是 IntelliJ 的用户,并且直接导入 IntelliJ 项目,则没有任何更改。输出的位置将在下面相同:
out/production/...
注意:这有时会在 1.0 左右被弃用
日食
如果你直接导入 Android Eclipse 项目,请不要这样做! 只要你的项目(罐子或库项目)中有依赖项,这将无效,你的项目将无法正确设置。如果你没有依赖关系,那么 apk 将与你在 Eclipse 中找到它的位置相同:
bin/...