Android Programming for Development Tools

March 31st, 2013

พอดีลองเขียนโปรแกรมบน Android เลยเอา step มาแบ่งกันว่าต้องใช้อะไรบ้าง

ซึ่งทาง android ที่เป็นของ google ก็ได้เตรียมมาให้เราใช้อย่างครบครันแล้ว ที่สำคัญ ฟรี อิอิ และใช้งานร่วมกับ Tools eclipse ได้อีกด้วย และยังใช้ได้ทุกระบบปฏิบัติการไม่ว่าจะเป็น Windows, Linux หรือ Mac OS X

Download สิ่งที่ต้องใช้
1. JDK เป็นตัว JDK 7
หรือถ้าต้องการโหลด JDK version 5 หรือ 6 ให้โหลดที่นี่ JDK Old

2. Android SDK จะด้มาทั้ง SDK และ Eclipse ให้เลือกตาม plate from ของเราในที่นี้ผมเลือกแบบ windows 64Bits (adt-bundle-windows-x86_64-20130219.zip)

Install – ติดตั้ง
1. ติดตั้ง JDK ถ้าติดตั้งแล้ว ข้ามไปข้อต่อไป

2. Extract Android SDK ไว้ใน Folder ที่ต้องการเช่น

2.1 SDK D:\workspace\AndroidIDE\sdk
2.2 Eclipse D:\workspace\AndroidIDE\eclipse

3. ติดตั้ง ADT หรือ Android Development Tools Plugin (Eclipse Plugin สำหรับเชื่อมกับ Android SDK)

4.1 เปิด Eclipse ขึ้นมา
3.2 เลือก Help -> Software updates
3.3 เลือกแท็บ Available Software
3.4 กดปุ่ม Add Site… กรอกไปว่า https://dl-ssl.google.com/android/eclipse/ และกด OK
3.5 จะกลับมาสู่หน้าจอ Available Software ให้กาเครื่องหมายถูกไว้หน้าไอเทมที่แสดงเป็น URL ที่เพิ่งใส่ไปเมื่อสักครู่นี้ และกด Install…
3.6 ติดตั้งจนเสร็จและกด Finish
3.7 ปิด Eclipse และ เปิด Eclipse (Restart Eclipse)

4. เมื่อ Eclipse ถูกเปิดขึ้นมาแล้ว ต่อไปเราต้องทำให้ Eclipse รู้ตำแหน่งของ Android SDK ก่อน ดังนี้

5.1 เลือก Windows -> Preferences… (สำหรับ Mac OS X ให้เลือก Eclipse > Preferences)
4.2 ในหน้าจอฝั่งซ้ายให้เลือก Android
4.3 ในช่อง SDK Location เลือก Browse… และทำการเลือก SDK Directory ที่เรา Extract ไว้ในขั้นตอนที่ 3
4.4 กด Apply และ OK ตามลำดับ

ทดสอบ
1. เปิด Eclipse ขึ้นมา
2. เลือก File -> New -> Project…
3. เลือก Android Project และกด Next
4. กรอกข้อมูลดังนี้

Project name: HelloWorld
Package name: droidsans.test.HelloWorld
Activity name: HelloWorld
Application name: Hello World

5.กด Finish
6. จะมี Project ถูกสร้างขึ้นมาอัตโนมัติแสดงอยู่ฝั่งซ้าย ให้คลิกเมาส์ขวาที่ชื่อโปรเจคแล้วเลือก Build Project
7. เลือก Run -> Run
8. จะมี Dialog ให้เลือกว่าจะรันแบบไหน ให้เลือกเป็น Android Application และกด OK
9. ถึงตรงนี้หากมี Emulator เด้งขึ้นมาและมีโปรแกรม Hello World โผล่ขึ้นมาใน Emulator เป็นอันใช้ได้แล้วครับ

เว็บ Eclipse
Eclipse เลือกโหลด Eclipse Classic 3.4+

Structure Android Application Devloper

May 20th, 2012

การเขียนโปรแกรม android application มีองค์ประกอบเบื้องต้นไม่มาก เรามีหน้าที่ ที่ต้องจำองค์ประกอบต่างๆ ของมันให้ได้ ซึ่งไม่ยากมากครับ บทความเดียวก็จบได้ แต่ทั้งหมดที่จะเล่านี่เพื่อเป็นพื้นฐานเท่านั้น เพราะว่าการ program ขั้นสูง มันก็จะมีอะไรเพิ่มมาอีกเรื่อยๆครับ

Structure Android Application Devloper

