Daily Archives: 06/05/2016

Android – Tạo project Android

Một project Android sẽ chứa những file cần thiết dành cho một ứng dụng Android.

Tạo project trong Android Studio

Tạo project trong Android Studio rất đơn giản, chỉ cần vào File→New Project. Sau đó chúng ta thiết lập các thông số cho project:

  • Application Name: tên project, mình đặt là My First App
  • Company domain: đây là tên sẽ được chèn vào trước tên package
  • Package name: đây là tên package cho project, mình đặt com.phocode
  • Project location: đường dẫn đến thư mục chứa project
  • Select the form factors your app will run on: chọn Phone and Tablet
  • Minimum SDK: chọn API 8 nếu bạn đã cài phiên bản Android 2.2 (Froyo) trong SDK Manager, không thì bạn chọn API thấp nhất hiện có trong SDK Manager. Đây là phiên bản Android thấp nhất mà ứng dụng của bạn hỗ trợ.
  • Add an Activity to Mobile: chọn Empty Activity
  • Activity NameLayout Name: đặt tên file Activity là file layout, bạn có thể để mặc định

Cuối cùng nhấn Finish.

Tạo project từ dòng lệnh

Nếu bạn không cài Android Studio mà chỉ cài bộ SDK thôi thì bạn có thể tạo project từ dòng lệnh như sau:

C:\Project\Android\MyFirstApp>android create project --target android-8 --name MyFirstApp 
--path . --activity MainActivity --package com.phocode
Created directory C:\Project\Android\src\com\phocode
Added file C:\Project\Android\src\com\phocode\MainActivity.java
Created directory C:\Project\Android\res
Created directory C:\Project\Android\bin
Created directory C:\Project\Android\libs
Created directory C:\Project\Android\res\values
Added file C:\Project\Android\res\values\strings.xml
Created directory C:\Project\Android\res\layout
Added file C:\Project\Android\res\layout\main.xml
Created directory C:\Project\Android\res\drawable-hdpi
Created directory C:\Project\Android\res\drawable-mdpi
Created directory C:\Project\Android\res\drawable-ldpi
Added file C:\Project\Android\AndroidManifest.xml
Added file C:\Project\Android\build.xml
Added file C:\Project\Android\proguard-project.txt

Lệnh android create project sẽ tạo một project Android tại thư mục hiện hành trong Command Prompt. Tham số target là phiên bản SDK thấp nhất, name là tên project, path là đường dẫn đến thư mục tạo project, ở đây dấu chấm có nghĩa là đường dẫn chỉ đến thư mục hiện tại, package là tên package, activity là tên file Activity được tạo ra.

Project được tạo ra cho dù là từ Android Studio hay từ dòng lệnh cũng đều có các thư mục và file cơ bản sau đây:

bin/
libs/
res/
src/
AndroidManifest.xml  
ant.properties
build.xml
local.properties
proguard-project.txt
project.properties    

Trong đó file AndroidManifest.xml sẽ mô tả các tính chất của chương trình. Các file .java sẽ nằm trong thư mục src/. Các file tài nguyên như file XML, file ảnh… sẽ nằm trong thư mục res/. Các file apk sau khi được tạo ra sẽ nằm trong thư mục bin/. Thư mục libs/ chứa các thư viện hỗ trợ. Hai file ant.propertiesbuild.xml là các file Ant dùng cho việc biên dịch project. Cuối cùng là file local.propertiesproject.properties lưu các đặc tính của project.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.phocode" android:versionCode="1" android:versionName="1.0">
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MainActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

File AndroidManifest.xml lưu trữ các thông tin về project mà chúng ta đã tạo, như tên package, tên file Activity… Hai chuỗi @string/app_name@drawable/ic_launcher là các giá trị tài nguyên được lưu trong các file tài nguyên trong thư mục res/, chúng ta sẽ tìm hiểu sau. Thẻ <intent-filter> nằm bên trong thẻ <activity> khai báo các công việc mà Activity có thể thực hiện, trong đó có một thẻ <action> và một thẻ <category>, cả 2 thẻ này cho biết Activity này là Activity chính được chạy khi ứng dụng chạy.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MainActivity</string>
</resources>

