Di động cho mọi người: Giới

thiệu sơ lược về Android

Khảo sát môi trường lập trình trên Android và xây dựng ứng dụng đầu tiên!

Các nền tảng di động rất phong phú với nhiều triển vọng, Android là một nền tảng

khả thi và thú vị cho các nhà phát triển. Loạt bài mới này bắt đầu với một giới

thiệu về Android được thiết kế đặc biệt cho các nhà phát triển Java™ chỉ mới bắt

đầu với lập trình cho điện thoại di động. Tìm hiểu về hệ thống versioning ba lớp

của Android (và tìm hiểu lý do tại sao nó quan trọng), sau đó thiết lập môi trường

phát triển và xây dựng ứng dụng Android đầu tiên.

Giới thiệu

Về loạt bài này

Sự gia tăng gần đây trong việc sử dụng công nghệ điện thoại di động thật đáng

kinh ngạc ngay cả đối với những người hoạt động trong lĩnh vực công nghiệp này.

Giám đốc điều hành của Apple Tim Cook đã tổng kết những cảm nhận trong một

cuộc phỏng vấn vào tháng 9/2012, như ông đã thảo luận thành công của Apple với

iPad. Bán 67 triệu iPad trong hai năm ngắn ngủi là điều đáng chú ý nhất. Tim Cook

đưa ra con số đó vào bối cảnh lịch sử khi ông lưu ý rằng "chúng tôi đã phải mất 24

năm để bán máy tính Mac, năm năm đối máy nghe nhạc iPod và hơn ba năm đối

với iPhone mới có thể đạt được con số đó." (Xem phần Tài nguyên.)

Nếu iOS đang làm rất tốt thì sau đó Android, nền tảng lấy Java làm trung tâm,

cũng đã giữ tốc độ tăng trưởng. Theo một tuyên bố gần đây của Google, 500 triệu

thiết bị Android được kích hoạt kể từ khi Android được chính thức phát hành trong

năm 2008, và 1,3 triệu thiết bị mới được kích hoạt mỗi ngày. Theo báo cáo, trên

iTunes App Store của Apple và Google Play liệt kê ít nhất 1.400.000 ứng dụng và

hơn 60,000,000,000 lượt tải ứng dụng. (Xem phần Tài nguyên.)

Tất cả những thiết bị di động được kích hoạt có nghĩa là có nhiều cơ hội mới cho

doanh số bán ứng dụng và thị trường ứng dụng cho điện thoại di động cũng được

phát triển. Đối với các nhà phát triển, những người muốn xây dựng các ứng dụng

di động một cách nhanh chóng thì Android là một môi trường tuyệt vời để bắt đầu.

Nếu bạn có thể lập trình bằng Java và các ngôn ngữ JVM khác, thì bạn chỉ cần tập

trung vào việc nghiên cứu cách thức xây dựng ứng dụng và triển khai ứng dụng từ

đó. Tính linh hoạt của Android có nghĩa là bạn có thể dễ dàng áp dụng và thử

nghiệm với các công nghệ mới như HTML5 và PhoneGap. Và nền tảng có mặt

khắp nơi — cùng với Google Play — đảm bảo rằng các ứng dụng của bạn sản xuất

có thể được chia sẻ rộng rãi.

Bài viết đầu tiên này trong loạt bài mới Di động cho mọi người là một giới thiệu

sơ lược về Android. Bắt đầu với tổng quan về hệ thống các phiên bản của Android,

sau đó thiết lập một môi trường phát triển và bắt đầu xây dựng ứng dụng đầu tiên.

Khái quát về Android

Thiết bị Android được phân phối đang có tốc độ tăng trưởng nhanh hơn bất kỳ nền

tảng di động khác, điều đó giúp Android trở thành một sự lựa chọn tuyệt vời trong

hành trình phát triển ứng dụng trên điện thoại di động, đặc biệt là nếu bạn là một

nhà phát triển Java. Một nhược điểm lớn của ứng dụng Android là sự phân mảnh,

trong đó trình bày những thách thức đáng kể cho các ứng dụng thử nghiệm. Thực

tế cho thấy là hầu hết các nhà phát triển ứng dụng gần như không thể kiểm tra một

