Sunday, December 14, 2014

Coso2d-x: Thêm một sô lỗi khi build Cocos2d-x 3.3 trên Android (Eclipse)

1. Lỗi Android SDK Content Loader luôn 0% và treo IDE

Khi mới mở Eclipse và load lại các dự án cũ, chúng ta thường hay gặp lỗi này "Android SDK Content Loader 0%" và đứng mãi như vậy.
Đây có lẽ chỉ là lỗi của Eclipse chứ không liên quan đến Cocos2d-x.

Với lỗi này thì đa số các bài hướng dẫn là open lại Eclipse với tham số clean
/Volumes/DATA/DevTools/AndroidDev/adt/eclipse/Eclipse.app/Contents/MacOS/eclipse -clean -refresh
Nếu vẫn không giải quyết được thì chúng ta xóa file:
/Volumes/DATA/Projects/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
Sau đó khởi động lại Eclipse.

2. Lỗi "Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer"

Lỗi này xuất hiện khi mình thực hiện build với Cocos2d-x 3.3


Lỗi này là do thư viện engine game Cocos2d-x bị duplicate trong các khai báo của project.
Khắc phục lỗi này như sau

Chọn Project\Properties

Chọn Java Build Path\Libraries


Chọn tiếp Android Dependencies, chúng ta thấy libcocos2dx.jar ở đây, và đây là lý do gây ra tình trạng duplicate khi mà chúng ta đã add project thư viện cocos2dx ở mục Android build.
Sau khi chọn Android Dependencies, click Remove, thao tác này sẽ remove gói cocos2dx để tránh tình trạng duplicate, tuy nhiên một mặc nó cũng xóa đi các thư viện khác, như trong hình là facebook và google-play-service, chúng ta phải add lại 2 gói jar của 2 thư viện này.

Sau đó chỉ cần Bulid lại và Run là hết thấy lỗi.

Thursday, December 11, 2014

iOS: Auto Layout trong lập trình iOS

Hôm nay chúng ta tìm hiểu qua một chút về Auto Layout trong lập trình iOS.
Đến thời điểm hiện tại, sau khi iPhone 5, 5s và rồi iPhone 6, iPhone 6+ xuất xưởng, vấn đề làm thế nào để ứng dụng iOS có thể hỗ trợ tốt tất cả các kích thước màn hình trở thành là điều tất yếu không thể bỏ qua.
Thật ra, một thời gian dài trước đó, bằng cách viết code, mình vẫn có thể xử lý tốt việc này, một phần là mình muốn tận dụng ứng dụng trên các phiên bản iOS cũ từ 5.x trở về trước. Tuy nhiên trong thời điểm này, cùng với việc bắt đầu có nhiều kích thước màn hình, iOS 8 ra đời là động lực để mình có thể chia tay iOS 5.x. Và vậy thì tại sao chúng ta không tận dụng tính năng Auto Layout rất hay của Apple bắt đầu từ phiên bản iOS 6.0.