Thứ Bảy, 8 tháng 3, 2014

báo cáo thực tập android

Báo cáo thực tập kỹ thuật 2013

 3D libraries: Một thể hiện được xây dựng dựa trên các APIs của OpenGL ES
1.0. Những thư viện này sử dụng các tăng tốc 3D bằng phần cứng lẫn phần
mềm để tối ưu hóa hiển thị 3D.
 FreeType: Bitmap and vector font rendering.
 SQLite: Một DBMS nhỏ gọn và mạnh mẽ.
4.Android Runtime.
Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõi cung cấp hầu
hết các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java. Mọi
ứng dụng của Android chạy trên một tiến trình của riêng nó cùng với một thể hiện
của máy ảo Dalvik. Máy ảo Dalvik thực tế là một biến thể của máy ảo Java được
sửa đổi, bổ sung các công nghệ đặc trưng của thiết bị di động. Nó được xây dựng
với mục đích làm cho các thiết bị di động có thể chạy nhiều máy ảo một cách hiệu
quả. Trước khi thực thi, bất kì ứng dụng Android nào cũng được convert thành file
thực thi với định dạng nén Dalvik Executable (.dex). Định dạng này được thiết kế
để phù hợp với các thiết bị hạn chế về bộ nhớ cũng như tốc độ xử lý. Ngoài ra máy
ảo Dalvik sử dụng bộ nhân Linux để cung cấp các tính năng như thread, low-level
memory management.
5.Linux kernel.
Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho những
dịch vụ hệ thống cốt lõi như: security, memory management, process management,
network stack, driver model. Bộ nhân này làm nhiệm vụ như một lớp trung gian
kết nối phần cứng thiết bị và phần ứng dụng.
Dưới đây là mô hinh hợp tác giữa máy ảo Dalvik và Navite code:
Báo cáo thực tập kỹ thuật 2013


Hình 2 - Mô hình hợp tác giữa máy ảo Dalvik và Navite code
JNI: Java Native Interface (Tương tự khái niệm Application Programming
Interface).
Java Native Interface: là một bộ framework cho phép mã lệnh viết bằng Java
chạy trên máy ảo java có thể gọi hoặc được gọi bởi một ứng dụng viết bằng native
code (Ứng dụng được viết cho một phần cứng cụ thể và trên một hệ điều hành cụ
thể) hoặc những bộ thư viện viết bằng C, C++ hoặc Assembly.
Bằng cách sử dụng JNI, Android cho phép các ứng dụng chạy trên máy ảo
Dalvik có thể sử dụng những phương thức được viết bằng các ngôn ngữ cấp thấp
như: C, C++, Assembly. Qua đó các nhà phát triển ứng dụng có thể xây dựng ứng
dụng dựa trên các bộ thư viện viết bằng C, C++, Assembly nhằm tăng tốc độ thực
thi của ứng dụng hoặc sử dụng những tính năng mức thấp mà ngôn ngữ Java không
hổ trợ. Tuy nhiên người phát triển ứng dụng cần phải cân nhắc sự gia tăng độ phức
tạp của ứng dụng khi quyết định sử dụng các bộ thư viện này.

III.Phát triển ứng dụng trên Android.
1.Ngôn ngữ lập trình
Ngôn ngữ lập trình chính thức của Android là Java. Mặc dù các ứng dụng
trên Android được phát triển dựa trên nền tảng Java, nhưng Android không hỗ
J2ME và J2SE, là hai ngôn ngữ lập trình phổ dụng cho các thiết bị di động.
Báo cáo thực tập kỹ thuật 2013

Dựa trên máy ảo Java của Sun, Google đã tinh chỉnh và phát triển nên máy
ảo Dalvik để biên dịch mã Java với tốc độ biên dịch nhanh hơn và nhẹ hơn. Đến
phiên bản Froyo 2.2, Android đã hỗ trợ Just-in-time Compiler (JIT) làm tăng tốc
độ biên dịch Java lên gấp 2-5 lần so với các phiên bản trước.