ứng dụng cho mọi thiết bị Android cho đến các phiên bản hệ điều hành. (Trong

thực tế, làm như vậy theo một cách hiệu quả kinh tế chính là sự phát triển của

ngành công nghiệp dịch vụ.) Phần sau của bài viết sẽ nhìn vào các vấn đề kỹ thuật

liên quan đến việc xuất ra nhiều phiên bản Android, cộng với các công cụ dựa trên

Java để thử nghiệm các ứng dụng Android trên điện thoại di động. Bây giờ, chúng

ta hãy cùng khảo sát qua các phiên bản Android để bạn có thể hiểu và phát triển

ứng dụng trên nền tảng này.

Các phiên bản Android

Trong khi các số phiên bản của Android phiên bản hệ điều hành tuần tự là —1.6,

2.1, 4.2, và v.v.... Các bản phát hành cũng được đặt tên tương tự như các mặt hàng

khác nhau trong một thực đơn tráng miệng hảo hạng: Donut, Eclair, và Jelly Bean.

Khi mọi người ám chỉ Jelly Bean có nghĩa là phiên bản Android 4.2. Phiên bản

Android cũng được mô tả ở cấp độ API, bởi số nguyên tăng dần theo trình tự. Vì

vậy, Android API ở mức 17 đề cập đến Android phiên bản 4.2, còn được gọi là

Jelly Bean.

Không phải chỉ mình bạn nghĩ điều này là không rõ ràng đâu. Tuy vậy, việc hiểu rõ

là rất quan trọng bởi vì ba phương án đặt phiên bản được dùng lẫn lộn.

Hầu hết các nhà phát triển Java phải đảo ngược suy nghĩ cơ bản của họ khi nói đến

việc hỗ trợ các phiên bản Android khác nhau. Nền tảng Java đã nổi danh chủ yếu

như một công nghệ phía máy chủ, nơi mà các giao tiếp với người dùng là thường là

một trang web. Nếu các trang web có thể xem được, độc giả của các trang web đó

không quan tâm phiên bản Java mà ứng dụng của bạn đang chạy trên đó. Tuy

nhiên, với Android, mã nguồn các ứng dụng của bạn lại thực sự an toàn khi chạy

trên các thiết bị mà bạn không có khả năng kiểm soát..

Nhiều người tiêu dùng tiềm năng nâng cấp ứng dụng của bạn lên phiên bản mới

hơn cùng với phiên bản của hệ điều hành Android khi điện thoại cũ của họ không

được sử dụng nữa. Quyết định của bạn trong đó hệ điều hành Android hỗ trợ là rất

quan trọng. Trong khi phiên bản mới nhất của Android là 4.2, khoảng một nửa số

thiết bị Android vẫn hỗ trợ Android 2.3.x. Một ứng dụng được viết để nhằm mục

tiêu cho thiết bị chạy Android 3.1 không thể chạy trên phiên bản mới hơn như 4.2,

và cũng không chạy trên phiên bản trước đó như 2.3. Vì vậy, nó là lý do, nếu bạn

muốn có một phân phối rộng hơn, sự lựa chọn của bạn tốt hơn là hãy nhắm mục

tiêu đến một phiên bản cũ của hệ điều hành.

Một nhược điểm của việc nhằm vào mục tiêu lớn hơn và nền tảng phân phối rộng

rãi hơn là phiên bản mới hơn luôn luôn có các tính năng mới mà bạn muốn áp dụng

cho ứng dụng của mình. Nếu bạn là người may mắn, nhóm phát triển Android sẽ

phát hành thư viện tương thích để bạn có thể sử dụng.

Chạy ứng dụng Android với Eclipse ADT

Như phần đầu tiên giới thiệu tóm tắt về Android, tôi giúp bạn tạo một ứng dụng

Android đơn giản càng nhanh càng tốt. Bạn sẽ sử dụng Android 4.2 và một plugin

mà mọi người yêu thích, được gọi là Công cụ phát triển Android trên Eclipse

(Eclipse Android Development Tools - ADT): Một ứng dụng Hello World dựa trên

ngôn ngữ Java.

Lựa chọn hai cách để thiết lập môi trường phát triển cho Android. Các nhà phát

