หน้าเว็บ

วันอาทิตย์ที่ 10 ตุลาคม พ.ศ. 2553

แก้ปัญหา compile Android Error Debug Certificate Expired

ถ้าใครลง Android แล้วพอคอมไพล์เกิดปัญหาคล้ายๆดังนี้

[2010-10-10 00:07:56 - Test] ERROR: Unable to open class file /path/to/androidproject/gen/com/example/androidproject/R.java: No such file or directory\R.java: No such file or directory
[2010-10-10 00:07:56 - Test] ERROR: Error generating final archive: Debug certificate expired on dd/MM/yyyy


ให้แก้โดยไปที่ ~/.android/ แล้วลบ debug.keystore ทิ้งซะ แล้วให้ทำการสร้างใหม่ด้วยคำสั่ง

%JAVA_HOME%\bin\keytool -genkey -keypass android -keystore debug.keystore -alias androiddebugkey -storepass android -validity 100000 -dname "CN=Android Debug,O=Android,C=US"

โดย %JAVA_HOME% คือ path ชี้ไปยังที่อยู่ของ jdk เช่น /usr/lib/jvm/java-6-sun เป็นต้น

เสร็จแล้วให้ลองปิด eclipse แล้วเปิดใหม่
แล้ว clean project แล้ว build ใหม่

ระบบที่ทดสอบ
OS: Ubuntu 10.04
IDE: Eclipse 3.5.2
AndroidSDK: 7 (2.1)

ที่มา
http://www.board.esanupdate.com/index.php/topic,5308.0.html

วันศุกร์ที่ 9 กรกฎาคม พ.ศ. 2553

วิธีเอาจอ Android ขึ้นจอคอม หรือ projector