Hình 3 - Biểu đồ so sánh tốc độ của máy ảo Java giữa các phiên bản Android
(Càng lớn càng tốt)
Bằng cách sử dụng các frameworks của hãng thứ ba (VD: PhoneGap,
Titanium, ), các nhà lập trình web cũng có thể phát triển ứng dụng Android một
cách dễ dàng bằng các ngôn ngữ web phổ dụng như HTML, CSS, Javascript. Tuy
nhiên số lượng các ứng dụng đi theo chiều hướng này chưa nhiều.
Ngoài ra các ứng dụng của Android sử dụng SQLite để quản lý cơ sở dữ
liệu.
2.Môi trường lập trình cho Android.
Android SDK bao gồm các công cụ riêng lẻ như: debugger, các thư viện,
trình giả lập điện thoại Android, các tài liệu hỗ trợ và code mẫu. Hiện Android
cung cấp bộ công cụ này trên nhiều nền tảng hệ điều hành khác nhau (Windows,
Linux, Mac, ), miễn là có sẵn Java Development Kit, Apache Ant và Python2.2
trở lên.
Môi trường lập trình (IDE) chính thức của Android là Eclipse
Ứng dụng Android được đóng gói thành các file .apk và đuợc lưu trong thư mục
/data/app của hệ điều hành Android.Java Development Kit (JDK) 5.0.
Một số công cụ hỗ trợ lập trình Android tiêu biểu:
Báo cáo thực tập kỹ thuật 2013


 SQLite Manager: Là một addon của Firefox giúp quản lí cơ sở dữ liệu
SQLite của Android.
 DroidDraw: Giúp thiết kế file XML giao diện ứng dụng.
 Balsamiq Mockups và AdobeFireworks: Giúp nhanh chóng phác thảo ý
tưởng và giao diện sơ bộ của ứng dụng.
 StarUML: Vẽ các lược đồ UML hỗ trợ phân tích thiết kế.


2.1.Các thành phần cơ bản của một project Android trên Eclipse

Hình 4 - Cấu trúc thư mục và file của một dự án phần mềm Android trên
Eclipse.
AndroidManifest.xml: file XML mô tả ứng dụng và các thành phần đuợc cung cấp
bởi ứng dụng (activities, services, ).
build.xml: Một file chứa mã script Ant (ant.apache.com) nhằm compile và cài đặt
ứng dụng lên máy.
default.properties: file property tạo bởi script Ant trên.
bin/ : nơi chứa ứng dụng sau khi được compile.
bin/classes/ : chứa các lớp Java đã được compile.
Báo cáo thực tập kỹ thuật 2013

bin/classes.dex : chứa các file executable tạo bởi các lớp Java.
bin/yourapp.ap_ : chứa các tài nguyên của ứng dụng, đóng gói thành 1 file zip.
bin/yourapp-debug.apk hay bin/yourapp-unsigned.apk : chứa chính ứng dụng
Android của ta.
libs/ : nơi chứa các file Java JAR ứng dụng yêu cầu (third party).
src/ : nơi chứa mã nguồn Java của ứng dụng.
res/ : chứa các tài nguyên của ứng dụng, như các icons, GUI layouts,
res/drawable/ : chứa file hình ảnh (PNG, JPEG, ).
res/layout/ : chứa UI layout, dưới dạng XML.
res/menu/ : chi tiết các menu, dưới dạng XML.
res/raw/ : chứa các file khác (CSV chứa thông tin account, ).
res/values/ : chứa các strings, dimensions,
res/zml/ : chứa các file XML khác cần cho ứng dụng.
assets/ : nơi chứa các files tĩnh (static) được yêu cầu đi kèm với ứng dụng.
2.2.File AndroidManifest.xml
Là nền tảng của mọi ứng dụng Android, file AndroidManifest.xml được đặt
trong thư mục root và cho biết những thành phần có trong ứng dụng của: các
activities, các services, cũng như cách các thành phần ấy gắn bó với nhau.
Mỗi file manifest đều bắt đầu với một thẻ manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android.search">

</manifest>

Khi tạo file manifest, điều quan trọng nhất là phải cung cấp thuộc tính của
package, tức tên của Java package dùng làm cơ sở cho ứng dụng của ta. Sau khi đã
đặt tên package, sau này khi cần ghi tên lớp trong file manifest, ta có thể rút ngắn,
chẳng hạn với lớp “com.yourapp.android.search.Someclass” ta chỉ cần ghi
“.Someclass” là đủ.
Các thành phần manifest khác là :
Báo cáo thực tập kỹ thuật 2013


 uses-persmission: chỉ định các quyền mà ứng dụng của ta đuợc cấp để hoạt
động trôi chảy (như đã nói, các ứng dụng Android nằm dưới nhiều lớp bảo
mật khác nhau).
 permission: chỉ định các quyền mà các activities hay services yêu cầu các
