ผู้สนับสนุน

วันศุกร์ที่ ๒๙ พฤษภาคม พ.ศ. ๒๕๕๒

ทดสอบ twitterfeed

เนื่องจากอยากให้ blog ของเรา update ผ่าน twitter ได้บ้าง วันนี้เลยลอง tweet ถามไปใน twitter นั่นแหละก็มี @thangman22 กับ @medkung ตอบมาว่า ลอง twitterfeed สิ ซึ่งผมก็ไม่รู้ว่ามันทำงานยังไงแล้วจะทดสอบยังไง นอกจาก ลอง blog ดูละกัน อิอิ

วันพฤหัสบดีที่ ๒๘ พฤษภาคม พ.ศ. ๒๕๕๒

Compiling android ๓

ต่อจากนี้ ระดับความมั่วอาจจะสูงกว่าเดิม
เค้าบอกว่าให้ Using Eclipse โอเคย์จัดไปตามเค้าว่าครับ

Basic setup
ขั้นแรกเค้าบอกว่าเรา set up Android devlopment system เรียบร้อยแล้วหรือยัง?

cd /path/to/android/root
make # and wait a while, if you haven't done this

อันที่ว่า /path/to/android/root  อันนี้ก็น่าจะเป็น directory เดียวกับที่เรา get source มานั่นแหละครับ
[สำหรับใครที่ make แล้วไม่ต้องทำอีกรอบนะครับ มันนานมากๆ ]

สำคัญมั่กๆ ยังไงคุณก็ยังต้องใช้ make เพื่อ build ไฟล์ที่คุณจะเอาไปรันบน emulator หรือเครื่องจริง. ที่คุณใช้ eclipse เพื่อแก้ไขไฟล์ และทดสอบว่ามัน compile ได้ แต่เมื่อคุณต้องการที่จะเอามันไปใช้ คุณต้องดูให้แน่ใจว่าไฟล์ ได้ถูก  save ใน eclipse แล้ว และต้องมารัน make ใน shell อีกรอบ เพราะการ build ของ eclipse นั้นทำไปเพื่อตรวจสอบ error เท่านั้น

Eclipse ต้องการ list ของ directory เพื่อที่จะค้นหาไฟล์ java หรือที่เรียกว่า Java build path ที่จะถูกกำหนดไว้ใน .classpath แล้วเค้าก็บอกว่ามี version เริ่มต้นให้เรา [ตัวอย่างไฟล์]

cd /path/to/android/root
cp development/ide/eclipse/.classpath .
chmod u+w .classpath # ทำให้ตัว copy นี้สามารถเขียนได้

แล้วก็แก้ไขไฟล์ .classpath ถ้าจำเป็น (สำหรับคนที่ไม่รู้ว่าจำเป็นหรือเปล่าอย่างผม ..ข้ามโล้ดอย่าไปยุ่งอะไรกับมัน -_-)

Increase Eclipse's Memory Settings

