Our SuccessKnowledges
NEXTZY Logo
Crews
Chat
Talk with Team
NEXTZY Logo
NEXTZY
Chat
Home>Knowledges

ความเข้าใจผิดของ Android Nougat 7.0 ที่หลายคนลืมหยิบมาทดสอบกัน

Share:

ความเข้าใจผิดของ Android Nougat 7.0 ที่หลายคนลืมหยิบมาทดสอบกัน

Table of contents

  • 1. SSLHandshakeException
  • 2. คำนวน Match Parent ของ Webview ผิด
  • Summary
Nonthawit

Nonthawit

CEO | Engineer | Designer

VIEW

3,859

CATEGORY

Technical

LAST UPDATED

February 18, 2018

Nonthawit

Nonthawit

CEO | Engineer | Designer

VIEW

3,859

CATEGORY

Technical

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 เช่นกัน

ref: https://stackoverflow.com/a/42047877

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

เพราะฉะนั้นคำตอบที่ดีที่สุดของปัญหานี้คือ

เราควรทดสอบทั้ง Android 7.0 และ 7.1 ครับผม

ซึ่งล่าสุดเราเจอ bug อยู่ 2 ตัว ที่เกิดบน 7.0 อย่างเดียว แต่บน 7.1 ทำงานได้ปกติดี 😱

ปล. ใครเจอทักมาบอกกันได้ครับเดี๋ยวเพิ่มไว้ในบล็อกให้เลย 😎

1. SSLHandshakeException

SSLHandshakeException from Android 7.0 only.

เนื่องจาก 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

2. คำนวน Match Parent ของ Webview ผิด

กรณีนี้คือ เราต้องการเปิด 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”

แค่นี้แหละ 😱

Summary

ถ้าเราไม่หยิบ Android 7.0 มาทดสอบเราคงไม่เจอ bug SSLHandshakeException และ Webview วัดความสูงผิด ซึ่งส่งผลเสียโดยตรงต่อ User Experience แน่นอน 😱

เพราะฉะนั้นอยากให้ทุกคนอย่าลืมหยิบ Android หลายๆรุ่นมากทดสอบกัน รุ่นที่คิดว่าไม่น่าเกิดปัญหาอะไร

อาจเกิดปัญหาได้เสมอครับ เพราะฉะนั้นทดสอบทุกเครื่องให้มากที่สุดเท่าที่จะทำได้

บล็อกนี้อาจดูสั้นๆแต่สำคัญนะ

วันนี้พอแค่นี้เจอกันบล็อกหน้าเนาะ 😎

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

Share:

KNOWLEDGE

Related Articles

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

Nonthawit

CEO | Engineer | Designer

เข้าใจการทำ Selector แบบ Ripple effect

20 สิ่ง ที่ได้หลังจากเป็น Android developer ที่ Nextzy 3 เดือน
Nonthawit

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 มันเท่มาก
Nonthawit

Nonthawit

CEO | Engineer | Designer

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

NEXTZY Logo
NEXTZY
48/27 Ratchadaphisek Rd, Samsen Nok, Huai Khwang, Bangkok 10310

Base at Thailand

Thailand

Home

Crews

Success

Download press kits

Knowledges

Chat

Talk with team

SCHEDULE