File strings.xml nằm bên trong thư mục res/values định nghĩa các giá trị chuỗi được sử dụng trong ứng dụng. Có thể hiểu đây giống như các biến toàn cục/hằng số được định nghĩa trước vậy. Thẻ <string> sẽ định nghĩa một biến với tên nằm trong thuộc tính name. Mặc định mỗi project Android được tạo ra sẽ có một biến tên là app_name có giá trị là tên Activity mà chúng ta tạo ra.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, MainActivity" />
</LinearLayout>

File main.xml nằm trong thư mục res/layout. File này định nghĩa giao diện cho một Activity. Khi chạy ứng dụng thì giao diện này sẽ được gọi từ phương thức onCreate().

package com.phocode;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

File MainActivity.java sẽ tạo một Activity trong phương thức onCreate() như đã nói ở trên. Mặc định phương thức này sẽ thiết lập giao diện ứng dụng là file main.xml với phương thức setContentView().

Chạy chương trình từ Android Studio

Để biên dịch và chạy ứng dụng android thì chúng ta bật máy ảo lên hoặc kết nối máy thật vào máy tính thông qua cổng USB rồi bấm nút Run có biểu tượng hình tam giác màu xanh lá cây. Android Studio sẽ hiển thị một hộp thoại cho chúng ta chọn danh sách các thiết bị có thể chạy.

Lưu ý là nếu bạn chạy trên thiết bị thật thì bạn phải bật chế độ USB Debugging trên máy thật bằng cách vào Settings → General → Developer options và check vào dòng USB Debugging. Nếu máy bạn không có tùy chọn Developer options thì tức là chế độ này đã bị ẩn, bạn phải vào Settings → About phone → Software information rồi tìm đến dòng Build number và nhấp vào đó 7 lần, sau đó tùy chọn Developer options sẽ hiện ra.

Screenshot_2016-05-05-21-18-32

Chạy chương trình từ dòng lệnh

Để có thể biên dịch và chạy từ dòng lệnh thì bạn phải tải thêm trình ant tại địa chỉ http://ant.apache.org/bindownload.cgi, sau đó giải nén và thêm đường dẫn đến thư mục bin trong thư mục ant mà bạn vừa giải nén vào biến môi trường Path.

C:\Project\Android>ant debug install

Sau đó chạy lệnh ant debug install tại thư mục chứa project để dịch chương trình. Lệnh này sẽ biên dịch và tạo ra file có tên là <tên project>-debug.apk tại thư mục bin/, ở đây là file MyFirstApp-debug.apk do chúng ta đặt tên project là MyFirstApp.

C:\Project\Android>adb devices
List of devices attached
LGD325f7d0c658  device

Để chạy ứng dụng thì chúng ta tìm các máy Android hiện đang kết nối với máy tính. Hiện tại ở đây mình sử dụng máy thật để chạy, lệnh adb devices liệt kê máy mình có tên là “LGD325f7d0c658”.

C:\Project\Android>adb install -r bin/MyFirstApp-debug.apk

Lệnh adb install <tên file apk> sẽ cài file apk vào thiết bị để chạy, tham số -r cho biết nếu trên máy đã tồn tại ứng dụng rồi thì ghi đè lên. Nếu lệnh adb devices liệt kê ra nhiều thiết bị tức là hiện tại máy bạn có nhiều thiết bị android kết nối đến, thì trong lệnh adb install bạn phải chỉ ra cả tên thiết bị đó nữa bằng tham số -s phía sau lệnh adb, ví dụ adb -s "LGD325f7d0c658" install -r bin/MyFirstApp-debug.apk.

Screenshot_2016-05-06-14-35-05

