2011年2月28日 星期一

android-AndroidManifest.xml檔案

在每個應用程式的根目錄中,一定有一個AndroidManifest.xml檔案
manifest檔案會把應用程式的一些必要資訊記載於其中。
而這些資訊是android要執行這個應用程式所必需的資訊。

在manifest檔案裡面只可以出現下面這些element,並不能包含任何自定義的element

<action>
<activity>
<activity-alias>
<application>
<category>
<compatible-screens>
<data>
<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<path-permission>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>



在manifest檔案中,只有<manifest>與<application>是必須一定要出現的,而且只能出現一次

對於每個元素(element)來說,該元素的屬性都會以下面這樣來表示


不會
value1
這樣的形式表示

一般來說,同一個層級的element是沒有出現的順序之分的,除了<activity-alias>這個element例外。

element的屬性一般都會以android:開頭

很多的element都代表一個java的物件,像是<application>本身就是application這個物件
activities物件的element是<activity>
services物件的element是<service>
broadcast receivers物件的element是<receiver>
content providers物件的element是<provider>

如果你定義了一個service的subclass,那麼你可以在manifest裡面標明他


    
        
            
    



如果要在attribute裡面標明Resource Value的話
Resource Value的格式是
@[package:]type:name

example:



如果你是要標明theme(主題)的話,
格式是
?[package:]type:name



Android-應用程式的安裝位置

在android的平台上,從API Level 8開始,
你可以讓你的application被安裝在外部的儲存媒體上(例如:SD card)
要達成這樣的目的,你可以在manifest檔案中
明確的使用android:installLocation這個屬性

在manifest檔案中的<manifest>這個element裡面
加上android:installLocation這個attribute就可以讓你的application被安裝在外部的儲存媒體上。

 android:installLocation這個屬性的值可以有
  • preferExternal
  • auto
這兩個值

當你使用preferExternal這個值的時候,代表你要讓你的應用程式被安裝在外部的儲存媒體上

但是android系統並不一定保證你的系統會被安裝在外部媒體上。
這端看外部儲存媒體的空間是否足夠,如果不足夠,系統就會把應用程式裝在內部的位置。
如果足夠,就會安裝在外部的儲存媒體上。

2011年2月27日 星期日

Android的API Levels

在開發Android的應用程式的時候

當你要執行開發好的應用程式時

Eclipse常常要你選你要用的API Level

這個API Level到底是什麼呢?

想要一探究竟的人

可以參考Google的原版解說

以下是我看了原版解說後的翻譯與心得
------------------------------------------------------

什麼是API Level呢?


API Level是一個數字
這個數字是用來識別某個版本的Android平台所提供的framework API的修訂版本

Android平台會提供一組Framework API
應用程式可以透過這個API來跟較底層的Android系統來互動

framework API 包含以下所列的這些東西:

  • 一組核心的packages 與classes
  • 一組用來定義一個manifest檔案的XML elements與attributes
  • 一組用來定義可存取的資源的XML elements與attributes
  • 一組 Intents
  • 一組應用程式可以對系統資源做要求(request)的權限
通常來說,一個應用程式可以在level 6的android 平台上執行,那麼他也可以在level 7的android平台上來執行,因為API Level是有向下相容的特定的,也就是Level的等級往上提升
意味著有新的API被開發出來,而舊的API依然可以使用,只是舊的API會被標上deprecated。

*然而在某些數字較小的API Level版本中的一些API有可能已經被移除

通常一個新的framework API被deliver出來的時候,都會相伴的有一個API Level的數字出現
每個android platform都只會跟一個API Level相對應

Platform VersionAPI Level
Android 3.011
Android 2.3.310
Android 2.39
Android 2.28
Android 2.17
Android 2.0.16
Android 2.05
Android 1.64
Android 1.53
Android 1.1 2
Android 1.01


在你的應用程式中,可以在manifest的檔案中註明應用程式所需使用的最低sdk的version是多少,最高是多少來標明哪些版本的android platform可以支援。

在manifest檔案中的這個element就是用來標明所使用的SDK的元素。
在這個元素中提供三個attribute給開發者標明使用的SDK的版本

  • android:minSdkVersion--標明最低可以支援的sdk版本,預設是 "1"
  • android:targetSdkVersion--標明此應用程式主要是以哪個版本的API Level為目標去開發的
  • android:maxSdkVersion--標明最高所使用的API Level是此應用程式可以執行的環境。要使用這個attribute的時候,請先閱讀<uses-sdk>這個element的文件
當你的應用程式要在某個android的platform執行的時候,android platform會先檢查android:minSdkVersion與android:maxSdkVersion這兩個屬性的值(如果你有特別註明的話),android platform的API Level必須在這兩個值之間,才會開始執行你的應用程式,否則將不會執行。

基本上,你可以只在mainfest中宣告android:minSdkVersion這個屬性,而不需要宣告其他兩個屬性。

在發展你的應用程式的時候,應該考慮應用程式的向上與向下相容的可能。

最好在mainfest檔案中註明android:minSdkVersion的屬性值。

在開發的時候,可以用API Level來過濾你參考的document,找出合適的API來使用。


2011年2月25日 星期五

Android-Application Fundamentals

Androi是一個multi-user的 linux系統
對於android來說,每一個application都是不同的user

預設android的系統會給每個application一個唯一的Linux user ID
這個ID只是給系統自己使用,application本身並不知道這個ID

每個process有他自己的VM(vitual machine),所以每個application都是跟其他application有所隔離的

manifest file可以讓你declare components還有所需要的device feature。


Application Components

application components 是android application的必要建置區塊,系統可以透過這些application components來進入你的application。

在android的系統上,有四種application components

1.Activities
2.Services
3.Content providers
4.Broadcast receivers

一個activity代表一個單一個有使用者介面的screen。所以基本上一個activity就代表一個畫面。

2011年2月22日 星期二

對需求使用物件導向方法來作分析

對於要使用物件導向來對需求做分析

我們必須學會以下幾件事情

  1. 繪製出Use Case Diagram
  2. 寫Use Case 與Use Case裡面的劇情描述
  3. 繪製Activity Diagrams 與 系統循序圖(Sequence Diagrams)
  4. 精煉與加強domain model class diagram
  5. 解釋如何使用UML的圖來定義功能需求(functional requirement)

對於使用models來將需求記錄下來這件事情,將有助於你仔細思考stakeholders的處理過程與資訊的需要。