Bài tập 3: Cách tạo Android Project và tìm hiểu cấu trúc bên trong của một Android Project

[polldaddy poll=9764234]

bài tập số 2, bạn đã biết cách tạo và sử dụng máy ảo Android cũng như DDMS.

– Trong bài tập này các bạn sẽ thực hành cách tạo Android Project và tìm hiểu các thành phần bên trong của nó:

  • Cách tạo Android Project
  • Activity, Intent, View
  • Auto gen
  • Android libs
  • Resource
  • Layout, menu, values
  • Manifest XML

– Cũng như cách chạy chương trình Android, hiểu được cơ chế vận hành của nó.

1) Cách tạo một Android Project:

Ở đây Tôi cung cấp 2 cách tạo Android Project:

Cách 1: Bạn vào Menu File/ Chọn New/ chọn Android Project (xem hình bên dưới):

3_android_Project_1

Cách 2: Bấm chuột phải vào vị trí bất kỳ trong Package Explorer / Chọn New / Chọn Android Project (xem hình bên dưới):

3_android_Project_2

Các bạn chú ý là khi một Android Project được tạo ra thì nó sẽ được lưu trữ trong Package Explorer. Một số trường hợp bạn không thể thấy được Package Explorer (do bạn lỡ tay đóng nó đi, hoặc một nguyên nhân nào đó), nếu như chưa biết cách lôi nó ra thì các bạn làm như sau:

– Vào menu Windows/ chọn Show View/ click chọn Package Explorer

– Nếu như trong Show View mà không thấy Package Explorer thì bạn nhìn mục dưới cùng có nhãn “Other…“, click vào nó thì chắc chắn bên trong sẽ có Package Explorer:

3_android_Project_3

2) Nhập thông số cho một Android Project mới:

Khi bạn chọn New Android Project thì một màn hình sẽ hiển thị ra như bên dưới:

3_android_Project_4

Mục Application Name: bạn đặt tên cho ứng dụng mà bạn mong muốn, trong ví dụ này là Tôi đặt “SampleProject

Mục Project Name : thông thường khi bạn đặt tên cho Application Name thì mục Project Name sẽ tự động cập nhật giống như vậy

Mục Package Name: bạn nên viết thường hết và phải ít nhất có 1 dấu chấm ngăn cách, ví dụ bạn có thể đặt “tranduythanh.com” nhưng không thể đặt “tranduythanh”.

Mục Minimum Required SDK : Chọn giới hạn API thấp nhất mà ứng dụng có thể cài đặt (Điện thoại đó có API phải >= Minimum Require)

Mục Target SDK : chọn API mà ứng dụng mong muốn tốt nhất có thể thực thi trên API này

Bạn cần phần biệt giữa Minimum và Target:

– Tôi muốn giải thích sơ qua chỗ này, ở trên bạn thấy Tôi chọn Minimum là API 8, và Target là API 17.  Điều này nghĩa là:+ Nếu như ứng dụng của Tôi mà được cài đặt trên điện thoại có API 17 tức là cái đích Tôi mong muốn và nó sẽ được hỗ trợ tối đa cho các đặc tính bên trong ứng dụng của Tôi (tức là cái tốt nhất)

+ Nếu như ứng dụng của Tôi cài trên điện thoại có API là 7 thì chắc là không thể vì ở đây Tôi yêu cầu Minimum là API 8

+ Nếu như ứng dụng của Tôi cài trên điện thoại có API >17 chẳng hạn, thì thông thường là sẽ được vì Version mới đa phần hỗ trợ version cũ, nhưng dĩ nhiên có thể không tốt bằng đúng cái điện thoại sử dụng API 17

– Lý do cho phần này là bởi vì đối với từng API luôn có một lỗi nào đó, các API mới ra đời để sửa vá lỗi hoặc là nâng cấp thêm một số đặc tính mới. Ví dụ như để sử chức năng Nhận Diện Khuôn Mặt có sẵn của Android thì bắt buộc phải chọn Minimum API =14 vì từ Android 4.0 mới hỗ trợ chức năng Nhận Diện Khuôn Mặt

– Sau khi chọn các thông số xong, bạn nhấn Next cho tới khi nút Finish xuất hiện (Tôi khuyên là các bạn cứ bấm Next, đừng có chỉnh sửa gì cả vì các bạn mới bắt đầu làm quen với nó. Khi nào quen rồi thì Ta sẽ quay lại chi tiết sau):

– Khi bấm Finish thì bạn quan sát Package Explorer để xem cấu trúc bên trong của ứng dụng Android:

3) Tìm hiểu cấu trúc bên trong của Ứng dụng Android:

