1. 程式人生 > >從零開始寫第一個Android應用程式

從零開始寫第一個Android應用程式

學習Android準備知識

安卓四層系統構成:

  • 第一層:最底層 Linux層
  • 第二層:函式庫層 由C或者C++寫
  • 第三層:Application FrameWork 應用框架層
  • 第四層:最上層 應用層

在很久以前,安卓還是用的jvm虛擬機器,但是好景不長,賺了錢的google因為版權問題被sun公司告了。

sun公司提出和解的條件就是每年給他在這個專案上10%的收益。這怎麼能夠行呢??google每年都在這個專案上都會有很大一筆收益。就這樣看著這麼多錢分給sun怎麼行???

於是,google獨立開發了另外一個虛擬機器,名字叫做dvm (Dalvik vm,Dalvik虛擬機器)。

JVM與dvm的區別:

JVM:

  • 編譯後的檔案格式:.java->.class->.jar
  • 基於的架構: 基於棧的架構

dvm:

  • 編譯後的檔案格式:.java->.class->.dex->.odex
  • 基於的架構:基於暫存器的架構(基於暫存器的架構明顯比基於棧的架構快,暫存器是cup上的一個高速儲存部件)

但是,就算這樣google還是敗訴了,因為dvm上用了8行左右的java程式碼。

ART模式

  • ART是Android Runtime的簡稱。

學習安卓不得不說的就是ART模式,這可是能夠和IOS抗衡的一個基石。

它與傳統Dalvik模式的區別:

Dalvik模式:

  • 在4.4以前安卓應用程式都在Dalvik模式的虛擬機器上面執行。這種編譯模式是還要依靠一個編譯器來實現與應用程式溝通。
  • 應用程式每次執行時都需要將程式內的程式碼轉換為機器碼才能夠執行。
  • 這種無形中附加的一道手續就加快了耗電較快,佔用記憶體較大,就算高效能手機用久了也會出現卡頓。

ART模式:

  • 相對於ART模式,就很好的解決了這個問題。在安裝應用程式時,自動對程式程式碼進行了預讀取編譯,讓程式內的程式碼直接編譯成機器語言,免去了Dalvik模式的要時時轉換程式碼,實現了高效率,省電,佔用更低的系統記憶體,手機執行流暢。
  • 但是凡事都有兩面性,ART解決了該問題的同時,也會有佔用略高的儲存空間,注意是儲存空間,而不是執行記憶體,安裝程式時要相對普通Dalvik模式要長一些時間來實現預編譯。

安裝Android程式設計軟體:

這裡筆者用的最古老的Android程式設計軟體,eclipse(下載地址),很多人都說google已經出了自己的親兒子了Android Studio。但是由於筆者的老師用的是eclipse,所以這也就沒有辦法了。後續我會更新怎樣安裝Android Studio的相關文章。

安裝方法:

  • 直接下載這個zip檔案,直接解壓並且安裝好jdk就能夠使用。

這裡說一下重要的整合環境檔案:

在sdk->platform-tools中

  • dx.bat是把所有.class檔案編譯成.dex檔案的工具
  • aapt.exe(Android Application Package tools安卓應用打包工具)
  • adb.exe(Android Debug Bridge 安卓除錯橋,能夠在電腦上對手機進行應用的安裝解除安裝等)

在sdk->platform中

  • 存放的都是一些安卓平臺的版本,17版本是安卓4.2

建立第一個安卓應用程式Hello World

  • 右鍵點選建立一個安卓應用程式:

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

接下來一路Next!!

接下來就是執行!!

介紹安卓應用程式目錄結構:

繼第一個安卓應用程式之後,我們來了解一下安卓的工程目錄結構:

  • bin:編譯之後產生,內含apk
  • src:存原始碼
  • gen:在gen下面有一個非常重要的檔案就是R.java檔案,這個檔案相當於一個資源字典,但是這個資源字典只能夠查到res中的資源,卻不能夠查到assets中的檔案
  • assets:專業名詞叫做資產目錄,這裡存一些音訊視訊的資原始檔或者一些xml檔案等,基本上很多東西都可以放。
  • libs這裡面放一些額外的jar包。
  • res:
    res是放資源的目錄,這裡面主要放圖片資源(螢幕適配用的),佈局資源,字串等。
    下面講解res下面的一些儲存目錄:
    drawable:放圖片資源,你會發現有很多drawable開頭的資料夾,這些資料夾是放不同圖片做螢幕適配用的。
    layout:裡面放一些佈局檔案,通常是xml型別的檔案。
    menu:menu就對應主選單鍵,能夠配置主選單的檔案。
    values:values放一些字串、顏色、styles。但是具體的values開頭的資料夾也有很多,要想加字串就加到第一個values中就行了。

