มีเพื่อนมาขอคำแนะนำ เค้าเขียนแอพขึ้นมา มี feature หนึ่งจะเอาไฟล์ไปใส่ใน Drive ติดที่ว่าพอขึ้นหน้าจอเลือก account แล้วมันก็หมุนวนไปวนมาอยู่อย่างนั้น หลังจากทดลองทำสำเร็จแล้ว เลยมาบันทึกไว้หน่อย
วันพุธ, มีนาคม 09, 2559
วันพุธ, กรกฎาคม 22, 2558
Tools น่าใช้สำหรับ Android developer (LeakCanary, Fresco) และความเปลี่ยนแปลงของ String API ใน Android M
LeakCanary เครื่องมือตรวจจับ memory leaked ใน android app ของเรา
Fresco facebook ทำ tools สำหรับการแสดงภาพในแอพ android ของเรา ไม่ต้องกังวลเรื่อง OOM
Dude, Where's My char[]? เรื่องที่ว่า String API source code ใน Android M ไม่เหมือนกับแต่ก่อน ไม่มี char array แล้ว การ optimize นี้เป็นประโยชน์ ทำให้การทำงานกับ String เร็วขึ้น(แอพก็ใช้ String มากมายอยู่แล้ว)
แต่ตอนนี้ไม่ได้พัฒนา Android เลย คงยังไม่ได้ใช้ tools 2 ตัวนี้ -_-
วันพุธ, กรกฎาคม 08, 2558
วิธีอัพ HTC One กลับเป็น ROM ศูนย์ 100% (ลบ tampered, relocked จาก hboot 1.54)
เผยแพร่ครั้งแรก ที่ droidsans.com
เนื่องจากจะต้องเอาเครื่อง htc one ไปเคลมกล้อง ไอ่เราก็ไม่คิดว่าจะมีวันนี้
และสืบเนื่องจาก ศูนย์บริการ HTC Thailand เคยบอกผมว่า
ถ้าเครื่องคุณ bootloader ขึ้น TAMPERED, RELOCKED แบบนี้
จะถือว่า rooted และหมดประกัน (จะซ่อมแบบเปลี่ยน mainboard เท่านั้น)
เครื่องผมตอนนี้ hboot เป็น version 1.54 ซึ่งจะใช้ revone มาแก้ tempered, relocked ไม่ได้
วิธีทำสำหรับ HBOOT 1.44 คุณ rakyim เขียนไว้ ที่นี่
[updated] ท่านที่ทำ superCID ไปด้วย มีวิธีทำกลับให้เป็น HTC__044 ให้ดู โพสของคุณ rakyim (บรรทัดข้างบน)
ขอบันทึกขั้นตอนไว้ที่ droidsans แห่งนี้ เผื่อมีคนต้องการจะทำบ้าง แล้วไม่รู้จะไปทางไหนดี
คำเตือน! อ่านและศึกษาให้เข้าใจก่อนลงมือทำ การกระทำขั้นตอนตามโพสต์นี้จะทำให้ข้อมูลของคุณ ในเครื่องหายหมด (เหมือนใหม่แกะกล่อง จะมีก็แต่ของที่ htc ให้มา)
เครื่องมือที่ใช้
- rumrunner_HTC_0.5.0.zip จากเวบ rumrunner.us
- Flash Guru_Bootloader_Reset_1.0.zip มาจาก xda-dev
- RUU zip (4.1.2) จาก ที่นี่ htc1guru
RUU เลือกตัวนี้
RUU Zip M7 U JB 50 HTC Asia WWE 1.29.707.4 R Radio 4A.14.3250.13 10.33.1150.01 Release 312087 Signed 2 4 Decrypted
File Size: 1005.8 MiB - Downloads: 4656
MD5: 9b1c26b17e5ebabff176e18caeb13190
TL;DR ขั้นตอนแบบคร่าวๆ
- ทำ S-OFF
- Reset bootloader เพื่อลบคำว่า TAMPERED, RELOCKED
- Flash RUU (ROM ศูนย์)
- ทำ S-ON
ขั้นตอนการทำ
- วิธีทำกลับ ROM ศูนย์ที่ง่ายที่สุดคือ flash RUU กลับ แต่ว่าถ้าเครื่องเราเป็น S-ON มันจะทำไม่ได้ แล้ว
เครื่องเรา มี HBOOT version 1.54 จะทำ S-OFF ด้วยวิธีง่ายโดยใช้ revone ไม่ได้อีกเช่นกัน เราจะใช้ rumrunner - โหลด rumrunner มาให้พร้อมครับ, ตอนที่ใช้นี้เป็น version universal 0.5
- การจะใช้ rumrunner ได้
ต้องมี internet ที่ใช้งานได้
เครื่องจะต้อง OEM unlock หรือ rooted ก่อน และ Window ของเราจะต้องใช้ คำสั่งพวก adb, fastboot ได้ด้วย
เปิด USB debugging ที่เครื่อง HTC One
Fast boot disabled ที่เครื่อง HTC Onesettings -> Power-> un-check "fast boot”
วิธี rooted ไม่บอกแล้วนะครับ (สำหรับอ้างอิง: ผมใช้ TWRP 2.6.3.3 กับ SuperSU v1.65 ของ clockworkmod) - ข้อสำคัญของการรัน rumrunner เครื่อง window ต้องปิด firewall และ ปิด antivirus ในระหว่างที่เรียกมันทำงาน
- Double click soju.exe เพื่อเป็นการเรียกทำงาน
- เมื่อทำ S-OFF ด้วย rumrunner สำเร็จ ต่อไปเราจะ reset bootloader กัน
- Flash
Guru_Bootloader_Reset_1.0.zip
ด้วย TWRP recovery *ดูหน้าจออย่างละเอียดได้จากเวบต้นทางนะครับ - ตอนเลือก option ให้เลือก remove TAMPERED กับ LOCK Bootloader
*ภาพจาก htc1guru - เมื่อเสร็จแล้วลอง boot เข้า bootloader ตรวจสอบได้ TAMPERED จะหายไปและมีคำว่า LOCKED (ไม่ใช่ RELOCKED) แล้ว
ต่อไปเราจะ Flash RUU เพื่อกลับ ROM ศูนย์แล้ว
- เตรียมไฟล์ RUU Zip M7 U JB 50 HTC Asia WWE 1.29.707.4 R Radio 4A.14.3250.13 10.33.1150.01 Release 312087 Signed 2 4 Decrypted.zip เอาไว้
*เราอาจจะเปลี่ยนชื่อยาวๆนี้เป็น RUU.zip สั้นๆก็ได้
เรียกคำสั่ง
adb reboot-bootloader
พอเข้าหน้า fastboot แล้ว เราจะสั่ง
fastboot oem rebootRUU
ทีนี้เราจะเห็นหน้าจอพิ้นสีดำ ตัวหนังสือ htc สีเงิน
fastboot flash zip RUU.zip
จะเห็นคำว่า FAILED อย่าตกใจครับ เราจะต้องสั่งคำสั่งเดิมอีกครั้ง
fastboot flash zip RUU.zip
สังเกตที่ตัวเครื่อง ปรอทสีเขียวจะเพิ่มขึ้นเรื่อยๆ พอมันทำเสร็จ สังเกต prompt ใน cmd มันจะกลับมาให้พิมพ์ได้อีกครั้ง
เราจะสั่ง reboot ได้แล้ว
fastboot reboot
reboot กลับมา จะใช้เวลา boot นานหน่อยครับ อย่าตกใจ
เราจะได้ ROM ศูนย์ เหมือนตอนซื้อแกะกล่อง เหมือนเมื่อตอนมันออกวางตลาดเดือนแรกแล้วครับ (android 4.1.2)
สั่งคำสั่ง เข้า bootloader อีกครั้ง
adb reboot-bootloader
เราจะเห็นว่า HBOOT เรากลับมาเป็น version 1.44 แล้ว เยส..ส
ถ้าทำ super CID ไว้ด้วย หลังจากได้ HBOOT 1.44 มาแล้ว ก็น่าจะทำตามโพสคุณ rakyim เพื่อทำกลับมาเป็น cid ของบ้านเราได้ หลังจากทำ CID กลับมาแล้วค่อยทำขั้น 13 ต่อไป
- สั่งคำสั่งเพื่อเปลี่ยน S-OFF เป็น S-ONfastboot oem writesecureflag 3
- ทดลอง reboot เข้า bootloader อีกครั้ง เพื่อดูว่า S-OFF กลับเป็น S-ON แล้ว
เรียบร้อยเสร็จพิธีครับ พาเครื่องไปใช้งาน หรือเข้าศูนย์เพื่อเคลมได้เลย
เมื่อเรา boot เข้าใช้งานปกติ ก็มาเริ่ม update ROM ผ่านทาง OTA เพื่อ upgrade เป็น 4.2.2 ได้
ถ้าสงสัยตรงไหนหรืออยากปรึกษา ทิ้งข้อความไว้ หรือ hangout มาคุยกันได้ครับ
วันพฤหัสบดี, พฤษภาคม 14, 2558
Android TIPS: Using find command solving Titanium Backup backup problem.
TIPS: HOWTO find the zero-bytes filename under folderA then copy those files which have the same name from folderB to a new folder.
TL;DR
เจอปัญหาเมื่อวานนี้ ผมอยากจะ flash rom ของ one plus one temasek's cm12.1 by katinatez
katinatez บอกว่าควรจะ clean flash เสมอ ซึ่งก็คือต้อง wipe factory reset+wipe dalvik cache
ผมจึงทำการ backup apps ทั้งหมดด้วย Titanium Backup Pro ซึ่งใน post ที่แล้ว. หลังจาก clean flash เสร็จ หายนะก็มาเยือน พบว่า user apps หลายตัว (150 ตัว) ม้นกลายเป็น zero-bytes T_T อาการก็คือ กด restore แล้ว มันไม่มีวันทำเสร็จ
ทางแก้เท่าที่นึกออกมีสองทาง คือ
1. ไล่ลงใหม่จาก Play Store วิธีนี้เสียเวลามาก จึงนึกถึงวิธีต่อมา
2. หาทางเอา app backup กลับมา
โชคดีที่มี backup ของ Titanium Backup ซึ่งสำรองออกมาไว้ใน hard disk เนื่องจากเพิ่ง convert partition เป็น F2FS ไป แต่ทีนี้จะทำอย่างไรละ ถึงจะ copy files ชื่อเดียวกันที่มี size 0 ใน backup -ของ device จาก backup ที่อยู่ใน harddisk ออกมาได้ โดยไม่ต้องมานั่งไล่ทีละไฟล์
ค้นไปมาได้คำสั่ง linux ใช้ find, xargs และ cp
Solution
ขั้นตอน
1. Folder A (i.e.: titanium) มี backup folder ที่มีไฟล์ apk สมบูรณ์;
2. Folder B (i.e.: titanium2) backup folder ใน device ที่ apk เสียหาย
เอาออกมาจาก device ด้วยคำสั่ง
$ adb pull /sdcard/TitaniumBackup titanium2
3. ใช้คำสั่ง แบบนี้เพื่อหาไฟล์ที่มี size 0
$ find . -name '*apk.gz' -size 0
...
./at.mroland.android.apps.nfctaginfo-fbe0527a89f99a3d74bc385b51a294e2.apk.gz
./com.android.cellbroadcastreceiver-587c950124ea3e2d04bec29d1d1ca69d.apk.gz
./com.android.cellbroadcastreceiver-d7a84dcdb56f2c8ccc7468f53879e64d.apk.gz
./com.android.facelock-7b306c42af02a5de1d326f9ae42356a5.apk.gz
./com.android.facelock-a5d85c816569809e5c7ec5998ad79da4.apk.gz
./com.android.vending-cdc700d6cfb743abce9e22dd3fd16712.apk.gz
...
ไฟล์ backup ของ Titanium Backup จะมี extension เป็น apk.gz
4. เมื่อเจอแล้วว่าไฟล์ไหน size 0 บ้าง ทีนี้จะให้มันไป copy จาก folder ที่มี apk สมบูรณ์ไปพักไว้ที่ folder C ก่อนนำไปใช้
$ cd titanium2
$ mkdir recoverApp
$ find . -name '*apk.gz' -size 0 | xargs -I{} cp titanium/{} recoverApp/
เราจะได้ apps ที่สมบูรณ์มารออยู่ที่ recoverApp แล้ว
วันอังคาร, พฤษภาคม 12, 2558
แปลง partition เป็น F2FS แบบข้อมูลไม่หาย | Convert Android partitions to F2FS without data lost.
ตอนนี้ใช้ Oneplus One อยู่ ลง ROM CM 12.1 เป็น unofficial build ของ temasek
ตัวนี้ [ROM][Bacon][5.1.1][Linaro 4.9 & 5.1]Temasek's UNOFFICIAL Build by katinatez วันหนึ่ง version 11.2 มันถูก build ออกมา พอผมเอามา flash แล้วมันเกิด bootloop ใช้งานต่อไม่ได้ ไปนั่งไล่อ่าน changelog นาย katimatez เค้าไป merge เอา feature เกี่ยวกับ F2FS partition เข้ามารวมด้วย
F2FS เลยเป็นตัวต้องสงสัย ว่าจะทำให้เรา boot ไม่ผ่าน เลยต้องไปหาว่าจะแปลง partition ของเราให้เป็น F2FS ได้ยังไง
The motive for F2FS was to build a file system that from the start, takes into account the characteristics of NAND flash memory-based storage devices (such as solid-state disks, eMMC, and SD cards), which are widely used in computer systems ranging from mobile devices to servers.F2FS on Wikipedia
ตาม FAQ ของ rom นี้ บอกไว้ว่า มันทำงานได้กับ ext4 เช่นกัน ซึ่งเราไม่ได้ใช้ F2FS อยู่แล้ว ก็ใช้งานได้มาตั้งแต่ version 10
This rom has a unified version for f2fs and ext4, which means no more modifying fstab or updater-script, just flash rom zip file!
Requirement is to format system partition to ext4, & data/cache formatted to f2fs.
* สำหรับท่านที่ไม่ได้ใช้ OPO วิธีการก็เหมือนกัน จะแตกต่างก็ตรง recovery image ที่ใช้ ท่านจะต้องไปหา recovery ที่ใช้สำหรับ Android รุ่นที่ท่านใช้ และรองรับ F2FS (เช่น philz touch หรือ TWRP) *
** ขั้นตอนในโพสต์นี้ต้องทำการเปลี่ยน recovery image ซึ่งทำให้ท่านต้องทำการ unlock bootloader หรือ root เครื่อง Android ซึ่งอาจจะทำให้ warranty ของเครื่องนั้นหมด ผู้เขียนไม่รับผิดชอบต่อความเสียหายที่อาจเกิดขึ้น **
สิ่งที่ต้องเตรียม
1. Recovery ตัวที่รองรับ F2FS
ผมใช้ตัวนี้ philz_touch_6.59.1-bacon.zip ของ katinatez หรือ
จะโหลดจาก backup ของผม
2. พื้นที่ว่างใน /sdcard สำหรับ backup partition data (/data)
3. พื้นที่ว่างใน hard disk สำหรับสำรอง backup file ในข้อ 2 และ backup จาก /sdcard เอง
*เนื่องจาก /sdcard มันเป็น link ชี้ไปที่ /data/media/0 เดี๋ยวเราจะ format /data เป็น F2FS ก็จะทำให้ของใน /sdcard ถูก format ไปด้วย
ขั้นตอนการทำ
1. Boot เข้าสู่ recovery mode เข้าเมนู Backup and Restore ทำการ backup /data partition
2. เมื่อมัน backup เสร็จ เราจะต้อง backup /data/media มายัง hard disk ของเรา จะใช้ MTP ผ่านทาง Window OS หรือ adb pull ก็ได้
3. ผมใช้ adb pull ใช้คำสั่ง
$ adb pull /data/media sd-backup
4. ช้าหรือเร็ว ขึ้นอยู่กับว่าของใน /sdcard มีไฟล์มากหรือเปล่า เมื่อ pull เสร็จแล้ว ให้เข้า menu Mount and Storage
5. เลือก toggle เปิดการ format แบบ F2FS ทำการ format partition /data และ /cache
6. ออกมาจากเมนูนั้น ตรวจสอบว่า mount /data อยู่หรือไม่
7. ถ้ามัน mount /data แล้ว ก็ทำการเอา backup คืนกลับเข้าไปใน /sdcard
ใช้คำสั่ง
$ adb push sd-backup /data/media/
สั่งแบบนี้ แล้วของใน sdcard มันจะอยู่ที่เดิม
8.อาจจะลองตรวจสอบอีกครั้งว่า folder 0 มันอยู่ที่ /data/media/0 หรือไม่ /data/media/0 จะถูก mount เป็น /sdcard นั่นเอง
9.ใช้เมนู Backup and Restore เพื่อเอา /data กลับคืนสู่ที่เดิม
10.ทดลอง reboot system
11.ถ้าเข้า OS ได้แล้ว แต่เจอปัญหาว่า apps ต่างๆมันเขียน /sdcard ไม่ได้ ให้ boot กลับมาที่ recovery อีกครั้ง
ใช้ชุดคำสั่งนี้พื่อแก้ไข
เสร็จสิ้นกระบวนการ :)chown -R media_rw:media_rw /data/media/find /data/media/ -type d -exec chmod 775 {} ';'find /data/media/ -type f -exec chmod 664 {} ';'
ถ้ามีเวลามากกว่านี้จะลองทำ screen capture มาใส่ เพื่อให้ดูน่าอ่านยิ่งขึ้นนะครับ
อ้างอิง:
- [SCRIPT/FIX] Internal sdcard permissions (/data/media/)
วันอาทิตย์, มกราคม 22, 2555
Ubuntu: Android development setup resources
Eclipse SDK
Eclipse Classic 3.7.1 http://www.eclipse.org/downloads/
Android SDK
Download http://developer.android.com/sdk/index.html
Installing http://developer.android.com/sdk/installing.html
Android ADT
http://developer.android.com/sdk/eclipse-adt.html
Optional
Subclipse (Subversion plugin for eclipse)http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA
Eclipse update site URL: http://subclipse.tigris.org/update_1.6.x
Ubuntu: Got an error libncurses.so.5 wrong ELF class when execute adb
when execute adb, got an error like this
#: adb
adb: error while loading shared libraries: libncurses.so.5: wrong ELF class: ELFCLASS64
Solution
Install ia32-libs to the system
sudo apt-get install ia32-libs
Refer to Google documentation here
http://developer.android.com/sdk/installing.html#troubleshooting