3_android_Project_5

– Bạn cần hiểu được cấu trúc cây trong Ứng Dụng Android ở trên:

Hãy quan sát MainActivity.javaactivity_main.xml . Khi một Ứng dụng được tạo ra thì thông thường sẽ có một Activity để khởi chạy ứng dụng. Ở đây bạn hiểu rằng MainActivity.java chính là class chứa toàn bộ source code, còn activity_main.xml chính là phần giao diện. Đối với Android khi một Activity tạo ra thì thường nó đi kèm với một Layout giao diện nào đó (Tức là nó luôn được tách thành 2 phần: phần source code riêng và phần giao diện riêng). Bạn hiểu Activity giống như là các màn hình (cửa sổ) tương tự như là C#, mỗi Activity là một màn hình tương tác cụ thể nào đó.

– Bạn cũng cần nhớ rằng bất kỳ một Activity nào muốn được triệu gọi thành công trong Android Project thì bắt buộc nó phải được khai báo trong tập tin AndroidManifest.xml . Nếu như bạn gọi một Activity mà Activity này không được khai báo trong Manifest thì chắc chắn chương trình sẽ bị lỗi và tắt luôn.

– Hãy xem cấu trúc bên trong của AndroidManifest.xml (double click vào nó và chọn tab như hình bên dưới):

3_android_Project_6

– Như hình bên trên bạn thấy đó, MainActivity muốn được triệu gọi thì nó phải được khai báo trong này. Và đặc biệt nếu như muốn nó là màn hình đầu tiên được thực thi khi chạy ứng dụng thì bạn phải khai báo giống như  tag <intent-filter> ở trên. Như vậy nếu bạn muốn một Activity bất kỳ nào đó được gọi đầu tiên khi chạy ứng dụng thì bạn chỉ khai báo y chang như vậy, còn các Activity khác bạn không cần khai báo <intent-filter> như trên (tức là hoàn toàn không có tag này)

– Tiếp theo bạn double – click vào activity_main.xml :

3_android_Project_7

– Hãy quan sát màn hình ở trên (nhìn kỹ có 2 phần Graphical Layout và activity_main.xml. Bạn nênlàm quen trong phần Graphical Layout trước):

+ Vùng số 1 : chính là nơi chứa các control, layout, component… bạn muốn sử dụng cái nào thì kéo thả nó vào Vùng số 2. Như bạn thấy thì Tôi vừa kéo một Button vào và đặt Id nó là “btnXinChao”,

+ Vùng số 2: là giao diện, nơi mà bạn cần thiết kế

+ Vùng số 3: cho phép thiết kế theo chiều đứng hay chiều ngang

+ Vùng số 4: chức năng Zoom in – zoom out để dễ thiết kế

+ Vùng số 5: chính là nơi thiết lập các thuộc tính cho các control được kéo thả vào giao diện

– Bây giờ bạn vào thư mục gen trong Package Explorer và mở tập tin R.java lên:

3_android_Project_8

Thư mục gen , là thực mục cho Android tự động tạo ra, cho dù bạn có xóa nó thì nó cũng lại tự tạo ra. Nội dung bên trong bạn đừng có chỉnh sửa nó. Tất cả những gì bạn kéo thả vào giao diện, hay thiết lập string.xml, menu … tất tần tật liên quan tới resource thì nó sẽ được sinh ra bên trong R.java. Dựa vào đây để ta có thể truy suất các đối tượng trong coding.

Ví dụ:

– Ở trên bạn thấy class Id có chứa Id của Button mà lúc nãy Tôi kéo vào giao diện đặt tên là btnXinChao. Ta dựa vào Id này để tương tác với control.

– Hay layout activity_main cũng sẽ tự động lưu trữ trong này

– Tiếp tục double – click vào MainActivity.java:

3_android_Project_9

– Trong màn hình trên, bạn thấy bên trong hàm onCreate có lệnh:

+ setContentView(R.Layout.activity_main) ==> thiết lập giao diện cho Activity. Với activity_main lấy từ R.java

+ findViewById(R.id.btnXinChao) ==> truy suất control là Button trên giao diện. với btnXinChao lấy từ R.java

* Bạn sẽ hiểu hơn về các hàm này vào các phần sau. Ở đây mục đích là Tôi đang giải thích chức năng của từng phần trong Android

– Tiếp tục bạn quan sát các thư mục: Drawable-hdpiDrawable-ldpi,Drawable-mdpiDrawable-xdpi:

