Android in local environment

Christopher Hay-Yin Ng
Black Lens
Published in
1 min readDec 25, 2017

--

ปกติแล้วเมื่อสร้าง project เราก็จะได้ environment อยู่สองตัวคือ debug และ release ซึ่งผมมักจะใช้ debug กับ staging server และ release กับ production server แต่ก็มีบางครั้งที่ผมต้องต่อกับ server บน local machine เลยมี local สำหรับ local environment
ซึ่งแน่นอนว่าการกำหนด url เป็น localhost ไม่สามารถทำให้ simulator หรือ device รู้จัก server ที่มีอยู่บนเครื่องได้ เลยต้องระบุเป็น IP address ตรงๆไปเลย

แต่ทุกครั้งที่ต่อ access point ใหม่ IP address ก็จะเปลี่ยนไป ต้องมาเปลี่ยนที่ build.gradle ทุกครั้งคงไม่สนุกนัก จะดีกว่ามั้ยถ้า Gradle สามารถดึง IP address มาให้เราแล้วใส่เข้าไปใน BuildConfig ตรงๆเลย

เตรียมความพร้อม

มาสร้าง function สำหรับการเรียก IP address กันก่อนใน build.gradle

เราสามารถดึงค่า IP address ง่ายๆจาก lib Java ด้วย

def localhost = InetAddress.getLocalHost().getHostAddress()

แต่วิธีนี้อาจทำให้เราได้ loopback address (127.0.01) มาได้ วิธีที่ปลอดภัยคือดึงค่า IP address ทั้งหมดที่มี แล้วข้าม loopback address และเอาเฉพาะ site-local address มาแทน

จาก code ข้างต้น เมื่อเจอ site-local address แล้ว จะเอาค่านั้นมาใช้ทันที แต่ถ้าสุดท้ายแล้วยังไม่ได้ IP address ก็จะกลับมาเรียก InetAddress.getLocalHost()

เตรียม function เสร็จแล้ว ก็เอามาใช้งานในส่วนของการสร้าง BuildConfig ใน buildTypes

หลังจาก sync Gradle แล้ว ใน class BuildConfig.java ก็จะมี property API_URL ตามค่า IP address ของเครื่องเรา

เพียงเท่านี้ เราก็สามารถเชื่อมต่อกับ local environment ได้ทุกที่ทุกเวลา

ก็จบเพียงเท่านี้ Happy Gradle ครับ

--

--