ปกติ เวลาเราเห็นโปรแกรมที่เอามาใช้จะเป็นในรูปแบบ .apk เพียงไฟล์เดียวเท่านั้น แต่ถ้าเรามาเขียนโปรแกรมให้สามารถใช้งานบน android ได้นั้น ต้องมาเรียนรู้โครงสร้างของ android ซึ่งถ้าเราสร้างโปรเจคใหม่ ผ่าน eclipse โดยผ่านการติดตั้ง plug in เรียบร้อยแล้ว
( Download the Android SDK และ ADT Plugin for Eclipse )
eclipse ก็จะสร้างโครงสร้างเหล่านี้มาให้โดยอัตโนมัต โดยโครงสร้างไฟล์ และหน้าที่ มีดังนี้

 

/src/PACKAGENAME/ACTIVITY.java - เป็นไฟล์ที่จะต้อง program ลงไป เพื่อให้เริ่มต้นทำงาน โดย PACKAGENAME ก็คือชื่อ package ที่เราสร้าง และ ACTIVITY คือชื่อ class ที่เราจะระบุในตอนที่สร้าง (ซึ่งมันจะ match ในที่ในไฟล์ AndroidManifest.xml)
/assets - เอาไว้เก็บไฟล์ multimedia หรือ อื่นๆ เช่น ภาพ เพลง ฯลฯ
/res/drawable - เก็บภาพ , icon
/res/layout - เอาไว้เก็บ XML ไฟล์ที่บ่งบอกการแสดงผล ถ้าเปรียบกับการทำเว็บ ก็คือเอาไว้เก็บ HTML โค้ด ที่ไม่มีส่วนเกี่ยวกับ program เลย เอาไว้จัด layout อย่างเดียว
/res/value - เอาไว้เก็บค่าต่างๆที่เราประกาศขึ้นมา ซึ่งประกอบด้วยดังนี้
/res/value/arrays.xml - เป็นการประกาศค่า array
/res/value/colors.xml - เป็นการประกาศค่าสี
/res/value/dimens.xml - เป็นการประกาศขนาดวัตถุต่างๆ
/res/value/strings.xml - เป็นการประกาศข้อความ หรือตัวหนังสือ (ซึ่งเราจะเอามาประยุกค์การทำหลายภาษาได้อีก)
/res/value/styles.xml - เป็นการประกาศ object style
/gen/PACKAGENAME - เราจะพบ R.java ซึ่งจะเป็นการกำหนดค่าของ object ต่างๆ โดยเราไม่ควรแก้ไขไฟล์นี้ เพราะว่า Eclipse จะทำการ compile ไฟล์นี้ใหม่ทุกครั้งที่มีการแก้ไขอยู่แล้ว

 

โดยไฟล์ที่สำคัญ ที่ต้องพิจาณาเป็น พิเศษก็คือ
1. ACTIVITY.java (ACTIVITY คือชื่อที่ตั้งขึ้นมา) เพราะว่ามันจะเก็บ program และการทำงานเริ่มต้นเอาไว้
มือใหม่จะได้แก้ไขไฟล์นี้ตลอดเวลาอย่างแน่นอน และอีกไฟล์ที่ทำงานคู่กันก็คือ /res/layout/XXX.xml (XXX คือชื่อที่ตั้ง เพื่อทำงานคู่กับ java ของเรา) โดยสองไฟล์นี้ ทำงานร่วมกันในแบบที่ XXX.xml เป็นตัวจัดส่วนแสดงผล ว่าจะให้ปุุ่มๆนี้ แสดงตรงนี้ text box แสดงตรงนี้ แล้ว .java ก็ทำหน้าที่เอา content มาใส่เข้าไป ตามที่ xml ระบุ โดย content อาจจะได้มาจากการคำนวนของโปรแกรม ,database, strings.xml ก็ได้ ขึ้นอยู่กับการเขียน java เพื่อส่งค่าให้ไปแสดงผลนั่นเอง

2.  AndroidManifest.xml เพราะว่าไฟล์นี้ เปรียบเสมือน configuration ของ application ของเราก็ว่าได้ โดยจะเก็บค่าที่บ่งบอก คุณลักษณะของ application เราเอาไว้ทั้งหมด ตั้งแต่ version ที่อนุญาตให้ใช้งาน ไปจนถึง การขอ permission ว่าจะมีอะไรบ้าง

* java syntax – เพราะว่า android ในโครงสร้างภาษา java ในการพัฒนา application เลยครับ แต่ว่าไม่ใช่ java แบบปกติที่เค้าใช้กัน เพราะว่า android ทำตัว vitual machine ขึ้นมาเอง (ชื่อว่า Dalvik) แต่ java ปกติจะใช้ JVM นั้นเลยทำให้ต่างกัน โดยจะต่างกันในพวก library , โครงสร้าง , การทำงาน แต่ตัว syntax นั้นเหมือนกัน ข้อนี้หลายคนอาจจะเป็นกังวล ว่าถ้าไม่มีพื้นฐาน java เลยจะเขียนได้มั้ย คำตอบอยู่ในข้อถัดๆไปนะครับ เพราะว่าผมคือคนนึง ที่ยอมรับเลย ว่าไม่เคยเรียน java , OOP หรืออะไรที่เกี่ยวข้องเลย

