สร้างหน้า Open Source Notices บน Android Application
พอดีมีเหตุที่แอพทั้งออฟฟิศต้องทำ แล้วก็สงสัยด้วยแหละว่าจริงๆต้องทำยังไง ต้องทำเองไหม ต้องเอา license มาจากไหน บลาๆ
แล้วหัวหน้าก็ส่ง link นี้มา เป็น document ของทาง Google Play Service
ก็เลยลองมาทำดูดีกว่าาาา~~~~
ถ้าถามว่า iOS มีไหม ก็อันนี้เลยจ้า
ขั้นตอนการใส่ Open Source License ในแอพของเรา
ไปที่ build.gradle
ของโปรเจก และทำการใส่ 2 สิ่งก็คือ Google Maven repository และ oss-licenses
plugin
buildscript {
repositories {
...
google() // maven { url "https://maven.google.com" } for Gradle <= 3
}
dependencies {
...
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.4'
}
}
จากนั้นไปที่ app/build.gradle
ถึงเราจะทำโปรเจก modular แล้วเปิดผ่าน module อื่น เราก็ต้องใส่ในนี้อยู่ดีจ้า เพราะเราจะใส่ในชั้น module application เนอะ
plugins {
id 'com.android.application'
id 'com.google.android.gms.oss-licenses-plugin'
}
ใส่เสร็จแล้วไปใส่ dependency ของเจ้า oss-license
ใน module ที่เราต้องการกดเปิด โดยใส่เข้าไปดังนี้
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
ทำการ sync gradle 1 ทีเบาๆ ให้เรียบร้อย
จากนั้นทำการเรียก Activity ที่แสดง dependency ในโปรเจกทั้งหมดที่เราใช้ เราจะทำ view นึงเพื่อกดเข้าไปดูสิ่งนี้ ข้างในจะใส่ไปอย่างนี้เนอะ
startActivity(
Intent(
requireActivity(),
OssLicensesMenuActivity::class.java
)
)
ผลที่ได้คือ เมื่อกดเข้าไปใน view นี้แล้ว มันจะแสดง dependency ที่เราใช้ในโปรเจกทั้งหมดเป็น list และเมื่อเรากดเข้าไปดู เราก็จะเห็น license ของ open source ตัวนั้นๆ
ยกตัวอย่างอันนึงที่เราใช้แล้วกัน คือ com.akexorcist:localization
นั่นเอง เมื่อกดเข้าไปดูจะพบว่า คุณเอกใช้ Apache License
มาเปิดดูใน repo สิว่าจริงไหม
พบว่ามันสามารถดึงมาตรงกันเนอะ
ทำให้เราได้รู้ว่า ถ้าเราทำ library ที่เป็น open source นั้น การใส่ license นั้นสำคัญมากๆเลยหล่ะ
แล้วมันดึงมาได้ยังไงกันนะ?
ตอนเวลา compile ตัว Gradle plugin มันจะสแกน POM dependencies ในโปรเจกของเรา เมื่อเจอ dependency แล้ว มันจะดึง license ในนั้นออกมา แล้วใส่ลิ้งเข้าไปในแอพของเรานั่นเอง
เท่าที่อ่าน คนอ่านรู้สึกอะไรขัดใจๆไหมนะ?
การปรับ style และ title
แน่นอนว่า เราเอาไปแปะในงานที่ทำอยู่จริง แล้ว Toolbar ไม่ขึ้นเหมือนใน Document เขาอ่ะ เนื่องจากโปรเจกเราใช้ theme ที่ NoActionBar นั่นเอง ดังนั้นการ custom style ของหน้านี้นั้น เราจะต้องไปทำที่ AndroidManifest.xml
ใน module เมื่อสักครู่ที่เราเปิดหน้า Open source licenses ออกมา
<activity
android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
android:theme="@style/Theme.AppCompat.Light" />
<activity
android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
android:theme="@style/Theme.AppCompat.Light" />
ผลที่ได้จะออกมาสวยงามหล่ะ
และถ้าเราไม่พอใจชื่อบน Toolbar ด้านบน สามารถเข้าไปเปลี่ยนได้ แบบนี้
OssLicensesMenuActivity.setActivityTitle(
getString(R.string.custom_license_title)
)
ผลสุดท้าย
เราก็จะได้ list ของ dependency ทั้งหมดที่เราใช้ และสามารถกดไปในแต่ละตัวเพื่อดู license ได้นะ อาจจะมาให้เราอ่านยาวๆ หรือเป็นลิ้งสั้นๆก็ได้เนอะ ตามแต่เจ้าของ library ที่เราใช้
หวังว่าจะได้ประโยชน์กัน เผื่อใครต้องทำอะไรแบบนี้จะได้เริ่มถูกเนอะ
download แอพอ่านบล็อกใหม่ของเราได้ที่นี่
ติดตามข่าวสารและบทความใหม่ๆได้ที่
ช่องทางใหม่ใน Twiter จ้า
และ YouTube ช่องใหม่จ้า