Thế là xong, bạn có thể thấy project đã được cài trên máy mình và có thể nhấp vào đó để chạy.

Screenshot_2016-05-06-14-32-19

 

Android – Giới thiệu

Android là một hệ điều hành họ Linux được thiết kế để chạy trên các thiết bị di động như smartphone, máy tính bảng, smart TV, đồng hồ thông minh, nhà thông minh… Ngôn ngữ lập trình Android là một ngôn ngữ được phát triển từ Java.

Android được bắt đầu phát triển vào năm 2003 bởi một công ty ở California, sau đó công ty này được mua lại bởi Google. Từ đó Google phát triển “Dự án Android mã nguồn mở” nhằm phát triển hệ điều hành này. Android có tốc độ phát triển rất nhanh, hầu như các bản cập nhật đều được phát hành đều đặn. Mỗi phiên bản của Android lấy tên từ một loại đồ ăn ngọt, như Donut (bánh rán), Gingerbread (bánh gừng), Jelly Bean (kẹo ngọt)… Các lập trình viên Android có thể đăng các ứng dụng mà họ viết ra lên cửa hàng ứng dụng của Google có tên là Google Play và người dùng có thể tải về cài đặt và sử dụng.

Kiến trúc của hệ điều hành Android

Android được phát triển dựa trên Linux, tầng đầu tiên của kiến trúc Android. Bộ lõi của Linux chịu trách nhiệm xử lý các công việc liên quan đến quản lý tiến trình, quản lý bộ nhớ, driver, mạng…v.v

Tầng tiếp theo nằm phía trên bộ lõi của Linux là các thư viện cơ bản và bộ thư viện Android (tiếng Anh là Android runtime). Các thư viện này được viết bằng C/C++ có nhiệm vụ cung cấp các dịch vụ như lưu trữ dữ liệu, hiển thị giao diện, xử lý đa phương tiện, duyệt web… Bộ thư viện Android lại bao gồm 2 phần là máy ảo Dalvik và các thư viện Java. Dalvik là một máy ảo có nhiệm vụ chạy các chương trình viết bằng Java trên nền Android, Dalvik khác với máy ảo Java thông thường là JVM (Java Virtual Machine).

Tầng tiếp theo là application framework, đây là một tập các hàm API cung cấp các dịch vụ cho ứng dụng Android. Các hàm API này chịu trách nhiệm xử lý các tác vụ cấp cao như quản lý Activity, quản lý Notification, quản lý Resource, hiển thị View, quản lý Package… chúng ta sẽ làm việc chủ yếu với tầng này. Không những thế Android còn cung cấp sẵn một số ứng dụng thường dùng để lập trình viên có thể sử dụng hoặc tích hợp vào chương trình của mình như trình duyệt web, SMS, lịch, bản đồ, danh sách điện thoại liên lạc…v.v.

Một số khái niệm

Một chương trình Android được nén trong một file có đuôi mở rộng là .apk.

Mỗi chương trình Android chạy trong một môi trường ảo của riêng chúng.

Một Activity một thành phần trong một ứng dụng Android chịu trách nhiệm quản lý các hành động xảy ra trên một “màn hình”, ví dụ như hiển thị một màn hình, xử lý sự kiện nhấp button…v.v một Activity được kế thừa từ lớp Activity. 

Service là các chương trình chạy ngầm bên dưới hệ điều hành, thường không tương tác trực tiếp với người dùng, kế thừa từ lớp Service. 

Content Provider là các chương trình quản lý nội dung có nhiệm vụ truy xuất dữ liệu được lưu trong file, cơ sở dữ liệu SQLite hoặc lưu trên web. Được viết từ lớp ContentProvider.

Broadcast Receiver là các chương trình quản lý các thông báo từ hệ điều hành hoặc ứng dụng, được kế thừa từ lớp BroadcastReceiver. 

