ผู้สนับสนุน

วันศุกร์ที่ ๓๐ ตุลาคม พ.ศ. ๒๕๕๒

Chromium 4 review บ้านๆ

feature ใหม่ 
1. Pin tab/ตรึงแท็ ประหยัดที่ + กันปิดพลาด

2. Extension ตอนนี้มี menu ให้เลือกดูแล้ว
3. bookmark synchronization (มีเมนูให้เห็นแล้ว แต่ยังไม่น่าใช้)
4. Native Client ถูก build in มาแล้วแต่ถูกปิดไว้เป็นค่าปริยาย (อยากลองต้องเปิดเอง)
5. Bookmark all tab << ส่วนตัวคิดว่ามันทำมาเพื่อทดสอบ sync bookmark
6. Bookmark และ Master password ถูกรวมเป็นเรื่องเดียวกัน (คือน่าจะเป็น เรื่องใช้ account เดียวเก็บทุกอย่าง)
7. fix บัคมากมาย และเพิ่มความเร็ว
  1. ภาษาไทยบน Linux พิมพ์ได้แล้ว
  2. "ปิดไฟล์" --> "เลือกไฟล์"

คาดว่ากว่าจะออกคงจะได้เห็นอะไรอีกเยอะ อันนี้เอาแค่ที่เห็นได้ง่ายๆ และไปเห็นมา

Chromium บน linux แสดงผลภาษาไทยได้แล้ว แล้วก็พิมพ์ไทยได้แล้วด้วย

Update!! พิมพ์ ไทยได้แล้วจ้าาา 4.0.229.0 (30549) 16279
เก่าๆ เอามาอัพเดตอีกรอบ
1. Chrome บน windows พิมพ์ไทยได้แล้วนะจ๊ะ issue 3523
2. ปุ่ม Choose file ของ Chrome เปลี่ยนเป็นคนว่า "เลือกไฟล์" แล้ว เดิมเป็นคำว่า "ปิดไฟล์" issue 1759

-----
หลังจากออกมาได้ซักพักแล้ว สำหรับ Chrome บน Linux และ Mac แต่ว่ายังมีปัญหาอยู่ที่ ไม่สามารถแสดงผลภาษาไทยได้ ซึ่งตอนนี้ปัญหานี้ได้รับการแก้ไขเป็นที่เรียบร้อยแล้ว [รุ่นที่ทดสอบ 3.0.193.0 (20219) ] สามารถโหลดมาลองได้จาก ที่นี่สำหรับ Linux และ ที่นี่สำหรับ Mac(ผมไม่ได้ทดสอบ)  สำหรับรุ่น Beta ที่เป็น Google Chrome คงจะออกตามมาเร็วๆ นี้

เท่าที่ทดลองดูก็สามารถอ่านออกได้สบายตาดีไม่มีปัญหา แต่ว่ากลับมีปัญหาในเรื่องของการพิมพ์(อีกแล้ว) แต่ว่าลักษณะไม่เหมือน ของเดิม แต่ว่าก็ทำให้หงุดหงิดเวลาพิมพ์แทรกไม่แพ้กัน ตัวอย่างการพิมพ์ที่มีปัญหา
การแสดงผลก็ออกมาเป็นแบบนี้


Compile Chrome บน windows

Update!! อาจจะใช้ไม่ได้แล้ว ที่มา

Android source ๔

ต่อจาก ตอนที่แล้ว [เนื่องจากงง ทำหลายข้อต่อไปไม่ได้ เลยขอข้ามเลย]
ตอนที่แล้วถึงช่วงเพิ่ม memory ให้ eclipse

เมื่อคุณต้องการ sync โปรเจค
ซึ่งกรณีที่จะต้องทำได้แก่ตอนที่คุณใช้ repo sync หรืออื่นๆ เช่น เปลี่ยนแปลงไฟล์ จากนอก eclipse (เช่นไฟล์ .classpath) ดังนั้นคุณต้อง refresh eclipse

  1. Window > show view > navigator
  2. แล้วก็ไปที่ navigator tab > คลิ๊กขวาที่โปรเจค("mydroid" หรืออะไรก็ตามที่คุณตั้งชื่อมัน)
  3. คลิ๊กที่ refresh

Adding apps to the build path
[ไม่ค่อยเข้าใจข้าม... -_-]
Eclipse setup to work on developer tools
[ไม่ค่อยเข้าใจข้าม... -_-]
Eclipse setup to work on DDMS
[ไม่ค่อยเข้าใจข้าม... -_-]

จัด Format ให้ eclipse
  1. คลิ๊กที่ project ของท่าน ("mydroid" หรืออะไรก็ตามที่คุณตั้งชื่อ)
  2. Project>properties
  3. เมนูทางซ้าย Java code style > Formatter
  4. Enable project specific setthings > import
  5. เลือกไฟล์ android-formatting.xml จาก development/ide/eclipse
    [ต้นฉบับบอกว่าให้เพิ่ม
    android.importorder ด้วยแต่ผมหาไม่เจอ]
  6. เลือก 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
  1. เปิด run > debug configurations
  2. คลิ๊กขวาที่ Remote Java Application
  3. ตั้งชื่อให้มัน เช่น android-debug
  4. ตั้งชื่อโปรเจค (ตามปกติมันมันจะมีชื่อโปรเจคเดิมเรามาให้อยู่แล้ว)
  5. เปลี่ยน port เป็น 8700
  6. กด Debug
ปล1. [16:20]ของผมมัน Error อีกแล้ว T^T
ปล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 c/c++ จะเขียนใน dir sources/ และเมื่อ compile แล้วจะได้ผลออกมาที่ dir out/ และ apps/
โดย
  • code ที่เขียนออกมาจะไม่ได้กลายเป็น app โดยตรง
  • เมื่อ compile แล้วมันจะสร้าง lib native ให้อยู่ใน apps/
  • เรียกผ่าน JNI ของ android อีกทีหนึ่ง 

    จากรูป libs/armeabi/lib[name].so เป็นสิ่งที่เมื่อ compile code c/c++ แล้ว NDK จะสร้างให้ และ dir อื่นๆ  src/, assets/ , res/ , bin/, gen/ เป็นสิ่งที่ต้องสร้างขึ้นมาโดยเป็น project android ทั่วไปโดยจะเรียกใช้ native c/c++ ผ่านทาง lib เท่านั้น
    โดยที่เราจะต้องเขียน 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 */
หมายเหตุ  Java_com_example_twolibs_TwoLibs_add <<คือ JNI นี่เอง

และจะเรียกใช้ผ่าน 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
2. Download NDK แล้วทำการรัน setup script
    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