AndroidManifest.xml:在所有的資料夾後面有一個AndroidManifest.xml檔案,這個檔案的重要性和我們JavaWeb中的web.xml差不多,AndroidManifest.xml一般配置四大元件、訪問許可權等整體屬性。專業名稱叫做清單檔案。

那麼既然AndroidManifest.xml如此重要就看看AndroidManifest.xml的一些內容吧。

首先從檔案的開始你會看到:

android:versionCode:這個是版本的版本。這個字串是不會顯示給使用者的一般是整數數值。
android:versionName:是對當前版本的描述。會被提取出來顯示給使用者。

android:minSdkVersion:允許最低的執行環境是多少,這裡的值就是我們建立專案時設定的最低執行環境的值。
android:targetSdkVersion:目標執行環境,我的理解就是,targetSdkVersion是,如果這個版本還沒有出來就是可以設定的,到了這個版本出來的時候就可以選擇目標版本來執行你的應用程式。但是你也不能夠盲目的設定。因為如果這個版本取消了某些類,可能你的應用程式就報廢了。一般建議就設定到最新版本之後包括最新版本就行了。

接下來的標籤application代表當前的應用。

在application標籤裡面有一些屬性。
android:allowBackup代表是否可以備份應用程式的資料。一般我建議涉及很機密的應用程式不要設定這個值為true,因為如果可以進行備份了。那麼如果其他人獲取到了我們的備份資料,別人就可以在其它安卓裝置上或者安卓虛擬機器上邊安裝同款應用,並且同步這些資料到應用就可以檢視你的聊天記錄,或者關於金融方面的一些東西。因為這個時候你的應用狀態被同步後就相當於被備份的時候。

android:icon:是指應用程式的圖示。
android:label是指應用程式的名稱。
android:theme代表應用程式主題的意思。

OK!!!

相關推薦

開始一個Android應用程式

學習Android準備知識 安卓四層系統構成: 第一層:最底層 Linux層 第二層:函式庫層 由C或者C++寫 第三層:Application FrameWork 應用框架層 第四層:最上層 應用層 在很久以前,安卓還是用的jvm虛擬機器,但是好景不

開始linux字元裝置驅動程式(一)(基於友善之臂tiny4412開發板)

從這篇博文開始,我將開始手把手教會大家寫linux裝置驅動程式這是開篇,如何來寫第一個字元裝置驅動程式。首先,寫一個最簡單的字元裝置驅動程式需要什麼?或者說我們需要了解什麼?1、每一個字元裝置至少需要有一個裝置號2、裝置號 = 主裝置號 + 次裝置號3、同一類裝置的主裝置號一

個人安卓學習筆記---一個Android應用程式

今天是學習Android的第二天,昨天我們主要學習瞭如何配置Android開發環境和第一個Android程式,HELLOWORLD。但是並沒有解釋清楚,我們現在來看一下,適用Eclipse開發Android應用大致需要的步驟: 1.建立1個Android專案 2.在XML佈局

用Eclipse開發一個Android應用程式HelloWorld

序簡單除錯執行 一. AVD的建立 AVD 就是指Android 模擬器 1. 通過Eclipse選單【Window】->【Android SDK and AVD Manager】或者 Android Icon開啟 Android SDK and AVD Manager, 選擇左邊第一項 Virtua

一起學習造輪子(三):開始一個React-Redux

導致 href dispatch 判斷 som render connect mis 回調 本文是一起學習造輪子系列的第三篇,本篇我們將從零開始寫一個React-Redux,本系列文章將會選取一些前端比較經典的輪子進行源碼分析,並且從零開始逐步實現,本系列將會學習Prom

開始一個Spark Structured Streaming程式來統計單詞個數

本文將從零開始寫一個Spark Structured Streaming程式來統計單詞的個數。單詞的來源是socket,讀者也可以換成kafka,計算的結果輸出到控制檯,讀者也可以改成輸出到kafka的某個topic。 準備環境: JDK和Scala安裝,並配置好環境變數JAVA_H

一步一步教你開始C語言連結串列---構建一個連結串列

為什麼要學習連結串列? 連結串列主要有以下幾大特性: 1、解決陣列無法儲存多種資料型別的問題。 2、解決陣列中,元素個數無法改變的限制(C99的變長陣列,C++也有變長陣列可以實現)。 3、陣列移動元素的過程中,要對元素進行大範圍的移動,很耗時間,效率也不高。

C# 開始 SharpDx 應用 畫三角

在當前的畫面都是使用三角形,在開始就告訴大家如何畫三角,本文告訴大家如何用畫素著色器畫 本文是 SharpDX 系列部落格,更多部落格請點選SharpDX 系列 頂點 為了建立三角形,需要使用頂點。頂點就是在 3D 空間的點。通過頂點可以新增資料,很多