Các thông báo được gửi đi là một đối tượng Intent, đối tượng này lưu thông tin về các hành động được thực hiện, thường thì Intent được dùng để thực hiện các công việc như chuyển đổi qua lại giữa các Activity.

Một View là một lớp hiển thị giao diện người dùng, lớp này có nhiệm vụ vẽ giao diện và xử lý sự kiện. Từ lớp View gốc, các lớp Widget được tạo ra kế thừa từ lớp view có nhiệm vụ hiển thị các thành phần giao diện cụ thể hơn như button, check box… Ngoài lớp View còn có lớp ViewGroup tập hợp nhiều View lại để hiển thị theo một trật tự nào đó.

Mỗi ứng dụng Android đều phải có một file tên là AndroidManifest.xml trong thư mục gốc. File này cung cấp các thông tin về ứng dụng.

Cài đặt Android

Trước tiên chúng ta phải cài JDK trong máy đã, phần này bạn tự cài, ở đây phiên bản JDK mà mình sử dụng là phiên bản 1.8.0_77.

Tiếp theo chúng ta tải và cài bộ Android SDK tại địa chỉ http://developer.android.com/sdk/index.html#downloads. Ở đây phiên bản SDK mà mình sử dụng là phiên bản r24.4.1. Lưu ý trên website download có cả phần tải Android Studio, đây là một chương trình hỗ trợ phát triển ứng dụng Android một cách nhanh chóng nhưng cũng rất nặng (cả về dung lượng lẫn cấu hình), còn riêng Android SDK chỉ nặng khoảng 144 MB. Bạn cũng có thể cài Android Studio nếu muốn, ở đây mình chỉ cài bộ SDK.

Sau khi cài xong chúng ta nên thiết lập đường dẫn đến 2 thư mục tools/ và platform-tools/ trong thư mục cài đặt SDK vào biến môi trường PATH bằng cách vào: Computer → System Properties  Advanced System Properties  Enviroment Variables, một hộp thoại hiện lên, chúng ta tìm đến biến Path trong phần System Variables và thêm vào dấu chấm phẩy “;”, sau đó là đường dẫn đến thư mục tools/ rồi thêm một dấu chấm phẩy nữa, theo sau là đường dẫn đến thư mục platform-tools/. 

Sau đó chúng ta có thể chạy SDK Manager.exe (hoặc lệnh android trong Command Linecmd nếu bạn có thiết lập biến PATH) để mở trình Android SDK Manager lên. Đây là trình quản lý các phiên bản SDK cho từng phiên bản hệ điều hành và một số công cụ thường dùng. Thường thì chúng ta sẽ cài một số phiên bản API mới nhất thôi chứ không cài hết vì chúng có dung lượng rất nặng.

Capture

Android AVD

Để chạy các ứng dụng Android thì bạn phải có một chiếc máy Android như smartphone hay tablet để chạy, nhưng nếu không có thì bạn phải dùng máy ảo. Android AVD là trình quản lý máy ảo, cho phép chúng ta tạo các thiết bị Android ảo chạy trên máy tính.

Để chạy trình AVD thì chúng ta chạy file AVD Manager.exe hoặc lệnh android avd trong Command Prompt.

Capture

Sau đó bạn bấm vào nút Create để tiến hành tạo máy ảo, bạn chọn tên và các cấu hình cần thiết. Nếu bạn không rành về các thông số như thế nào thì có thể thiết lập theo hình trên.

Sau đó AVD sẽ liệt kê chiếc máy ảo mà chúng ta vừa tạo, chúng ta có thể bấm Start để chạy chiếc máy ảo trên.

Capture

Một lựa chọn thay thế khác là bạn có thể sử dụng máy ảo Genymotion vì máy ảo mặc định của Google chiếm rất nhiều tài nguyên và mất rất nhiều thời gian để khởi động. Tuy nhiên nếu được thì chúng ta nên kiếm một chiếc máy Android thật để sử dụng thì sẽ tốt hơn.