Sunday, April 14, 2013

Phát triển chương trình android: váng đầu

Sau chương trình đầu tay là Chương trình chơi nhạc đơn giản, mình bỏ bẵng không học hỏi hay viết thêm chương trình nào nữa (từ tháng 10/2012 tới nay tháng 4/2013, tức là nửa năm). Nguyên nhân là mình quá bận với việc học tiếng, làm luận án thạc sĩ, và linh tinh khác. Dù sao thì lập trình cũng chỉ là thú vui thôi.

Gần đây đột nhiên có ý tưởng mới, mình lại bắt đầu học và viết lập trình cho android. Chương trình lần này yêu cầu phải có server ở PC và client trên điện thoại. Do đó dùng đồng thời Visual Studio C# để làm server trên windows và Intellij IDEA để làm chương trình cho android. Thật ra đầu tiên vẫn dùng Eclipse, nhưng eclipse thường xuyên bị những lỗi quái đản, không rõ nguyên nhân và chạy chậm kinh hoàng nên mới chuyển sang Intellij IDEA. Phần mềm này tốt hơn Eclipse nhiều lần (dù chạy cũng chậm): không hay bị lỗi quái đản, gợi ý mã tốt, hỗ trợ thiết kế UI cho android khá tốt (so với eclipse là tốt hơn nhiều). Còn Netbeans thì mình chưa dùng thử Netbeans nên không biết thế nào.

Nói tới chuyện phát triển chương trình cho android: váng đầu. Đầu tiên là IDE. IDE được giới thiệu chính trên trang developer của android là Eclipse. Nhưng dùng mới thấy phần mềm này quá cồng kềnh và lắm lỗi. Bập vào đấy rồi đúng là ác mộng với những lỗi thì thoảng bị, tắt đi mở lại lại bình thường. Thiết kế giao diện thì không phải hoàn toàn là WYSIWYG. Như mình quen làm việc với Visual Studio sang với android phải bơi trong đống xml để làm UI đúng là váng đầu 1. Đồng ý là nếu quen với xml để làm UI thì đúng là có thể sáng tạo không giới hạn. Nhưng với người mới bắt đầu, làm việc với nó đúng là !@#$%. Bỏ qua IDE, mình giờ đang dùng Intellij IDEA thấy đỡ váng đầu hơn một chút rồi. Phần mềm này cũng chậm rì nhưng soạn thảo tiện lợi hơn rất nhiều. Đặc biệt là bộ thiết kế UI tốt. Người mới dùng nên dùng phần mềm này.

Nhưng sự váng đầu thật ra chưa hết. Mình quen với lập trình trên windows, bập vào android, phải làm quen với một lô lốc các thứ mới (mà cũng đúng thôi vì nó là nền khác): đơn vị - dp, sp, px, in, dùng cái nào ? Trên PC có mỗi pixel thôi. Cái activity/service/ và việc quản lý vòng đời của nó: ví dụ khởi tạo gì đó ở onStart thì nhớ mà tắt nó ở onStop chứ không phải cái khác; nút Back, nút Home mà được ấn thì sự kiện nào sẽ đc gọi (phải biết vì nó liên quan vòng đời activity). Rồi lại còn quản lý threading (cái này giờ mình mới để ý đến vì trước đây làm với windows không cần quan tâm đến nó lắm, tất cả hoạt động xử lý làm trên luồng UI hết).

Nói chung là váng đầu nếu muốn làm lập trình cho android. Nếu mới học lập trình mà lao vào lập trình android thì chắc chắn sẽ ngất. Theo cá nhân thì có lẽ phải nắm vững kỹ thuật lập trình cơ bản (những thứ như hướng đối tượng), biết về Java, XML, thì vào với lập trình cho android mới đỡ được.

Hôm nay thử xem iPhone lập trình thế nào, nhưng tìm vào thấy bộ công cụ của nó chỉ chạy trên máy MAC. Thế thì nghỉ khỏe.

Viết vài dòng sau hơn vài tuần bắt đầu lại với Android. Đây là thú vui đau đầu. ^^

6 comments:

  1. tôi đang thủ code trên Intellij IDEA nhưng ko tìm đc tài liệu hướng dẫn sử dụng Intellij IDEA.

    ReplyDelete
    Replies
    1. Chỉ có tiếng Anh thôi, help của Intellij IDEA ấy bạn.
      Nhưng mình thì mò mẫm dùng thôi. Loanh quanh cũng quen quen rồi.

      Delete
  2. E chào anh ạ.
    Em đang muốn hỏi anh bắt đầu vào Androi thì cần chuẩn bị những gì ạ?
    Đọc đến cuối bài viết của anh thì phải học Java XML C hay C+ phải không anh?
    Em cũng chưa hiểu mong anh chỉ giáo cho :D

    ReplyDelete
    Replies
    1. Anh nghĩ là cần chuẩn bị:
      + Đầu tiên phải có 1 cái điện thoại android
      + Tiếp là biết lập trình java (hoặc ngôn ngữ lập trình hướng đối tượng tương tự để có cơ sở học java)
      + Biết đọc và viết XML
      + Đọc được tiếng Anh
      + Tìm một quyển sách hoặc tutorial dạy từng bước từng bước từ đầu để tạo 1 chương trình android đơn giản và chạy được.
      + Sau đó thì đào xới tiếp

      Anh nghĩ thế thôi.
      P/S: C hay C++ không cần thiết đối với người mới bắt đầu android (và kể cả người lâu năm nếu như không cần tạo những thứ hiệu suất cực cao)

      Delete
    2. Dạ em cám ơn anh nhiều ạ.
      B1 : điện thoại Androi nếu ko cần cao cấp lắm e có thể chuẩn bị được.
      B2 : Em là dân điện tử,nếu chưa biết Java thì có thể bắt đầu học từ đâu ạ.
      Anh đang làm ở đâu ạ?có ở Hà Nội không anh?em có cần phải đến trung tâm nào học Java ko hả anh?
      sorry anh em hỏi hơi nhiều hi :D

      Delete
    3. Về trung tâm nào thì có thể chỗ này: http://mobilepro.vn/mobilepro/ người ta dạy android. Có thể vào học qua 1 khóa để nắm cơ bản, sau đó tự mày mò tiếp.

      Anh thì ở HN nhưng hiện đang du học ở Belarus. Anh tự mày mò học java, xml, android hết. Sau 1 tháng thì anh có thể viết được chương trình nghe nhạc đơn giản đầu tiên. Nói chung chịu khó mày mò thì ra hết. Nhưng nếu theo khóa học thì sẽ nhanh hơn.

      Chúc thành công :)

      P/S: Là dân điện tử, nếu học thêm được lập trình cho di động (cụ thể là android là dễ tiếp cận nhất (vì để lập trình iPhone thì phải có máy Mac) sẽ rất có nhiều cơ hội phát triển các thứ thú vị. Ví dụ như là arduino(tìm google nhé)

      Delete