ต่อไปเพิ่มพลังให้ eclipse เด๋วม่อง (Increase Eclipse's Memory Settings)
Android project ทำให้เครื่องคุณม่องได้สบาย [java ก็เยอะแล้ว eclipse ด้วย android อีก ไม่รอดแน่ๆ JVM มันจะ run out of memory ได้ง่ายๆ] เพื่อป้องกันปัญหาดังกล่าวให้ เราแก้ไข eclipse.ini ซึ่งมันจะอยู่ใน directory  eclipse ที่เราลง อันนี้ของใครของมันนะ ของ Mac เค้าบอกมาด้วยว่าอยู่ที่ /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini เปิดไฟล์ขึ้นมาแก้ไขเลยครับ
ของเดิม
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m

แนะนำสำหรับโปรเจค android
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m

คือ set ให้ eclipse มี Java heap size ต่ำสุดเป็น 128MB และเพิ่มสูงสุดเป็น 512MB และให้ maximum permanent generation เป็นเหมือนเดิม

เสร็จแล้วก็เปิด eclipse ^^
eclipse &
หรือจะด้วยการเข้าไป click หรืออะไรก็แล้วแต่ 1 2
ถ้าเป็นการพบกับ Eclipse ครั้งแรกของคุณ
  1. มันจะถามหา workspace เลือกเป็น default เลยก็ดี
  2. เจอ welcome screen สวัสดีมันแล้วปิดมัน มันจะเข้าสู่หน้าจอ Java perspective.
  3. File > New > Java Project
  4. เลือกชื่อ Project อะไรซักอย่างที่คุณต้องการเช่น myandroid
  5. เลือกที่ Create project from existing source แล้วใส่ path ไปยัง directory ของ android
  6. รอจนมัน import project เสร็จตรงมุมขวาล่างจะมี progress อยู่ด้วยนะครับ

เมื่อเปิดโปรเจคมาครั้งแรก eclipse จะเริ่ม build ตามปกติมันจะ build ขึ้นมาโดยไม่มี error เกิดขึ้น และคุณก็จะไปต่อได้อย่างสบายใจ แล้วถ้ามันยังมีอะไรไม่น่าชื่นใจก็ลอง uncheck แล้วก็ recheck ที่ Project > Build Automatically เพื่อบังคับให้มัน rebuild

Note: บางครั้ง eclipse มันจะเพิ่ม import android.R เข้ามาให้ที่ด้านบน ของไฟล์ ที่มีการเรียกใช้ resource โดยเฉพาะตอนที่คุณสั่งให้ eclipse sort หรือทำอย่างอื่นเพื่อจัดการการ import ซึ่งอาจจะทำให้เกิด error ได้ ลองมองหา import ที่ผิดที่ว่านั้นแล้วก็ลบออก[ยังไม่ได้ลองเพราะฉะนั้นมันยังไม่เกิดขึ้นกับผม]

  1. & คือ ให้ทำงานเป็น background terminal จะคือ cursor มาให้เราไม่งั้นมันจะค้างอยู่อย่างนั้น
  2. ทำให้ eclipse รันเป็นเหมือน command ทั่วไปทำได้โดยไปเพิ่ม ใน $PATH ใน .bashrc เหมือนตอนที่ 2 ที่เพิ่ม repo

Compiling android ๒

วิธีการ Compile (ในแบบของผม ผิดถูกช่วยวิจารณ์ด้วย)
มาๆ วิธีการกันมั่ง  จริงๆ มีวิธีมีอยู่แล้วที่ http://source.android.com/download เขียนไว้เผื่อไม่อยากอ่านภาษาฝรั่ง

ขั้นแรก เลิกใช้ windows
(จริงจังนะ)

ในที่นี้ลง Ubuntu 9.04 32 bit นะ(วิธีลง เหมือนๆ ของเก่า)

ขั้นที่ 2 เราต้องลงโปรแกรมตามนี้ (ต้องการ internet นะ)
  1. Git 1.5.4 หรือใหม่กว่า
  2. JDK 5.0 หรือใหม่กว่า ในที่นี้เค้าบอกว่า Java 6 ไม่ support เพราะฉะนั้นผม uninstall ออกเลย
    sudo apt-get remove sun-java6-jdk sun-java6-jre sun-java6-bin
  3. flex, bison, gperf, libsql-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl.

ด้วยคำสั่งนี้บรรทัดเดียว(ย้าวยาว รอพักนึงตามความเร็ว internet)

sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

เค้า บอกต่ออีกว่าเราอาจจะต้องการ Valgrind เครื่องที่จะช่วยให้เราหาว่าเกิดปัญหากับ memory ขึ้นหรือเปล่า(leaks, stack corruption, array bounds overflows, etc.) ไม่รู้มันเป็นไงเหมือนกันเค้าว่าไงก็ว่าตามนั้น

sudo apt-get install valgrind

แล้วก็ถ้าเป็นบน 8.10 คุณก็คงต้องการ version ใหม่ของ libreadline ด้วย (คือไรฟระ ตู 9.04 เออๆ เอาด้วย)

อันนี้ของเดิมของเค้า
sudo apt-get install lib32readline5-dev

มันไม่ได้เลยเปลี่ยนเป็นอันนี้(ด้วยความวิสาสะ)
sudo apt-get install libreadline5-dev

เสร็จแล้วขั้นที่ 2 สำหรับ ubuntu 64, และ Mac กระผมไม่ได้ลองนะ

ขั้นที่ 3 install Repo (ถ้าจะเริ่มมั่วมันก็ตั้งก่ะอันนี้แหละ)
  1. สร้าง directory ขึ้นมาอันหนึ่งสำหรับใส่ repo


    cd
    mkdir bin
    vi .bashrc

    กด i เพื่อพิมพ์ใน vi เพิ่มบรรทัดนี้เข้าไป

    export PATH=${PATH}:/home/ชื่อusernameของเครื่องคุณ/bin

    กด :wq เพื่อออกจาก vi และบรรทึกไฟล์
    แล้วก็เพิ่มเข้าไปใน bash ปัจจุบัน โดยใช้คำสั่งข้างล่าง (จุด เว้นวรรค จุดแบชอาซี)

    . .bashrc

    ทดสอบด้วย

    echo $PATH

    ผลที่ถูกต้องคือควรจะมี /home/ชื่อusernameของเครื่องคุณ/bin  เป็นส่วนประกอบของข้อความที่พิมพ์ออกมา

  2. download repo

    curl http://android.git.kernel.org/repo >~/bin/repo
    chmod a+x ~/bin/repo
ขั้นที่ 4 init repo
  1. สร้าง directory สำหรับเก็บ source code

    mkdir myandroid
    cd myandroid

  2. รัน repo init

    repo init -u git://android.git.kernel.org/platform/manifest.git

  3. ใส่ชื่อ และ email ถ้าเกิดต้องการจะ submit code อันนี้ผมกรอกไปเลยแม้ไม่เคยคิดจะส่งกลับก็ตาม

เมื่อเสร็จแล้วควรจะได้อะไรทำนองนี้แบบนี้
  repo initialized in /mydroid

ขั้นที่ 5 เอาไฟล์มันลงมา 
    คำสั่งนี้จะโหลด ไฟล์ทั้งหมดของ project จาก repositories ลงมาเลย
repo sync

พักกินข้าวกินหนมหรืออะไรก็ว่าไป นานโขตามความเร็ว internet

ขั้นที่ 6 Verifying Git Tags (อันนี้แหละที่มั่ว)

ให้ทำสั่งนี้เพื่ออะไรซักอย่าง งงๆ
gpg --import

มันจะขึ้น promt ให้เราใส่อะไรซักอย่างให้ใส่สิ่งนี้ลงไปแล้วกด ctrl+d
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

หลังจากนั้นคุณจะสามารถ verify tag ได้ด้วยคำสั่ง
git tag -v tagname
แต่ว่าผมไม่รู้นี่สิว่าไอ้ tagname เนี่ยมันเอามาจากไหน แล้ว tag ในที่นี้คือไรฟระ?

ขั้นที่ 7 Building the code (ข้ามมาอย่างไม่สนใจ -_- )

ง่ายมากๆ ถ้าโหลดไอ้พวกนั้นมาเสร็จแล้ว มันจะมี Makefile มาให้เข้าไปใน directory นั้นแล้วพิมพ์ make ก็พอ

cd mydroid

make

รอไปเลยครับนาน ของผม  2 ชม.
ผมเข้าไปปิด gdm ก่อน( gui บน ubuntu) เพื่อให้มันทำงานให้เต็มที่
ctrl + alt + f6
login
sudo /etc/init.d/gdm stop
ใส่ password
แล้วค่อยไปสั่ง make

ถ้าเกิดมันล้มเหลว เพราะว่า ไม่มี run-java-tool อะไรทำนองนี้ ให้ลอง set ANDROID_JAVA_HOME เป็น $JAVA_HOME ด้วยอะไรทำนองนี้
export ANDROID_JAVA_HOME=$JAVA_HOME

แต่ปัญหานี้ไม่เกิดขึ้นกับผม
แล้วก็ run ไปเป็น ชม. นั่นแหละ

แล้วตอนนี้ก็ไม่รู้จะทำไรต่อแล้ว หุหุ