Bạn có thể tự tạo thêm một thư mục cùng cấp tên là Drawable, các tập tin bạn kéo thả trực tiếp vào trong này (tạo Resource). Khi chương trình load các ReSource sẽ tự động vào đây lấy. Còn -hdpi, -ldbpi, -xdpi là tùy thuộc vào độ phân giải màn hình mà chương trình tự động vào lấy đúng dữ liệu ở bên trong.

– Tiến hành thực thi chương trình:

 Bấm chuột phải vào ứng dụng / chọn Run As/ chọn Android Application , xem kết quả:

3_android_Project_10

– Tôi gom lại thành 5 bước thực hiện của một ứng dụng Android như sau:

 bước 1: Android Project sẽ được tự động biên dịch và chuyển qua Android Executables (.dex)

 bước 2: Đóng gói thành tập tin .apk

bước 3: Upload .apk vào thiết bị android

bước 4: Tiến hành cài đặt .apk đó

bước 5: Khi cài đặt thành công, chương trình sẽ được thực hiện Activity được thiết lập : android.intent.action.MAIN

Mỗi một ứng dụng Android sẽ được thực thi trên một máy ảo Dalvik (không phải máy ảo Java). Theo như giải thích của developer Android thì mục đích là chạy đa tiến trình, giúp tối ưu bộ nhớ.

Như vậy đến đây là bạn đã biết cách tạo một ứng dụng Android và khởi động nó như thế nào, đồng thời cũng biết được một số thành phần bên trong ứng dụng và công năng của chúng

Bạn cần hiểu rõ bài tập này, Trong bài tập tiếp theo Tôi sẽ nêu ra các tình huống LỖI của chương trình và cách xử lý chúng như thế nào. Vì  Tôi chắc chắn rằng trong quá trình học lập Trình Android bạn sẽ gặp các tình huống đó mà không hiểu vì sao nó bị lỗi, bạn sẽ bế tắc trong việc giải quyết lỗi.

Chúc các bạn thành công.

39 thoughts on “Bài tập 3: Cách tạo Android Project và tìm hiểu cấu trúc bên trong của một Android Project”

      1. dạ cho em hỏi.. em làm y chang mấy bước trên.. nma` khi tạo ra.. trong file src nó ko có file MainActivity.. .với là trong thư mục layout nó ko tạo ra file .xml.
        mong thầy trả lời.. cảm ơn !

  1. Đọc tới đâu vote 5 sao tới đó luôn :D, đọc từng bài của thầy còn sướng hơn đọc truyện và coi phim hoạt hình, vì thầy viết quá chi tiết hay. Vì vậy em ko cần phải lên lớp học nữa vì thầy cũng ko có điểm danh mà 😀

  2. Thầy ơi, cho em hỏi lúc mới tạo project android thì chương trình tạo cái source code MainActivity.java của file activity_main.xml, nhưng khi tạo thêm file layout xml nữa thì không thấy có file source code java nào phát sinh ra hết,em không hiểu tại sao! Thầy cứu em với!

  3. Thầy ơi cho em hỏi nếu em tạo 1 activity khác và tên ko phải là MainActivity mà em muốn nó làm activity chính chạy đầu tiên khi start thì phải làm thế nào thầy vậy thầy?

    1. Khi bạn tạo mới project cứ next như thầy nói, thì đến phần cuối để Finish sẽ có mục Activity Name để bạn thay đổi tên Activity đó

  4. Thầy cho hỏi, đó là: em đã tạo thêm folder để lưu trữ nhiều file .xml bên trong folder layout mà Android Project đã tạo sẵn nhưng khi setContentView(R.layout.????) hoặc findByViewId(R.layout.???), chương trình không tìm thấy layout được tạo bên trong folder đã được tạo thêm bên trong folder layout mà Android Project. Có cách nào giải quyết cho vấn đề này không thầy?

  5. Dạ em chào thầy,em gặp 1 lỗi là khi em kéo thả các button hay textview trên layout xong thì khi vào file R.java nó không sinh code source
    public static final class id {
    public static final int action_settings=0x7f080000;
    }
    chỉ vỏn vẹn thế này
    mong nhận được sự trợ giúp nhanh nhất từ thầy 🙂

  6. Mọi người ơi giúp em với. Em làm giống như thầy hướng dẫn nhưng khi tạo 1 project mới thì lại không có file MainActivity.. .với là trong thư mục layout nó ko tạo ra file .xml.
    mong thầy trả lời giup em voi ah. Em xin cảm ơn !

  7. thầy ơi cho em hỏi là em viết ứng dụng game bầu cua tôm cá trên android studio thì lúc em chạy ứng dụng và chơi thì được số điểm đó thì dữ liệu đó được lưu ở đâu ạ

Leave a Reply