教你開始一個雜湊表--導讀

  雜湊表是一個可以提供快速實現關聯陣列的資料結構。“雜湊”一詞會讓人產生困惑,下面我做了個總結。   雜湊表由一系列的桶組成,每一個桶儲存一個鍵值對。為了能夠確定一個鍵值對應該儲存在哪個桶裡,關鍵字要傳遞給雜湊函式。雜湊函式返回一個指明桶陣列索引的整數。當我們想要查詢一個鍵值對時,我們對關

教你開始一個雜湊表--雜湊表結構

  我們的鍵-值對(items),每一個都會被儲存在結構體中: // hash_table.h typedef struct { char* key; char* value; } ht_item;   我們的雜湊表儲存了一組鍵值對的指標,以及雜湊表大小的一些細節和

教你開始一個雜湊表--雜湊衝突

  雜湊函式把一個無窮大的輸入集合對映到一個有限大小的輸出集合。不同的關鍵字輸入會被對映到同一個陣列下標,這就導致了桶的衝突。雜湊表必須實現解決衝突的方法。   我們的雜湊表將使用開放地址法和再雜湊法。在桶索引衝突後,再雜湊法會使用兩個雜湊函式來計算鍵值對將要儲存的桶索引值。   有關其他雜

教你開始一個雜湊表--雜湊函式

   在這一節,我們來編寫雜湊函式。 我們選擇的雜湊函式應該具有(以下特性): 把字串作為輸入,返回0到m(我們設計的桶陣列的長度)的數字; 對於一組平均的輸入返回分佈比較均勻的桶索引。如果我們的雜湊函式不是均勻分佈的,它可將會把較多的一些鍵值對放在某幾個桶中。這將會導致更

教你開始一個雜湊表--附錄

附錄:其他的衝突處理方案 常見的兩種雜湊衝突解決方案如下: 連結串列法 開放定址法 連結串列法 分離連結串列法中,每一個桶包含一個連結表。當鍵值對的鍵衝突時,鍵值對會被加入到這個列表中。它支援的方法如下: 插入: 計算關鍵字的雜湊值來查詢桶的下表索引。

Qt深入淺出(一) 開始Qt應用

1 Qt簡單介紹1.1 什麼是Qt​ Qt是1991年由奇趣科技開發的跨平臺C++圖形使用者介面應用程式開發框架。它既可以開發GUI(Graphical User Interface)程式,也可用於開發非GUI程式,比如控制檯程式。與windows上面的MFC是同一類東西。它

基於Bmob開始一個部落格小程式

實現以下技能點 1、整合Bmob小程式SDK作為資料儲存 2、wemark解析markdown文字 3、列表頁佈局與上拉無限載入 實現的效果 一、建立Bmob應用 進入Bmob官網:http://bmob.cn/,註冊一個賬號,免費的賬號可以建立8個子應用,每個應用單表列數是20列,如要購買付費,可以分

一個APP的誕生——開始設計你的手機應用》讀後感,電子書百度網盤PDF下載

一開始看到書名,還以為是講APP程式開發的,所以拿來看看,沒想到這本書是著重“設計”。全書內容以設計為主,UI介面設計、EI體驗設計、互動/視覺/服務等,雖然提到了開發實現,但是基本上跟APP開發也沒啥關係。從一個做過產品的人的角度上講,這本書的內容可以參考,但是又感覺這本書

開始一個npm包,一鍵生成react元件(偷懶==提高效率)

前言 最近寫專案開發新模組的時候,每次寫新模組的時候需要建立一個元件的時候(包含元件css,index.js,元件js),就只能會拷貝其他元件修改名稱 ,但是寫了1-2個後發現效率太低了,而且極容易出錯,所以自己寫一個npm包來減少工作量,下面就一步一步來建立

Electron: 開始一個記事本app

模板 發現 when 不同 return body func -a 自動生成 Electron介紹 簡單來說,Electron就是可以讓你用Javascript、HTML、CSS來編寫運行於Windows、macOS、Linux系統之上的桌面應用的庫。本文的目的是通過使用

開始一個部落格 day1

近來忙完公司專案,在大佬的建議下,開始寫點部落格,記錄自己的成長。 所以,就先從寫一個部落格開始吧~ 因為我是一個後臺開發人員,雖然偶爾接觸到前端,但是短時間是真的難以做出一個頁面,所以就採用現成的頁面好了。 後端語言使用java語言,以springboot+mybatis

【區塊鏈】開始一個區塊鏈遊戲--水果機

機器環境 win10 nodev8.9.4 npm install -g truffle npm install -g ganache-cli Github地址 效果 初始化專