- ภาษาไทยบน Linux พิมพ์ได้แล้ว
- "ปิดไฟล์" --> "เลือกไฟล์"
ผู้สนับสนุน
วันศุกร์ที่ ๓๐ ตุลาคม พ.ศ. ๒๕๕๒
Chromium 4 review บ้านๆ
Chromium บน linux แสดงผลภาษาไทยได้แล้ว แล้วก็พิมพ์ไทยได้แล้วด้วย
Android source ๔
ต่อจาก ตอนที่แล้ว [เนื่องจากงง ทำหลายข้อต่อไปไม่ได้ เลยขอข้ามเลย]
ตอนที่แล้วถึงช่วงเพิ่ม memory ให้ eclipse
เมื่อคุณต้องการ sync โปรเจค
ซึ่งกรณีที่จะต้องทำได้แก่ตอนที่คุณใช้ repo sync หรืออื่นๆ เช่น เปลี่ยนแปลงไฟล์ จากนอก eclipse (เช่นไฟล์ .classpath) ดังนั้นคุณต้อง refresh eclipse
- Window > show view > navigator
- แล้วก็ไปที่ navigator tab > คลิ๊กขวาที่โปรเจค("mydroid" หรืออะไรก็ตามที่คุณตั้งชื่อมัน)
- คลิ๊กที่ refresh
Adding apps to the build path
[ไม่ค่อยเข้าใจข้าม... -_-]
Eclipse setup to work on developer tools
[ไม่ค่อยเข้าใจข้าม... -_-]
Eclipse setup to work on DDMS
[ไม่ค่อยเข้าใจข้าม... -_-]
จัด Format ให้ eclipse
- คลิ๊กที่ project ของท่าน ("mydroid" หรืออะไรก็ตามที่คุณตั้งชื่อ)
- Project>properties
- เมนูทางซ้าย Java code style > Formatter
- Enable project specific setthings > import
- เลือกไฟล์ android-formatting.xml จาก development/ide/eclipse
[ต้นฉบับบอกว่าให้เพิ่ม android.importorder ด้วยแต่ผมหาไม่เจอ] - เลือก Active profile ให้เป็น Android แล้วก็กด OK
Debug emulator ด้วย eclipse
คุณสามารถที่จะใช้ eclipse ในการ debug emulator ได้ แล้วก็ step ตามการทำงานของ code ได้
[อันนี้ไม่เข้าใจว่า eclipse ได้ไงนะ เพราะต้องเปิด terminal ขึ้นมาเพื่อรัน emu]
cd myandroid/
. build/envsetup.sh
lunch 1 #เพื่อสร้าง emulator
make #ในกรณีที่คุณยังไม่ได้ทำขั้นนี้ ถ้าทำแล้วก็อย่าทำอีกนะมันนาน
emulator #รัน emulator ขึ้นมา ซักพักคุณจะเห็นเครื่อง android emu gui [กด num lock แล้วกด 7 ,9 เพื่อตะแคงมันเล่น]
เปิด terminal อีกอันขึ้นมา แล้วเปิด DDMS ( Dalvik debug manager)
cd myandroid/
. build/envsetup.sh
ddms #เพื่อสร้าง emulator
จะมี console อะไรที่อ่านไม่ค่อยรู้เรื่องขึ้นมา(เป็น gui)
แล้วก็ไปที่ eclipse
- เปิด run > debug configurations
- คลิ๊กขวาที่ Remote Java Application
- ตั้งชื่อให้มัน เช่น android-debug
- ตั้งชื่อโปรเจค (ตามปกติมันมันจะมีชื่อโปรเจคเดิมเรามาให้อยู่แล้ว)
- เปลี่ยน port เป็น 8700
- กด Debug
ปล2. [16:21]เหตุน่าจะมาจาก เคยลง sdk มาก่อนใน eclipse มาก่อนเพราะฉะนั้นเอามันออกไปซะ
ปล3. [16:36]แต่ก็ยังไม่ได้อยู่ดีเศร้าหว่ะ T^T ใช้แบบบน shell แหละดีแล้ว
port 8700 จะเชื่อมต่อกับ process อะไรก็ตามที่ถูกเลือกอยู่ใน console ของ DDMS ดังนั้นคุณควรจะดูให้ดีว่า DDMS เลือก process ถูกต้องหรือเปล่า[process ที่คุณจะ debug]
คุณอาจต้องการเปิด Debug perspective (Window > Open perspective > Other , Debug > OK) แล้วก็เลือกสลับระหว่าง java กับ debug ได้ที่มุมขวา ของ eclipse ส่วนใช้ยังไงใช้ไม่เป็นอ่ะยัง connect ไม่ได้ (-_-) [ต้นฉบับมีบอก]
เพิ่ม plug in
eclipse มีระบบ plugin ที่จะสามารถให้ผู้อื่นสามารถเพิ่มความสามารถให้ IDE ได้ และนี่คือ plugin บางตัวที่ทำให้ eclipse ใช้ง่ายขึ้นเพื่อเขียน android
- AnyEdit เครื่องมือสำหรับ ฟิกเรื่อง whitespace เมื่อบันทึกไฟล์ คือจะเปลี่ยน tab เป็น space ตัด space หลังบรรทัด และใส่ end-of-line ที่ท้ายไฟล์ [มันต้องเป็น eof end-of-file หรือเปล่าฟระ]
Eclipse มันง๊องแง้ง ทำไงอ่ะ
ดูอีกทีให้ดีว่า:
- ทำตาม step ถูกต้องหรือเปล่า
- Your Problems view doesn't show any errors.
- Your application respects the package/directory structure.
ถ้ายังไม่ได้อีกติดต่อ contact list ของ android หรือไม่ก็ที่ช่อง irc (freenode.net #android) (เคยติดต่อมารอบแล้ว)
Android NDK(เขียนเล่นๆ)
Android NDK
• จำเป็นต้องมี SDK 1.5
• บน windows จำเป็นต้องลง http://www.cygwin.com/ (จะมี gmake และ gcc มาให้)
• ทำให้เขียน c/c++ เพื่อรันบน android ได้
• native code จะถูกเรียกใช้ผ่าน JNI
• เขียนไม่ดีจะกลายเป็นว่าซับซ้อนกว่าเดิมโดยใช่เหตุเพราะว่ามันต้องรันบน dalvik VM อีกชั้นอยู่แล้ว
• ในอนาคต code ของ native อาจจะใช้ไม่ได้บ้างบางส่วนเพราะว่ามันมียังมีการปรับอยู่เรื่อยๆ
• ต้องเขียน android.mk และ application.mk เองด้วย
• c++ ใช้ .cpp เป็นพื้นฐาน สามารถ config ให้รับ .cxx อื่นๆ ได้
• ประกอบด้วย
∘ cross-toolchains ( compilers, linker, etc) ที่สามารถสร้าง native ARM binaries บน Linux, OSX, Windows(ที่มี Cygwin)
NDK แบบคร่าวๆ
หลังจากโหลด ndk มาและแตกไฟล์ออกมาจะมีโครงสร้าง dir ดังนี้
โดย
- code ที่เขียนออกมาจะไม่ได้กลายเป็น app โดยตรง
- เมื่อ compile แล้วมันจะสร้าง lib native ให้อยู่ใน apps/
- เรียกผ่าน JNI ของ android อีกทีหนึ่ง
โดยที่เราจะต้องเขียน Application.mk (makefile) และ AndroidManifest.xml เพิ่มเติมเองเพื่อให้มันเรียกใช้ได้
sources/ จะมี Android.mk ที่เป็นตัวกำหนดว่าต้อง build หรือ compile ไฟล์ใด dir ใดบ้าง เพราะฉะนั้นมันจะมีอยู่แทบทุก subdir
สำหรับ code ของ c/c++ ที่เขียนใน sources จะมีลักษณะที่ทำไว้ให้ jni เรียกได้ด้วย แล้วไฟล์ที่ว่านั้นอาจจะไปเรียก code c อื่นๆ ก็ได้
** second.c **
#include "first.h" // เรียกใช้ func อื่น #include <jni.h> // เรียก jni jint Java_com_example_twolibs_TwoLibs_add( JNIEnv* env, // Java_com_example_twolibs_TwoLibs_ < คือชื่อ pkg และ class, add คือชื่อ method jobject this, jint x, jint y ) // argument พื้นฐานคือ JNIEnv* env,jobject this argument เพิ่มเติมคือ jint x, jint y { return first(x, y); // เรียกใช้ function จากไฟล์อื่น (first.c) } |
** first.c **
#include "first.h" int first(int x, int y) { return x + y; } |
** first.h **
#ifndef FIRST_H #define FIRST_H extern int first(int x, int y); #endif /* FIRST_H */ |
และจะเรียกใช้ผ่าน JNI ได้ในลักษณะนี้
package com.example.twolibs; import ... public class TwoLibs extends Activity { @Override public void onCreate(Bundle savedInstanceState) { /* do something */ int x = 1000; int y = 42; // dynamically load the library at runtime // before calling the native method. System.loadLibrary("twolib-second"); int z = add(x, y); /* show z output */ } public native int add(int x, int y); } |
STABLE lib ที่สามารถเรียกใช้ได้
C standard, <stdlib.h>, <stdio.h>, etc... และ <pthread.h><math.h>
C++ <cstddef> <new> <utility> <stl_pair.h>
C lib เฉพาะของ android <android/log.h>
Zip
<zlib.h> <zconf.h>
เริ่มใช้ android NDK
1. ตรวจสอบ system requirement
- SDK 1.5
- GNU Make 3.81 ขึ้นไป ทดสอบโดยการ พิมพ์ make -v
build/host-setup.sh
3. เขียน source แล้วเก็บไว้ที่ source/<mysrc>/...
4. เขียน sources/<mysrc>/Android.mk เพื่ออธิบาย source code ให้ NDK build ได้ถูกต้อง
- เขียน source code
5. เขียน apps/<myapp>/Application.mk เพื่ออธิบายโปรแกรม และ native code มันจำเป็นต้องใช้กับ NDK build system
- เขียน app ที่เรียก native code
6. Build Native code ด้วย คำสั่ง make APP=<myapp> ที่ root dir ของ NDK
7. Generate .apk ด้วย Eclipse
Configurating the NDK