triển nếu cảm thấy mới khi tiếp cận với Eclipse và Android thì có thể bắt đầu bằng

cách tải về gói ADT (Android Developer Tools). Gói ADT kết hợp với Android

SDK và một phiên bản của Eclipse có các plugin ADT đã được cài đặt. Gói này là

cách nhanh chóng để bắt đầu dễ dàng với Android.

Nếu Eclipse được cài đặt và thiết lập sẵn trên máy tính của bạn, thì bạn có thể tự

tải về và cài đặt Android SDK. Cơ sở Android SDK có chứa các công cụ hệ thống

cấp để tạo điều kiện phát triển với Android. Tuy nhiên, nó thiếu các thư viện

Android thực tế được yêu cầu để phát triển cho một phiên bản Android cụ thể. Sau

khi bạn tải về cơ sở Android SDK cho hệ điều hành của bạn, hãy vào thư mục cài

đặt các công cụ SDK và chạy câu lệnh như Liệt kê 1.

Liệt kê 1. Khởi động Android SDK Manager

~/Development/tools/android/android-sdk-mac_x86/tools$>./android

Câu lệnh này sẽ kích hoạt Android SDK Manager, sẵn sàng cho bạn tải về các

phiên bản khác nhau và các thư viện cho Android và tạo ra các môi trường giả lập

hoặc các thiết thiết bị ảo. Android SDK Manager mở ra một cửa sổ với một danh

sách lớn các tùy chọn để tải về, như trong Hình 1.

Hình 1. SDK Manager

Trong các lựa chọn bên trái, bạn hãy chọn Tools và sau đó chọn Android 4.2 (API

17). Thư mục đó sẽ hiển thị một số tùy chọn. Bạn hãy chọn SDK Platform và file

ảnh ARM EABI v7a System, như trong Hình 2.

Hình 2. Các lựa chọn trong SDK Manager

Bây giờ bạn hãy nhấn nút Install packages và đồng ý với các điều khoản cần thiết;

sau đó để trình quản lý tự động hoàn tất công việc của nó.

Tạo thiết bị giả lập

Tiếp đến, ta hãy tạo một nền tảng giả lập, để có thể chạy thiết bị ảo trên đó và sau

đó bạn có thể chạy ứng dụng của mình. Các thiết bị giả lập phải dành riêng cho

phiên bản Android cụ thể, vậy ta hãy tạo một nền tảng giả lập chạy Android phiên

bản 4.2.

Khởi động SDK manager của bạn một lần nữa nếu bạn đã đóng nó. Nếu các công

cụ SDK Android hoặc các công cụ nền tảng được cập nhật, ta hãy khởi động lại

SDK Manager. Trong thanh thực đơn menu của SDK Manager, bạn hãy chọn

Tools > Manage AVDs để mở một hộp thoại Android Virtual Device Manager

(Trình quản lý thiết bị Android ảo), như Hình 3.

Hình 3. Android Virtual Device Manager

Hộp thoại này liệt kê các giả lập có trên máy tính của bạn. Danh sách giả lập sẽ

không hiển thị thiết bị nào cho đến khi bạn tạo ra một thiết bị mới. Hãy nhấn New

để mở hộp thoại Create a new Android Virtual Device (AVD) (Tạo mới một thiết

bị Android ảo) và bạn có thể định nghĩa mới một giả lập. Trong danh sách drop-

down Target, ta chọn Android version 4.2. Trong mục AVD Name, bạn hãy đặt

tên cho giả lập — tôi sẽ đặt là Android_4.2. Khi bạn sẵn sàng để thử nghiệm ứng

dụng, hãy sử dụng tên này để khởi động giả lập từ dòng lệnh.

Hình 4. Tạo mới một thiết bị Android ảo

Trong Hình 4, bạn thấy có một vài tùy chọn cho AVDs, bao gồm loại thiết bị, các

thiết lập camera, bộ nhớ, và khả năng lưu trữ. Trong trường hợp này, tôi đã chọn

Galaxy Nexus, thiết lập cho nó một thẻ nhớ SD card với 200 MB. Cuối cùng, tôi

chọn tùy chọn Uuse Host GPU (Sử dụng card màn hình thông qua máy tính), để

đạt được hiệu năng cao của thể giả lập này.

