mobile: Lập trình Hello world với Eclipse 3.5 và Android SDK

Bài viết này ghi lại các bước tuần tự để cài đặt và thiết lập môi trường giúp bạn lập trình ứng dụng cho Android. Tôi giả định máy bạn trắng trơn, chưa cài đặt gì dính dáng tới Java hay Android. Các bước sau đây là cách phổ biến, dễ và chính quy nhất:

Down và cài

  • Download Eclipse (bản mới nhất vào thời điểm viết bài) là 3.5 . Tới địa chỉ này http://www.eclipse.org/downloads/ , tìm Eclipse for Java Developer, lấy bản tương ứng với hệ điều hành của bạn (xài windows thì cứ chọn win32 là OK). Các bạn nên download từ mirror của Oracle (từ VN thì rất nhanh)
  • Unzip Eclipse.
  • Unzip Android SDK, VD là unzip vào: F:\Program Files\android-sdk-windows-1.5_r3
  • Nhấn windows + Pause, chọn tab Advanced, chọn Environment Variables
  • Nháy đúp vào mục PATH, dán thêm ;F:\Program Files\android-sdk-windows-1.5_r3\tools vào cuối (chú ý, có dấu ; để phân cách với các giá trị trước)
  • Cài đặt một plugin cho Eclipse là Android Development Tools (ADT), tại đây

1. bật Eclipse, chọn Help > Install new Software (Software Updates) ….
2. Chọn tab Available Software
3. Nhấn Add …
4. Gõ Name = ADT, gõ đường dẫn vào Location:

https://dl-ssl.google.com/android/eclipse/

