[入門]Android的應用程式架構

來源:互聯網
上載者:User
以HelloActivity程式為例,簡單介紹Android應用程式的架構。希望讀者可以根據HelloActivity,自己寫出一個Andorid的應用程式。

  HelloActivity工程的原始碼在Android目錄的development/samples/HelloActivity/中,代碼的結構如下所示:
development/samples/HelloActivity/
|-- Android.mk
|-- AndroidManifest.xml
|-- res
|   |-- layout
|   |   `-- hello_activity.xml
|   `-- values
|       `-- strings.xml
|-- src
    `-- com
        `-- example
            `-- android
                `-- helloactivity
                    `-- HelloActivity.java

  其中tests是一個獨立的項目,可以暫時不考慮。其他部分看作一個Android的一應用程式的工程。這個工程主要的組成部分如下所示:
Android.mk
是整個工程的“Makefile”,其內容如下所示:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := samples
# Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := HelloActivity
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)
# Use the following include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
其中LOCAL_PACKAGE_NAME表示了這個包的名字。這個檔案是最終產生的包(*.apk)的名稱,注意,包的名稱和應用程式目錄的名稱無關,而與這裡的HelloActivity的名稱有關。

AndroidManifest.xml

工程的描述檔案

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.helloactivity">
    <application android:label="Hello, Activity!">
        <activity android:name="HelloActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>
  在工程描述檔案中,package的名稱需要和JAVA檔案中包的名稱相同,activity 的名稱必須和JAVA檔案中JAVA類的名稱相同,JAVA檔案的檔案名稱也必須和其中類的名稱相同。
  而那個android:label的名字既是應用程式在菜單中的名字,也是應用程式啟動後的標題。

HelloActivity.java
這是JAVA類檔案,這個檔案的路徑表示在Andorid的JAVA包的結構中的位置,這個包的使用方式為com.example.android.helloactivity。

package com.example.android.helloactivity;
import android.app.Activity;               
import android.os.Bundle;                  
public class HelloActivity extends Activity {
    public HelloActivity() {
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hello_activity);
    }
}

AndroidManifest.xml和*.JAVA的名稱需要匹配(這裡的HelloActivity.java和HelloActivity),否則是找不到JAVA類的。

  程式編譯完成後,將產生apk包,將其放置在system/app中即可。除了使用介面啟動之外,還可以在QEMU模擬器的啟動介面中,使用如下的方式啟動:
am start -n com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity

事實上,啟動的方法和工程描述檔案中包的名稱和類的名稱有關。

幾個注意點:
  1、應用程式檔案夾的名稱並無實際的影響
  2、Android.mk的LOCAL_PACKAGE_NAME,決定APK包的名稱;
  3、AndroidManifest.xml中需要包含包的名稱和activity類的名稱,並需要和JAVA檔案中對應;
  4、AndroidManifest.xml中application android:label的名稱既是應用程式在介面中的名稱,也是啟動後的標題

本文轉自www.35java.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.