Nhấn OK để xem thiết bị ảo mới của bạn được liệt kê trong hộp thoại AVD. Chọn

nó và nhấn Start để mở một hộp thoại với các tùy chọn khởi động. Bây giờ, hãy

giữ các thiết lập mặc định và nhấn Launch. Giả lập này cần một khoảng thời gian

để khởi động, bạn nên đi uống một tách café, hay kiểm tra Facebook, hay cập nhật

Twitter trong lúc chờ đợi.

Hình 5. Một thiết bị Android mới!

Sau một vài phút, một thiết bị mô phỏng (tương tự Hình 5) hiển thị trên màn hình

chủ của bạn, có nghĩa là bạn đã có đầy đủ công cụ để bắt đầu! Bạn đã sẵn sàng để

bắt đầu xây dựng các ứng dụng Android 4.2.

Thiết lập Eclipse ADT

Nếu bạn đã cài đặt sẵn Eclipse rồi thì bạn phải thêm vào plugin Công cụ phát triển

Android (ADT) trước khi bắt đầu.

Trong trình đơn menu của Eclipse, bạn hãy mở Help > Find New Software. Chọn

Add và thêm vào đường dẫn URL cho Plugin ADT: https://dl-

ssl.google.com/android/eclipse/ (Xem Hình 6).

Hình 6. Thêm vào kho plugin ADT

Sau khi tải plugin, bạn hãy làm theo hướng dẫn để cài đặt nó. Cấu hình các plugin

ADT sử dụng SDK mà bạn đã cài đặt. Bây giờ dự án của bạn xây dựng trên nền

tảng Android 4.2 và sử dụng cấu hình giả lập của bạn.

Ứng dụng Android cơ bản

Bây giờ bạn đã có một ứng dụng Hello World cơ bản tương thích bất kỳ thiết bị

Android 4.2. Cuối cùng, bạn muốn tùy chỉnh ứng dụng đó và thêm các chức năng

thú vị hơn. Còn bây giờ, tôi muốn phân tích qua một ứng dụng Android.

Chuyên JVM của Android

Hãy quay trở lại với Eclipse IDEE. Trong thư mục src trong dự án của bạn, tìm đến

file .java duy nhất. Nếu bạn giữ tất cả các giá trị mặc định, tập tin này được đặt tên

là MainActivity. Các lớp Activity của một ứng dụng di động Android, tương tự

như servlet cho các ứng dụng Java phía máy chủ. Mỗi vòng đời của Activity giống

như vòng đời của một Java applet (nếu bạn còn nhớ về Java applet).

Ứng dụng Hello World là cơ bản, vì vập Activity (hoạt động) của nó cũng rất đơn

giản. Đầu tiên, lớp kế thừa từ lớp Activity của Android. Trỏ vào các Activities

thông qua phương thức onCreate, được bắt đầu bởi nền tảng này khi ứng dụng của

bạn được tạo ra. Phương thức quan trọng trong phương pháp đó là gọi

setContentView. Liệt kê 3 cho thấy lớp MainActivity mặc định.

Liệt kê 3. MainActivity

package com.example.hello;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

}

Trong Liệt kê 3, hàm setContentView hiển thị giao diện layout activity_main, đó là

tên của layout mà bạn đã thấy trong Eclipse khi lần đầu tiên bạn mở dự án. Tên này

tương ứng với các tập tin activity_main.xml có trong thư mục res/layout. Mở tập

tin này để xem ứng dụng của bạn dưới dạng đồ họa. Trong tab dưới bên trái của

giao diện là một lựa chọn để xem các tập tin XML thô. Kích vào tùy chọn để xem

các tập tin thô, trông giống như Liệt kê 4.

Liệt kê 4. Một khai báo giao diện layout thô

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="@string/hello_world" />

Các Android Views được định nghĩa trong các file XML. Mỗi View có một giao

diện layout mà bạn có thể thêm vào các widgets như buttons hay text fields. Hiện

tại, các ứng dụng mẫu có RelativeLayout với một widget: một TextView. Nếu bạn

nhìn kỹ vào widget, bạn sẽ thấy một dòng mã được thiết lập để chỉ tới:

@string/hello_world.