ứng dụng khác phaỉ có mới được truy cập dữ liệu của ứng dụng của ta.
 instrumentation: chỉ định phần code cần được gọi khi xảy ra những sự kiện
quan trọng (chẳng hạn khởi động activities) nhằm phục vụ việc ghi chú
(logging) và tra soát (monitoring)
 uses-library: nhằm kết nối với các thành phần có sẵn của Android (như
service tra bản đồ, )
 uses-sdk: có thể có hoặc không, chỉ ra phiên bản củaAndroid mà ứng dụng
này yêu cầu.
 application: định nghĩa phần trung tâm của ứng dụng của file manifest.
Ví dụ file AndroidManifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android">
<uses-permission
android:name="android.permission.ACCESS_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_GPS" />
<uses-permission
android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission
android:name="android.permission.ACCESS_CELL_ID" />
<application>

</application>
</manifest>


Báo cáo thực tập kỹ thuật 2013



Tất nhiên, phần quan trọng của 1 file manifest chính là thành phần
application. Mặc định, khi ta tạo 1 project Android mới, ta có sẵn 1 thành phần
activity:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android.skeleton">
<application>
<activity android:name=".Now" android:label="Now">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>



Thành phần này cung cấp các thông tin sau
android:name : tên class hiện thực activity này.
android:label : tên activity.
intent-filter : Một thành phần con, chỉ ra dưới điều kiện nào thì activity này
được hiển thị.
3.Các thành phần cơ bản của một ứng dụng Android
3.1.Activity.
Đinh nghĩa Activity.
Báo cáo thực tập kỹ thuật 2013

Là thành phần tối quan trọng của bất kỳ một ứng dụng Android nào. Thuật
ngữ Activity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng
Android. Do gần như mọi activity đều tương tác với người dùng, lớp Activity đảm
nhận việc tạo ra một cửa sổ (window) để người lập trình đặt lên đó một giao diện
UI với setContentView(View). Một activity có thể mang nhiều dạng khác nhau:
Một cửa sổ toàn màn hình (full screen window), một cửa sổ floating (với
windowsIsFloating) hay nằm lồng bên trong 1 activity khác (với ActivityGroup).
Có 2 phương thức mà gần như mọi lớp con của Activity đều phải hiện thực:

 onCreate(Bundle) - Nơi khởi tạo activity. Quan trọng hơn, đây chính người
lập trình gọi setContentView(int) kèm theo layout để thể hiện UI của riêng
mình. Đồng thời còn có findViewById(int) giúp gọi các widget (buttons,
text boxes, labels, ) để dùng trong UI.
 onPause() - Nơi giải quyết sự kiện người dùng rời khỏi activity. Mọi dữ liệu
được người dùng tạo ra tới thời điểm này cần phải được lưu vào
ContentProvider
Để có thể sử dụng Context.startActivity(), mọi lớp activity đều phải được khai báo
với tag <activity> trong file AndroidManifest.xml.



Hình 5 - Khai báo tag <activity> trong file AndroidManifest.xml
Báo cáo thực tập kỹ thuật 2013


Vòng đời của một Activity.
Các activity được quản lí dưới dạng các activity stack - First-In-Last-Out:
Khi một activity mới được khởi tạo, nó sẽ được đưa lên trên cùng stack, các
activity khác muốn chạy trên nền (foreground) trở lại thì cần phải chờ tới khi
Activity mới này kết thúc.
Một Activity có 4 trạng thái:
Active hay Running: Khi một activity đang chạy trên màn hình.
Paused: Khi một activity vẫn đang chạy trên màn hình nhưng đang bị một
activity trong suốt (transparent) hay không chiếm toàn màn hình hiển thị phía trên.
Tuy vẫn lưu trữ dữ liệu, nhưng các paused activity này sẽ bị hệ thống bắt chấm dứt
khi đang thiếu bộ nhớ trầm trọng.
Stopped: Khi 1 activity bị che khuất hoàn toàn bởi 1 activity khác. Tuy vẫn
lưu trữ dữ liệu, nhưng các stopped activity này sẽ thường xuyên bị hệ thống bắt
chấm dứt để dành chỗ cho các tiến trình khác.
Killed hay Shut down: Khi 1 activity đang paused hay stopped, hệ thống sẽ
xóa activity ấy ra khỏi bộ nhớ.

Báo cáo thực tập kỹ thuật 2013



Hình 6 - Lược đồ vòng đời của 1 activity


Không có nhận xét nào:

Đăng nhận xét