หาเป้าหมายและทำ command อื่นต่อ

January 25th, 2012

บางครั้งต้องการหาไฟล์หรือ ไดเรคทอรี ซึ่งไม่รู้อยู่ ณ จุดไหน ถ้าเจอแล้วต้องทำอะไรต่อ

เราสามารถทำได้โดยใช้คำสั่ง Find

การค้นหา directory หรือ ชื่อไฟล์ใน directory ที่ต้องการค้น
Linux command “.” หมายถึง current directory ในการกรณีไม่ใส่ path ในการค้นหา

find [pathnames] [conditions] 
 
find . -name "[file name or directory name]"
ตัวอย่าง
find  /home/data/  -name "*.log" 
find . -name "*data*.*"

ค้นหาคำ

ค้นหาในคำ <div id="newuser"> ทุกไฟล์ใน  /export/web/code/
find  /export/web/code/ -exec grep -l "<div id=\"newuser\">"  {} \;
 
ค้นหาคำ "postcode" ในทุกๆ ไฟล์ในไดเรคทอรีปัจจุบัน
find . -exec grep -l "postcode" {} \;  
 
ค้นหาคำ "postcode" ในทุกๆ ไฟล์ในไดเรคทอรีนั้น
find /home/username/HEAD/production/cust/templates  -exec grep -l "postcode" {} \;

หาและแทนที่

ใช้ Find หาไฟล์ และใช้คำสั่ง sed ในการหาคำและ replace
syntax
find [directory] -name [specify name] -exec sed -i "s/[find string]/[replace with]/g" {} \;
เช่น
find . -name "data.txt" -exec sed -i "s/cat/dog/g" {} \;
หาไฟล์ data.txt ในไดเรคทอรีปัจจุบัน และ replace cat ด้วย dog

หาและลบ

บางครั้งเราต้องการลบไฟล์ที่ไม่จำเป็นออก เช่น log เก่าๆ ของงานต่างๆ
หลักการคือ หาไฟล์ หรือหาไดเรคทอรี แล้วถ้าเจอก็ลบซะ
เราต้องรู้การใช้คำสั่ง 2 คำสั่ง คือ find และ rm แต่จะให้ทำงานพร้อมไปกับหาเจอเลย โดยที่เราไม่ต้องตามไปลบออกที่หลัง
 
find . -name *_11*.log -exec rm {} \;
หาไฟล์อะไรก็ได้ที่มี _11 และนามสกุล log ถ้าหาเจอแล้วลบ
 
find . -type d -exec rm -r {} \;
หาไดเรคทอรี แล้วลบ
 
find . -type f -mtime +0 -exec rm {} \;
หาไฟล์ที่มีการเปลี่ยนแปลง เจอแล้วลบ

Find and Sort by last modified

It's useful when we would like to check the latest update. Go to directory you would like to check, the run command follow instruction below:  
find . -type f -mtime -[day] -ls | sort -k8,9r
// syntax find = look at present date to previous date [day] and sort with column 8 and 9
 
find . -type f -mtime -1 -ls | sort -k8,9r
// check yesterday to today and sort by month and day
 
find . -type f -mtime -3 -exec ls --full-time  {} \; | sort -k6,7

Find and Get the size of all directories in the current directory

find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn
// maxdepth 1 = only category under current directory
// -type d = only directory
// xargs = pass list of directory to du command

Find, then copy to one directory

find [path-looking] -name "[keyword]" -exec cp [--parents] -r {} [destination]\;
 path-looking: directory or folder that we would like to look for (e.g. production/generic/wireframe/USdummycontent)
 keyword: wording to specific to find (e.g. data.rec, ae, wz*.*)
  --parents: append source path to DIRECTORY
  -r: copy directories recursively
  destination: directory or folder you would like to copy to
 
 Example:
find production/generic/site/language/  -name "fr" -exec cp --parents -r {} only_th/ \;
 (copy all fr folders to only_th folder)

Find, then copy to the same directory

find [path] -name "[keyword]" | awk '{print "cp -r "$1" "$1";"}' | sed "s/[keyword]\;/[newkeyword]/g" | sh
 
Ex:find . -name "en" | awk '{print "cp -r "$1" "$1";"}' | sed "s/en\;/ae/g" | sh