Biến (variable) là một con trỏ đến một chuỗi giá trị thực, mà bạn có thể tìm thấy

trong file res/values/strings.xml. Hãy mở file này ra. Để xem file XML thô, hãy

kích vào tab strings.xml ở vùng dưới bên trái.

Liệt kê 5. File strings.xml

Hello 4.2

Hello world!

Settings

Chuỗi thứ hai được định nghĩa trong Liệt kê 5 liên kết biến hello_world với chuỗi

Hello World!.

Tập tin Android manifest

Bây giờ bạn đã thấy ba yếu tố quan trọng của một ứng dụng Android được liên kết

với nhau: Activity, Layout, và các tập tin Resource (Tài nguyên). Khi ứng dụng

của bạn khởi động, hệ điều hành Android gọi phương thức onCreate của

MainActivity. Phương thức onCreate sau đó tải lên giao diện layout, và layout lấy

một số giá trị từ một tập tin tài nguyên XML. Trong trường hợp này, kết quả là một

giao diện người dùng đơn giản với dòng chữ "Hello World!"

Nhưng làm cách nào mà thiết bị biết một Activity cần gọi? Đó là lúc cần tới file

AndroidManifest.xml. Hãy xem file này trong thư mục gốc trong dự án của bạn.

Kích vào nó và Eclipse load một giao diện tùy chỉnh tiện lợi với một vài tab ở góc

dưới bên trái của giao diện. Nhấp vào tab có nhãn AndroidManifest.xml để hiển thị

các dòng XML thô như trong Liệt kê 6.

Liệt kê 6. File AndroidManifest.xml

package="com.example.hello"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="17" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="com.example.hello.MainActivity"

android:label="@string/app_name" >

Mục đích của tập tin này là để giải thích ứng dụng của bạn với một thiết bị cơ bản.

Nó bao gồm một khối XML được gọi là application, nó giúp xác định các activity.

MainActivity của bạn được tham chiếu và một action (hành động) được xác định

cùng với một category. action sẽ nói cho thiết bị biết Activity cần khởi động.

Trong trường hợp này, action mô tả những Activity của bạn là MAIN.

Các khai báo quan trọng khác trong tập tin AndroidManifest.xml bao gồm các

phần uses-sdk, trong đó nói rằng phiên bản min (nhỏ nhất) là 8 (có nghĩa là

Android 2.2.x) và Target là 17, còn được gọi là Android 4.2. Tôi sẽ giải thích chi

tiết trong một bài viết sau. Còn hiện tại, tôi có đủ điều kiện để nói rằng nền tảng

Android cung cấp các thư viện tương thích với các phiên bản trước đó..

Kết luận

Ứng dụng Android đầu tiên là một khởi đầu tốt. Trong quá trình này, bạn đã học

được một số điều quan trọng về Android — và phát triển ứng dụng cho điện thoại

di động nói chung. Bạn đã cài đặt Android SDK, tải về phiên bản Android 4.2, và

tạo ra một AVD (hay trình giả lập) để mô phỏng các hoạt động của ứng dụng của

bạn trên một thiết bị. Nếu bạn sử dụng Eclipse, IDE của bạn bây giờ để cấu hình,

xây dựng và triển khai các ứng dụng Android cho AVD thì bạn có thể lựa chọn cho

phù hợp. Tất cả các thiết lập này là cần thiết để có thể thực hiện được bất cứ điều

gì với Android.

Bạn cũng đã thấy cách mà một ứng dụng Android đơn giản được cấu thành, với

các lớp Activity đảm nhiệm hầu hết các công việc trong khi AndroidManifest.xml

định nghĩa cho các thiết bị cơ bản. Và bạn đã thấy kết quả: một ứng dụng Hello

World đơn giản, chỉ cần chờ đợi để được tùy chỉnh.

Lần tới chúng ta sẽ đi sâu hơn với Android. Trong khi chờ đợi, tôi khuyên bạn nên

làm quen và sử dụng với các thiết lập ứng dụng mà bạn có cho đến giờ. Hãy thư

thêm một số widget hoặc thay đổi các giá trị của các khía cạnh trong các tập tin

XML của bạn, nếu bạn muốn tạo một ứng dụng Hello World mới không theo mặc

định.