อย่าลืม share ให้มนุษย์ Android คนอื่นด้วยหละ 😎

Table of contents

Nonthawit
CEO | Engineer | Designer
VIEW
3,859
CATEGORY
LAST UPDATED
February 18, 2018
ใครหลายคนอาจเข้าใจผิดว่า การเทสแอปตัวเองบน Android version 7.1 นั้นถือว่าเพียงพอและครอบคลุม Android version 7.0 ด้วย
บอกเลยว่า Android Developer หลายคนๆกำลังเข้าใจผิด
ถ้าในแง่ผู้ใช้อาจเข้าใจว่า Android series 7.0 และ 7.1 ถือเป็น series เดียวกันไม่น่าจะมีอะไรต่างกันมาก แต่ในแง่ developer ถือว่า API level ต่างกัน นั่นหมายความว่าตัว source code นั้นต่างกันแน่นอนครับ
และตาม dashboard ด้านล่าง เป็นเรื่องน่าเศร้าที่เปอร์เซ็น Android 7.0 มากถึง 22.3% ซึ่งนั่นมากกว่า 7.1 อยู่พอสมควรแล้วทำไมเราจะไม่หยิบมาเทสด้วยหละ

ซึ่งคนใน stackoverflow ก็เจอ bug อยู่หลายตัวที่เกิดจาก android 7.0 เช่นกัน

เป็นที่มาของ android 7.1 ที่ไม่ค่อยมี key features เพิ่มจาก 7.0 อะไรมาก เป็นการแก้ bug ซะมากกว่า

เพราะฉะนั้นคำตอบที่ดีที่สุดของปัญหานี้คือ
เราควรทดสอบทั้ง Android 7.0 และ 7.1 ครับผม
ซึ่งล่าสุดเราเจอ bug อยู่ 2 ตัว ที่เกิดบน 7.0 อย่างเดียว แต่บน 7.1 ทำงานได้ปกติดี 😱
ปล. ใครเจอทักมาบอกกันได้ครับเดี๋ยวเพิ่มไว้ในบล็อกให้เลย 😎

เนื่องจาก android 7.0 ซัพพอร์ต Handshake Encryption แค่ 1 ตัวคือ
Elliptic curves (1 curve)
Elliptic curve: secp256r1 (0x0017)
แต่ android 7.1 มี Handshake Encryption ถึง 3 ตัว คือ
Elliptic curves (3 curves)
Elliptic curve: secp256r1 (0x0017)
Elliptic curve: secp384r1 (0x0018)
Elliptic curve: secp512r1 (0x0019)
ซึ่งบาง API service ที่เราไปยิงอาจไม่รองรับ secp256r1 ทำให้เกิด SSLHandshakeException ได้นั่นเอง เช่น ถ้า API มีการโหลดรูปภาพมาวางไว้ที่ ImageView ก็จะไม่ขึ้นเลยครับทำให้ User Experience แย่ไปเลย
แก้ไขโดยเราต้องเขียนโค้ดเพิ่มเพื่อไปเปิดใช้ TLS protocol กับ cipher ให้กับ client เฉพาะ Android version 7.0 นั่นเอง
BONUS: สามารถเข้าไปดู Handshake Encryption แบบต่างๆได้ที่ www.privateinternetaccess.com/pages/vpn-encryption#ecc_warning
กรณีนี้คือ เราต้องการเปิด Dialog โดยใช้ webview ในการแสดง Terms and Conditions เนื่องจากมันเป็น HTML tagเนาะ
โค้ดส่วนของ XML เหมือนกันดังนี้
<WebView
android:id=”@+id/webview”
android:layout_width=”match_parent”
android:layout_height=”match_parent” />
บน Android 7.1 แสดงผลอย่างถูกต้องไม่มีปัญหาอะไร แต่พอนำมาแสดงผลบน Android 7.0 ดันวัดความสูงผิดซะงั้น ทำให้ความสูงเป็น 0 เฉยเลย 😱

แก้โดยเปลี่ยน
android:layout_height=”match_parent”
เป็น
android:layout_height=”wrap_content”
แค่นี้แหละ 😱
ถ้าเราไม่หยิบ Android 7.0 มาทดสอบเราคงไม่เจอ bug SSLHandshakeException และ Webview วัดความสูงผิด ซึ่งส่งผลเสียโดยตรงต่อ User Experience แน่นอน 😱
เพราะฉะนั้นอยากให้ทุกคนอย่าลืมหยิบ Android หลายๆรุ่นมากทดสอบกัน รุ่นที่คิดว่าไม่น่าเกิดปัญหาอะไร
อาจเกิดปัญหาได้เสมอครับ เพราะฉะนั้นทดสอบทุกเครื่องให้มากที่สุดเท่าที่จะทำได้
บล็อกนี้อาจดูสั้นๆแต่สำคัญนะ
วันนี้พอแค่นี้เจอกันบล็อกหน้าเนาะ 😎

อย่าลืม share ให้มนุษย์ Android คนอื่นด้วยหละ 😎
KNOWLEDGE


Nonthawit
CEO | Engineer | Designer
เข้าใจการทำ Selector แบบ Ripple effect


Nonthawit
CEO | Engineer | Designer
20 สิ่ง ที่ได้หลังจากเป็น Android developer ที่ Nextzy 3 เดือน
บทความนี้แชร์ประสบการณ์ 3 เดือนแรกของการทำงานเป็น Android Developer ที่ Nextzy ครอบคลุมทั้งด้าน technical เช่น MVP architecture, Android Lifecycle, ProGuard, Git workflow และการเขียน Unit Test รวมถึงด้าน soft skill อย่างการสื่อสารกับทีม, การแชร์ความรู้, และการเขียนโค้ดให้ readable และยืดหยุ่น นอกจากนี้ยังสะท้อนวัฒนธรรมองค์กรที่เน้นทีมเวิร์ค การ review โค้ด และบรรยากาศการทำงานที่สนุกสนาน ซึ่งล้วนช่วยลด learning curve และพัฒนาทักษะได้เร็วกว่าการเรียนรู้คนเดียว
![[Tip/Trick] วิธีติดต่อกับ WebView ผ่าน JavascriptInterface มันเท่มาก](https://image.nextzy.tech/1_Aleix_TFC_7yz_Qh_Q_Sx_GV_Rqxw_a29e28219a.png)

Nonthawit
CEO | Engineer | Designer
[Tip/Trick] วิธีติดต่อกับ WebView ผ่าน JavascriptInterface มันเท่มาก