Oh! No! เอาแอปขึ้น PlayStore ด้วย TargetSDK version 27 ไม่ได้แล้ว !

カシー
カシー
Nov 6 · 3 min read

หลายคนคงทราบเรื่องนี้จากการประกาศผ่านหน้า Play Console ของทาง Google แล้วว่า เราจะไม่สามารถอัปเดต Android APK ที่มีเลข TargetSDK ต่ำกว่า 28 ขึ้นสู่ Console ได้แล้ว แต่ ! ก็คงจะมีบางคนที่เป็นอย่างเรา ที่ยังไม่อยากอัปเดท SDK ขึ้นไปเนื่องด้วยปัจจัยหลายๆอย่าง อาทิ โปรเจคที่ได้รับมอบหมายให้ดูแลเป็นโปรเจคใหญ่ ยุค 2017 คาบเกี่ยว 2018 ยาวมายัน 2019 และจะโกออนไป 2020, ไลบรารี่ตั่งต่าง ถ้าอัปเดทขึ้นไป จะยังซัพพอร์ทหรือไม่ ฯลฯ

จากหลายๆอย่างทำให้มีความดื้อดึง ยืดเยื้อ ไม่ยอมอัปเดต จนมาถึงวันนี้ และแล้ว ปัญหาก็เกิดขึ้นมาจนได้ ผ่าง !

อัปโหลดอย่างไรก็ไปไม่ถึงฝั่งฝันหากยังดื้อดึงใช้ Targets API เป็น 27 หรือต่ำกว่านั้นอยู่

เมื่อปัญหาเกิดขึ้นมาแล้ว เราก็จำเป็นต้องแก้ไขเป็นการด่วน ไม่เช่นนั้นเราคงได้โดนหัวหน้าไล่ออกแน่ๆ ถ้าแค่อัปเดตเวอร์ชั่นแอปยังทำไม่ได้ … ไปค่ะ ไปลองอัปเกรดกันสักตั้งซิ ว่าจะเจอเหตุการณ์อย่างไร

จากตรงนี้ ใครไม่อยากดูยาวๆ ข้ามไปอ่านที่ Recap ได้เลยนะคะ

เริ่มแรก ลองจากการเปลี่ยน compileSdkVersion และ targetSdkVersion เป็น 28 กัน

เปลี่ยนเลขตรงเส้นขีดแดง กด Sync Now ก็น่าจะจบแล้วป่ะ​ ?
เปลี่ยนเลขตรงเส้นขีดแดง กด Sync Now ก็น่าจะจบแล้วป่ะ​ ?
เปลี่ยนเลขตรงเส้นขีดแดง กด Sync Now ก็น่าจะจบแล้วป่ะ​ ?

หากคิดว่า แค่เปลี่ยนเลขแล้วจะจบล่ะก็ … ไม่จริงค่ะ … เอาจริงๆคือก็ build ผ่าน แต่พอลองจิ้มบางฟังก์ชั่นในแอปก็จะพบว่า

พังเรียบร้อยเลยจ้า

เรียบร้อยเลยฮะ แอปก็จะพังโดยประมาณนี้ …

วิธีแก้ไขก็คือ… คือ… คือออออ !

อัปเดต libs เวอร์ชั่นขึ้นไปเลยจ้า อะไรแดงๆ อัปขึ้นไปให้หมด !

นี่ไง แดงๆ เขาบอกว่าไม่ควรใช้เวอร์ชั่นที่ต่างกันกับ complieSdkVersion นะ (เราเปลี่ยนเป็น 28 แล้ว ต้องอัปตามนะ)

นอกจากที่แจ้งเป็นเส้นหยึกหยักแล้ว การอัปเกรดไลบรารี่ต่างๆที่เราใช้ขึ้นไปให้เป็นตัวล่าสุดก็ย่อมดีมากๆเช่นกัน เพราะฉะนั้น ไปลองอัปเดตเลยยย

บู้มมมมมมมม !!!

เออเรอร์อีกแล้วววว !!!!

ในส่วนของ Error ตัวนี้ มีสองวิธีให้เลือก คือ
1. เพิ่มแท็ก tools:replace ใน <application> ซึ่งอยู่ในไฟล์​ Manifest ของเรา หรือ
2. Migrate to AndroidX
ให้เวลาคิด 2 วินาที


และใช่ค่ะ เราไม่เลือกทางแรก เราทำการ Migrate to Android X เลย ! (และแอบ Migrate to AppCompat ด้วยเช่นกัน) โดยวิธี Migrate นั้น ทำได้โดย เลือกที่
Refactor -> Migrate to AndroidX… และ Refactor -> Migrate to AppCompat…

หลังจากทำการ Migration เสร็จ ในโปรเจคเราก็พบกับปัญหา เป็น Log หน้าตาแปลกๆ ที่หาข้อมูลใน Google เท่าไหร่ก็ไม่เจอ ซึ่ง Logs error ที่เราพบก็คือ !

e: error: cannot generate view binders java.lang.StackOverflowError ​
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:209)
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)

งงไปเลยจ้า Logs อะไร ทำไม แก้ยังไง ? มาค่ะ เราแก้ได้แล้ว หากคุณเจอ Logs แบบนี้เช่นกันกับเรา ให้คุณทดลองหาว่า ภายในโปรเจคของคุณมีสิ่งที่เรียกว่า ObservableFields หรือไม่ เพราะสิ่งนี้นั่นแหละค่ะ ที่ทำให้เกิด Logs ตัวนี้ขึ้น

แก้ไขทั้งหมดได้ด้วยการเปลี่ยนจาก ObservableField ไปเป็น LiveData หรือ MutableLiveData ก็ย่อมได้ เปลี่ยนเสร็จ กลั้นใจ นับหนึ่งถึงสามและกด Run ‘app’ ได้เลยค่ะ !

พบสิ่งนี้ ก็สบายใจจจ ใช้งานได้แล้ว !

หากยัง Run ไม่ได้ ก็ลองไล่แก้ Error ตามที่ปรากฏใน Logs ไปเรื่อยๆ เพราะเราไม่รู้ว่าจะเจอ Logs แบบเดียวกับเราไหมนะคะ แต่เบื้องต้น จะไม่เจอปัญหาอะไรมาก นอกจากว่าบางไฟล์จะต้องการ Activity แต่เราใส่ AppCompatActivity ไป ก็ทำการแก้ไขด้วยการเปลี่ยนมันกลับดื้อๆจาก AppCompatActivity เป็น Activity ได้เล้ย !

หวังว่าบทความนี้จะมีประโยชน์กับใครก็ตามที่เจออาการคล้ายๆเรานะคะ และสำคัญอยากจะบอกว่า โปรเจคทุกโปรเจคต้องมีการปรับปรุงและเปลี่ยนแปลงไปตามระยะเวลา ข้อสำคัญที่เราเหล่า Developer ควรจะทำก็คือเขียนโค้ดให้รองรับกับการเปลี่ยนแปลง และหมั่นตามเทรน อย่าปล่อยไว้นานจนการแก้มันยากเกินไปกว่าการสร้างใหม่นะคะ ! ขอให้สู้ ทุกคนสู้ !!! ป่ะ ไป Recap กันอีกสักนิด ก็จบบทความแล้วค่ะ


Recap

カシー

Written by

カシー

โลกของคนเป็ดๆ

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade