天天看點

第一行代碼,Android Go開啟旅程-我的第一行Android代碼

開啟旅程-我的第一行Android代碼

第一章

  一、Android系統架構

         1、 第一層 Linux核心層

                   這一層為Android裝置的各種硬體提供底層的驅動,如 顯示驅動、音頻驅動、電源管理、Wi-Fi驅動等。

         2、第二層 系統運作庫層

                  這一層通過一些C/C++庫來為Android系統提供了主要的特性支援。也就是說利用較底層庫,來實作Android系統。這些庫具有效率更高,更加系統化、專業化,           有商業公司維護等特點。                   同樣在這一層還有Android運作時庫(JRE),主要提供一些核心庫,能夠允許開發者使用java語言來編寫Android應用。           Android運作時庫包含Dalvik虛拟機,現在叫ART運作環境。

          3、第三層 應用架構層

                   這一層主要提供了建構應用程式時可能需要的各種API,無論是Android自帶的核心應用還是開發者自己開發的application都可以通過調用這些API來完成。

          4、第四層 應用層

                   顧名思義,就是application層。所有安裝在手機上的application都屬于這一層。

二、Android已釋出版本

                 主要就是2014年,google釋出Android 5.0版本,其中使用ART運作環境替代Dalvik虛拟機,大大提升應用的運作速度。                  目前4.0以上的系統已經占據了超過98%的Android市場佔有率,是以以後開發的程式基本隻面向4.0以上的系統。

三、Android應用開發特色

                 Android系統提供的工具/服務,可供開發者開發出優秀的程式。

         1、四大元件

                 活動(Activity)、服務(Service)、廣播接收器(Broadcast Receiver)和内容提供器(Content Provider).

                 Activity:所有在應用中能看到的東西,都是放在活動中。                  Service:在背景默默運作,即使使用者退出,Service仍然可以繼續運作。                  Broadcast Receiver:它讓應用可以接受來自各處的廣播資訊,比如電話,短信等。同樣,應用也可以由此向外發出廣播資訊。                  Content Provider:為應用程式之間共享資料提供支援。比如要讀取系統電話簿中的聯系人,就需要通過Content Provider來實作。

         2、系統控件

                 Android系統提供非常豐富的系統控件,讓我們可以輕松快速的寫出漂亮的界面。                  同樣我們可以開發專屬控件。

         3、SQLite DB

                  Android自帶SQLite DB。它是輕量級、運算速度極快的嵌入式關系型資料庫。                   支援标準SQL文法、同時可通過Android封裝好的API進行操作。

        4、地理位置定位

                移動裝置自帶GPS,配合地圖,LBS(Location Based Services)潛力無限。

四、搭建開發環境

          1、準備工具

               a、Java基礎知識

                     Java基本文法和特性                b、JDK                      包含JRE、工具集合、基礎類庫                      Ps、JDK 8以上版本                c、Android SDK                     Google提供的Android開發工具包,在開發Android程式時,需通過引入該工具包,來使用Android相關API。                d、Android Studio                     在2013年Google退出Android Studio之前,開發Android項目都是用Eclipse,安裝ADT插件之後就可以了。                随着Android Studio的發展,現在普及程度已遠超Eclipse。

         2、搭建開發環境

                  上述軟體并不需要逐個下載下傳,Google為簡化搭建開發環境,将所有工具都內建好了,到Android官網下載下傳最新版本Android Studio即可。                   Ps:我的情況并不是如此,JDK沒有內建進去,需要自己安裝并幫助Android Studio找到它。                   下載下傳位址:https://developer.android.google.cn/studio/index.html                   Ps:需要科學上網才能通路。                   相關網盤:https://pan.baidu.com/s/1nuABMDb(永久有效,URL中是數字1不是字母l)

                   下載下傳完成後,安裝時一直點選Next。其中選擇安裝元件時建議全部勾選。元件包括:Android Studio(預設選擇)、Android SDK、Android Virtual Device                     接下來會有選擇Android Studio以及Android SDK安裝位址。根據自己實際情況選擇。注意,如果更改預設位址的話,要記得安裝位置,過會會找不到Android SDK                     位置,你要幫助Android Studio找到它。

                    其它的一路Next下去就好了。

五、建立第一個Android項目

           1、建立HelloWorld項目

                   流程略

                  注意點:                               Application name表示應用名稱                               Company Domain表示公司域名,個人使用example.com                               Package name表示項目包名                               Project location表示項目代碼存放位置                               Minimun SDK一般指定API 15(Android 4.0以上)                               Activity Name:XxxXxxActivity                               Layout Name:xxx_xxx_layout                               在模拟器中選擇作業系統版本

            2、分析Android程式

                     項目結構模式預設為Android,我們調整為Project。                     現階段主要注意gradle與app                     gradle是項目自動化建構工具,相關的檔案夾暫時不分析。我們重點看app                                       app:                           build:主要包含編譯時自動生成的檔案,不重要。                           libs:項目中使用到的第三方jar包都要放到libs目錄下,放在該目錄下的jar包都會被自動添加到建構路徑裡去。                           androidTest:編寫Android Test測試用例。                           java:放置所有Java代碼的地方。                           res:項目中所有用到的圖檔、布局、字元串等資源!!資源!!!存放的位置!其下有許多子目錄,圖檔放在drwaable目錄下,布局放在layout目錄下等。為了                    相容,有時候需要同一種資源多種格式的檔案目錄,比如:mipmap-hdpi、mipmap-mdpi等。                           AndroidManifest.xml:整個Android項目的配置檔案,程式中定義的四大元件都要在這個檔案裡注冊!還可以在這個檔案中給應用程式添權重限聲明。                           test:Unit Test測試用例                           其他檔案目錄略。                                                           AndroidManifest.xml 有如下代碼:                            <activity android:name=".HelloWorldActivity">                                   <intent-filter>                                         <action android:name="android.intent.action.MAIN"/>                                         <category android:name="android.intent.category.LAUNCHER"/>                                   </intent-filter>                            </activity>                     表示對HelloWorldActivity這個活動進行注冊,未在AndroidManifest.xml中注冊的活動不能使用。其中 intent-filter裡的兩行代碼表示HelloWorldActivity活動是這個項                     目的主活動。                                           HelloWorldActivity代碼如下:                                                     public class HelloWorldActivity extends AppCompatActivity {                                                                       @Override                                      protected void onCreate(Bundle savedInsatanceState) {                                                      super.onCreate(savedInstanceState);                                                      setContentView(R.layout.hello_world_layout);                                      }                          }

                  HelloWorldActivity是繼承自AppCompatActivity的,這是一種向下相容的Activity,可以将Activity在各系統版本中增加的特性和功能最低相容到Android 2.1系統。                  Activity是Android系統提供的一個活動基類,所有的活動都直接或間接繼承自它。                  onCreate()方法時一個活動被建立時必定要執行的方法。

                 Android程式設計講究  邏輯 和 視圖 分離。在布局檔案中編寫界面,然後在活動中引入進來。

         3、項目中的資源及build.gradle檔案

                 基本文法:                                   在代碼中通過 R.string.app_name可以獲得該字元串的引用。                                   在XML中通過 @string/app_name可以獲得該字元串的引用。                                   string可以替換成drawable等等。                                   XML中定義一個時這樣做:@+string/app_name                                                     build.gradle檔案解析                                  不同于Eclipse,Android Studio采用Gradle(項目建構工具)來建構項目。它使用基于Groovy的的“領域特定語言(DSL)(求專不求全)”來聲明項目                 設定,抛棄了傳統的基于XML的各種繁瑣配置。                                                                   respositories {                                                  jcenter()                                   }                                   jcenter:代碼托管庫                                   聲明了以上配置後,可以在項目中引入jcenter上的開源項目                                   dependencies中使用classpath聲明了一個Gradle插件 com.android.tools.build:gradle:2.2.0

                                   apply plugin: ”com.android.application"                                    引入一個插件                                    com.android.application(直接運作)或者com.android.library(庫子產品)

                                   android閉包                                                 包含配置項目建構的各種屬性                                                 compileSdkVersion指定項目編譯版本                                                 buildToolsVersion指定項目建構工具的版本                                                                                      defaultConfig閉包                                                                      applicationId指定項目包名,以後更改包名都在這裡改                                                                      minSdkVersion指定項目最低相容Android系統版本                                                                      targetSdkVersion指定在該版本上已充分測試,系統會為你的應用程式氣筒一些最新的功能和特性。(到targetSdkVersion為止,超過                                                 的新特性就沒了。)                                                                      VersionCode指定項目版本号                                                                      VersionName指定項目名 

                                                 defaultTypes閉包                                                                       用于指定生成   安裝  檔案的相關配置                                                                       通常包含兩個閉包:debug和release                                                                       debug用于指定生成測試版安裝檔案的配置                                                                       release用于指定生成正式版安裝檔案的配置                                                                       debug閉包可以省略                                                                                                                                             release閉包:                                                                                   minifuEnabled用于指定是否對項目代碼進行混淆,true代表混淆,false代表不混淆                                                                                   proguardFiles用于指定混淆是使用的規則檔案,這裡指定兩個檔案,proguard-rules.txt和proguard-rules.pro                                                                                   .txt是在Android SDK目錄下,裡面是所有項目的混淆規則                                                                                   .pro是在目前項目的根目錄下,裡面可以編寫目前項目特有的混淆規則

                                                                     Android Studio直接運作項目生成的都是測試版啊安裝檔案                                      

                                     dependencies閉包:                                                 用于指定目前項目所有的依賴關系

                                                Android Studio一共有三種依賴關系:本地依賴、庫依賴、遠端依賴                                                                                                 本地依賴可以對本地的Jar包或目錄添加依賴關系                                                            compile fileTree(dir: 'libs',include:['*.jar'] 它表示将libs目錄下所有.jar檔案添加到項目的建構路徑中去                                                 庫依賴可以對項目中的庫子產品添加依賴關系                                                            compile project(':helper') 它表示将一個helper庫子產品添加到項目的建構路徑中去                                                            Ps:此處假設有一個叫helper的庫子產品                                                            庫依賴添加可以百度位址https://jingyan.baidu.com/article/4e5b3e193b96e991901e24f2.html                                                 遠端依賴可以對jcenter庫上的開源項目添加依賴關系                                                             compile ‘com.android.support:appcompat-v7:24.2.1                                                             com.android.support是域名部分                                                             appcompat-v7是組名部分                                                             24.2.1是版本号

六、日志工具

         1、Log工具類

                 Log.v() verbose                  Log.d() debug                  Log.i() info                  Log.w() warn                  Log.e() error

                 Log.x()(x代指具體方法)方法中傳入兩個參數:第一個Tag,一般傳入目前類名,主要用于對列印資訊進行過濾;第二個參數是msg,即要列印的資訊

         2、Log的優勢

                  System.out.println()雖然友善 syso + Tab就出來 但是 :日志列印不可控、列印時間不确定、不能添加過濾器、日志沒有級别區分

                  Log配合Logcat可以:                         logx + Tab 快速輸入                        過濾器                        自定義過濾器                        級别控制                       關鍵字過濾 (支援正規表達式)                 

繼續閱讀