(Nếu gặp lỗi, sửa đường dẫn lại thành http://dl-ssl.google.com/android/eclipse/)
Nhấn OK.
5. Quay lại mục Available Software, bạn sẽ thấy danh sách các plugin (có thể bạn phải chọn lại trong Combo Work With, chọn ADT), có mục “Developer Tools” ở ngay dưới, hãy nhấn chọn checkbox và nhấn Install…
6. Ở màn hình tiếp theo, bạn sẽ thấy một list các mục, 2 mục “Android DDMS” và “Android Development Tools” phải có mặt. Nhấn Next.
7. Đọc và đồng ý các thoả thuận bản quyền, nhấn Finish. Hãy chờ Eclipse tải về các plugin và cài đặt.
8. Khởi động lại Eclipse.

  • Mở Eclipse, bỏ qua hết các error hay inFo nếu có hiện lên
  • Chọn menu Windows/Preference
  • Chọn mục Android, dán vào ô textbox : F:\Program Files\android-sdk-windows-1.5_r3
  • Nhấn Apply. Vậy là xong các bước để cấu hình, dịch, debug ứng dụng Android của bạn.

Cấu hình emulator (để chạy thử ứng dụng của bạn)

  • Mở Menu Start của windows, chọn Run, gõ cmd, gõ Enter.
  • Hãy chuyển đến ổ đĩa mà bạn đã unzip android, nhảy vào thư mục tools của android (ở VD này sẽ là:

F: để sang ổ F
cd Program Files\android-sdk-windows-1.5_r3\tools
)

  • Gõ lệnh android create avd –target 2 –name my_avd rồi enter. Nhấn enter tiếp khi được hỏi cài custom hardware profile.

Vậy là xong phần cài đặt và cấu hình, giờ bạn có thể tạo project mới, viết ứng dụng được rồi.

VD để viết Helloworld cho bản 1.5

  • Chọn File, New, New Project
  • Chọn Android
  • Điền các thông số cần thiết (target chọn bản 1.5 cho mới, min SDK version = 3)
  • Mở file .java ra (có 1 file duy nhất thôi)
    import thêm lớp này
    import android.widget.TextView;
  • xoá dòng setContentView cũ, thêm đoạn này vào
    TextView tv = new TextView(this);
    tv.setText(“Hello, Android”);
    setContentView(tv);
  • Nhấn mũi tên nhỏ cạnh nút Debug, chọn Debug Configuration, chọn Tab Target, chọn sang Automatic, chọn một AVD mà ta đã tạo từ lúc trước. Apply, Close.

Vậy là xong, bạn có thể nhấn Debug, Eclipse (cùng với ADT) sẽ dịch, install chương trình sang máy ảo Android (Emulator), khởi động máy ảo Android (khá lâu, mất khoảng 1 phút), rồi chạy chương trình.
Nếu bạn sửa mã, cứ sửa trong code Java, đừng tắt Emulator (kẻo bật lại rất lâu). Khi Debug lại, ADT sẽ tự cài đặt lại lên Emulator, không phải khởi động từ đầu Emulator.

Đọc thêm

Xem thêm về Android Emulator: http://diendan.vietandroid.com/showthread.php?t=34

Xem thêm về việc dựng giao diện bằng XML: http://developer.android.com/guide/tutorials/hello-world.html

Install all simple thing Apache PHP MySQL Mono Eclipse NetBean to work with Ubuntu for beginner

Some developer install Ubuntu to give it a try, but they do not know how to go further step, they will be bored and quit Ubuntu. I don’t like it (I like Ubuntu) so I make some simple steps that beginner (of Ubuntu) should do to play more (programming) with it:

Open your console (by opening menu Application/Accessories/Terminal), type some command:

Apache, good HTTP Web Server (it will take the lastest version of series 2)
sudo apt-get install apache2
(after installed, open http://localhost with your firefox  , if some text display, it’s work)
(the webroot folder is at /var/www by default)

MySQL, good DBMS
sudo apt-get install mysql-server
(when installing, it will ask you to make the root password of MySQL)
(after installed, type this command in the terminal: mysql
if the console become mysql> , it’s work)

PHP, good “script” web language
sudo apt-get install php5

PHPMyAdmin, good web management tool to control your MySQL Server
sudo apt-get install phpmyadmin
(after installed, you use it by going to http://localhost/phpmyadmin)

Mono runtime (CIL) is installed (by default) on Ubuntu, you only need to install MonoDevelop (IDE for coding) to work with C# on Ubuntu
sudo apt-get install monodevelop
(after installed, you open IDE by opening menu: Application/Programming/MonoDevelop)

Truetype font (because someone told me text look bad on Ubuntu)
sudo apt-get install msttcorefonts

SSH Server on Ubuntu, it will give you OS console remotely
sudo apt-get install openssh-server
/etc/init.d/ssh stop/start/restart


FTP Server, it will help you upload/download file to your OS remotely. I recommend using vsftpd. It is simple and quite secure FTP server. According to vsftpd man page:

vsftpd is the Very Secure File Transfer Protocol Daemon. The server can be launched via a super-server such as inetd or xinetd. Alternatively, vsftpd can be launched in standalone mode, in which case vsftpd itself will listen on the network.

Default ftp port : 21
Default configuration file : /etc/vsftpd.conf
Install by sudo apt-get install vsftpd
Cần chú ý chỉnh những tham số sau trong file config của nó:
listen=YES
anonymous_enable=NO
local_enable=YES (cho phép các account ubuntu sử dụng FTP, nên bật)
write_enable=YES (cho phép các loại lệnh ghi FTP, vì ta sẽ không cho anonymous user nên bật write_enable sẽ đơn giản hoá việc tạo file, folder)
local_umask=022 (nên đặt ở 022, các file sẽ mặc định có quyền 755)

Để nguyên các dòng comment sau để không cho anonymous access
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES

Chỉnh lại dòng ftpd_banner theo ý bạn, để chào mừng user khi họ login vào hệ thống. Tuy nhiên không nên giới thiệu quá nhiều về hệ thống (tránh lộ các thông tin nhạy cảm), chỉ nên điền vài thông tin cơ bản để biết được là mình đang connect đúng vào server của mình

using memcache with multi ClientAPI multi platforms and languages

When your system is large, compose by several programs, in several languages. If every programs need to access memcacheD, you should use the correct ClientAPI to make them talk with each other.
Of course, if you set value by PHP, you get value by PHP, it works. If you set value by Java, then you get value by other Java program, it work too.

BUT, this time (this post time), if PHP says, maybe Java can’t hear, C# can’t here, and vice versa.

in PHP, $memcacheClient->set(“test”,”lockevn”);     // it will go to memcache server

in Java, Object oValue = oMemcacheClient.get(“test”) ;      // it will return null, supprise!!! @:@

I have some experience with Java, PHP. PHP website (using default pecl extension module) set value to memcache, if Java program need to get that value, you should use http://bleu.west.spy.net/~dustin/projects/memcached/ ClientAPI (at the time of this post). The other won’t work. Follow this link to get more info.

I do not test .NET client   http://www.codeplex.com/EnyimMemcached

You also need to store value as native format, only use 32bit integer, or string. If you put PHP object, Java program can not understand it, neither the C# program.

If your really need to store object, serialize it (to XML, JSON, … encode with UTF-8) BEFORE put it in memcache. The others must deserialize after get that value. Believe me, do that will save you a lot of time.

There is a similar alternative project on Windows: Velocity from MS

http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&displaylang=en

And an alternate one

http://www.sharedcache.com/cms/

Summary

memcache is good, but it make only to store data, only data, it does not like “object” things, don’t push it too hard. If you want some program say and other “different language” program hear, check it carefully, ask the ClientAPI author if it does not work. You should use native data format for value (int and string only), do serialize by yourself if you want to store data object.