สิ่งที่ต้องมี
1. Android SDK (ดาวน์โหลดได้ที่ http://developer.android.com/sdk/index.html ) แล้วสั่งเปิด adb server ด้วยคำสั่ง sudo adb start-server (คำสั่ง adb อยู่ใน /path/to/android-sdk-yourversion/tools โดย yourversion แทนด้วย sdk ที่ใช้ เช่นของผมคือ android-sdk-linux_86)
2. ดาวน์โหลดโปรแกรม DroidEx จาก http://groups.google.com/group/cw-android/web/DroidEx.jar

การเรียกใช้โปรแกรม
1. ที่เครื่อง android ไปที่ Settings->Applications->Development เลือก USB Debugging
2. ต่อสาย USB เครื่อง android เข้ากับ PC
3. บน PC ให้ cd ไปที่โฟลเดอร์ที่มีโปรแกรม DroidEx.jar ที่ดาวน์โหลดมา
4. สั่งคำสั่ง java -cp DroidEx.jar:/path/to/android-sdk-yourversion/tools/lib/ddmlib.jar com.commonsware.droidex.DroidEx (หรือถ้าอยากเรียกสั้นๆก็ให้ set classpath ให้มีค่า DroidEx.jar:/path/to/android-sdk-yourversion/tools/lib/ddmlib.jar แล้วเวลาเรียกก็เรียกแค่ java com.commonsware.droidex.DroidEx)

โปรแกรมจะแสดงภาพหน้าจอที่เราใช้งานขึ้นมา คราวนี้เราก็สามารถต่อเครื่อง PC เราออก projector ได้เพื่อให้คนอื่นเห็น

หมายเหตุ โปรแกรมจะทำงานโดยเรียกใช้ Dalvik Debug Monitor อีกทีนึง ดังนั้นสังเกตได้ว่าภาพจะไม่ใช่การ live video แต่เป็นการ capture ภาพแบบต่อเนื่องมาให้ดู จึงมีดีเลย์ระหว่างการ capture แต่ละภาพ

ระบบที่ทดสอบ
Device: Samsung Galaxy S (GT-I9000)
Android OS: 2.1 Eclair
PC OS: Ubuntu 10.04

อ้างอิง:
http://www.androidguys.com/2009/01/30/projecting-android-on-the-big-screen/
http://www.makeuseof.com/tag/how-to-capture-screenshots-with-your-android-mobile-phone/

Root Samsung Galaxy S ด้วย Ubuntu

วิธีการนี้คือวิธีที่ผมใช้ในการ root เครื่อง Samsung Galaxy S (ssgs) โดยใช้ Ubuntu 10.04 ครับ (หมายเหตุ การ root อาจทำให้เครื่องหมดประกัน และถ้าเกิดข้อผิดพลาดขึ้นได้ ข้อให้ทดลองอย่างระมัดระวัง และผู้เขียนไม่รับประกันใดๆครับ) สำหรับใครใช้ Windows ก็คล้ายๆกัน หรือลองไปอ่านในลิงค์อ้างอิงด้านล่างสุดได้ครับ

เครื่องมือที่ต้องใช้ในการ root
1. Android SDK Linux http://developer.android.com/sdk/index.html
2. Update Script http://forum.samdroid.net/attachments/f49/1224d1277452759-superuser-su-busybox-i9000-26-06-2010-update.zip หรือ http://www.deedns.net/update.zip

เตรียมเครื่องมือก่อน
บนเครื่องคอม

1. แตกไฟล์ android sdk สมมติว่าเอาไว้ที่ /path/to/android-sdk-linux_86 ให้เข้าไปที่โฟลเดอร์ tools ตัวที่เราจะใช้คือ adb
2. สั่งคำสั่ง sudo adb start-server

บนมือถือ ssgs
1. ไปที่ Settings->Applications->Development ติ๊กเลือก USB debugging
2. เสียบสาย usb ต่อเข้ากับคอม
3. เลื่อนแถบ notification bar ด้านบนลงมา เลือก USB connected แล้วเลือก Mount

โอเคเตรียมการเรียบร้อย ตอนนี้เครื่องคอมเราจะสามารถเข้าไปยังโฟลเดอร์ของ ssgs ได้ (จะมีของ haddisk 2GB และ SD Card 14GB) และลองทดสอบด้วยคำสั่ง adb devices จะมีรายการอุปกรณ์ขึ้นมาหนึ่งอัน (ในกรณีชื่อเป็น ?????? แสดงว่าตอนสั่ง adb start-server ลืมใส่ sudo ให้แก้ด้วยการสั่ง adb kill-server ก่อน แล้วลอง sudo adb start-server ใหม่อีกครั้ง)

เริ่มทำการ root
1. copy ไฟล์ update.zip ที่ดาวน์โหลดมาข้างต้นไปไว้ด้านนอกสุดของ SD Card
2. สั่งคำสั่ง adb reboot recovery แล้วเครื่อง ssgs จะเข้าสู่ recovery mode
3. พอเครื่อง ssgs เข้าสู่ recovery mode แล้ว ให้เลือก apply sdcard:update.zip (ใช้ปุ่ม volumn ด้านข้างในการเลื่อนขึ้นลง และกดปุ่ม Home ด้านล่างในการเลือก) แล้วเครื่องจะ reboot เป็นอันเสร็จพิธี

ตรวจสอบว่า root สำเร็จ
1. ใน Applications จะมีโปรแกรมชื่อ Superuser Permission โผล่มา
2. ลองโหลดโปรแกรม CacheMate มาติดตั้ง โปรแกรมจะขอสิทธิ root ในการทำงาน ถ้าทำงานได้โปรแกรมจะล้าง cache ของเครื่องทิ้งให้ ทำให้ได้พื้นที่คืนมา (ของผมลองแล้วได้ 14MB)

ระบบที่่ทดสอบ
Device: Samsung Galaxy S (GT-I9000)
Firmware: Android ECLAIR 2.1-update1
Baseband: I9000DXJF4
Kernel: 2.6.29
Ububunt: 10.04

เบื้องหลังการ root
0. ทดสอบว่าเป็น Galaxy 3 (GT-I5800) หรือ Galaxy S (GT-I9000) ก่อน แล้วทำการแตก package ออกมาเพื่อเตรียมใช้
1. ลบ su เดิมทิ้งออกจาก bin และ xbin
2. copy app Superuser, busybox และ su ตัวใหม่เข้าไป
3. สร้าง symlink ของ su และกำหนด permission ให้ su กับ busybox

อ้างอิง
http://pdamobiz.com/forum/forum_posts.asp?TID=321558&PN=1