建立一個新專案

設定 Android Studio

首先設定 Android Studio ,然後開啟它。現在,你已準備好製作首個 Android 應用程式了!

注意: 本指南基於 Android Studio 2.2,但其他版本的過程主要是相同的。

配置你的專案

基本配置

你可以通過兩種方式啟動新專案:

  • 單擊歡迎螢幕中的 Start a New Android Studio Project
  • 如果你已開啟專案,請導航至 FileNew Project

接下來,你需要填寫一些欄位來描述你的應用程式:

  1. 應用程式名稱 - 此名稱將顯示給使用者。

    示例:Hello World。你可以隨時在 AndroidManifest.xml 檔案中進行更改。

  2. 公司域 - 這是專案包名稱的限定符。

    示例:stackoverflow.com

  3. 包名稱 (又名 applicationId) - 這是完全限定的專案包名稱。

    它應該遵循反向域名錶示法 (又名反向 DNS ): 頂級域名**。公司域名。** [ 公司細分**。** ] 申請名稱

    示例:com.stackoverflow.android.helloworldcom.stackoverflow.helloworld。你始終可以通過在 gradle 檔案中覆蓋 applicationId 來更改它。

除非你不打算將你的應用程式提交到 Google Play 商店,否則請勿使用預設字首“com.example”。包名稱將是你在 Google Play 中的唯一 applicationId

  1. 專案位置 - 這是儲存專案的目錄。

StackOverflow 文件

選擇 Form Factors 和 API Level

在下一個視窗中,你可以選擇應用支援的外形規格,例如手機,平板電腦,電視,Wear 和 Google Glass。選定的形狀因子成為專案中的 app 模組。對於每種外形規格,你還可以選擇該應用的 API 級別。要獲取更多資訊,請單擊“ 幫助我選擇”

StackOverflow 文件 當前 Android 版本發行版的圖表,當你單擊幫助我選擇時顯示。

Android 平臺分發視窗顯示執行每個 Android 版本的移動裝置的分佈,如圖 2 所示。單擊 API 級別以檢視相應 Android 版本中引入的功能列表。這有助於你選擇具有應用所需的所有功能的最低 API 級別,以便你可以訪問儘可能多的裝置。然後單擊確定

現在,選擇應用程式將支援的 Android SDK 平臺和版本

StackOverflow 文件

目前,僅選擇手機和平板電腦

最低 SDK 是你的應用程式的下限。這是 Google Play Store 用來確定應用程式可以安裝在哪些裝置上的訊號之一。例如, Stack Exchange 的應用程式支援 Android 4.1+。

StackOverflow 文件
Android Studio 會告訴你(大約)在指定的最小 SDK 的情況下支援的裝置百分比。

較低的 API 級別針對更多裝置,但可用的功能較少。

在決定使用 Minimum SDK 時,你應該考慮 Dashboards 統計資訊 ,它會為你提供有關上週訪問 Google Play 商店的裝置的版本資訊。

StackOverflow 文件

來自: Android 開發者網站上的 Dashboards

新增活動

現在我們將為我們的應用程式選擇一個預設活動。在 Android 中, Activity 是一個將呈現給使用者的單個螢幕。應用程式可以容納多個活動並在它們之間導航。在本例中,選擇 Empty Activity 並單擊下一步

在這裡,如果你願意,可以更改活動和佈局的名稱。一個好的做法是將 Activity 作為活動名稱的字尾,並將 activity_ 作為佈局名稱的字首。如果我們將這些保留為預設值,Android Studio 將為我們生成一個名為 MainActivity 的活動,以及一個名為 activity_main 的佈局檔案。現在點選 Finish

Android Studio 將建立和配置我們的專案,這可能需要一些時間,具體取決於系統。

檢查專案

要了解 Android 的工作原理,讓我們來看看為我們建立的一些檔案。

在 Android Studio 的左側窗格中,我們可以看到 Android 應用程式結構

StackOverflow 文件

首先,讓我們通過雙擊開啟 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 佈局設計器,如下所示:

StackOverflow 文件

<?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'
}

此檔案包含有關構建和應用程式版本的資訊,你還可以使用它來向外部庫新增依賴項。現在,我們不做任何改變。

建議始終選擇可用於依賴項的最新版本:

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

StackOverflow 文件

在執行 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/...