Jetifier คืออะไร? ตัวอย่างเช่นในการสร้างโปรเจ็กต์ใหม่โดยใช้ androidx-packaged dependencies โปรเจ็กต์ใหม่นี้จำเป็นต้องเพิ่มบรรทัดต่อไปนี้ในไฟล์gradle.properties :
android.enableJetifier=true
- "เปิดใช้งาน jetifier" หมายความว่าอย่างไร
Jetifier คืออะไร? ตัวอย่างเช่นในการสร้างโปรเจ็กต์ใหม่โดยใช้ androidx-packaged dependencies โปรเจ็กต์ใหม่นี้จำเป็นต้องเพิ่มบรรทัดต่อไปนี้ในไฟล์gradle.properties :
android.enableJetifier=true
- "เปิดใช้งาน jetifier" หมายความว่าอย่างไร
คำตอบ:
Google I / O (18) ปีนี้ Google ได้ประกาศ Jetpack ซึ่งตั้ง / รวบรวมไลบรารีเพื่อให้ชีวิตของนักพัฒนาง่ายขึ้น
Jetpack มีส่วนประกอบสถาปัตยกรรม Android ที่แนะนำก่อนหน้านี้ (ViewModel, Room, Paging, LiveData เป็นต้น) รวมถึงส่วนประกอบสถาปัตยกรรมที่เพิ่งเปิดตัวเช่น WorkManager, Navigation นอกเหนือจาก Jetpack นี้ยังมีไลบรารีชุดอื่น ๆ เช่น AndroidX, AndroidKTX เป็นต้น
AndroidX เป็นโครงสร้างแพ็คเกจใหม่สำหรับไลบรารีที่รองรับ Android เช่นการสนับสนุนการเชื่อมโยงฐานข้อมูลการออกแบบ ฯลฯ
เช่นตอนนี้นักพัฒนาวอร์ดจะใช้androidx.databinding แทนandroid.databinding ในขณะที่นำเข้าไลบรารีในโครงการของเรา
สิ่งนี้ทำให้ Google สามารถเพิ่มSemVerหรือSemantic Versioningในแพ็คเกจไลบรารีได้ สำหรับนักพัฒนาหมายความว่าเราไม่จำเป็นต้องใช้ไลบรารีการสนับสนุนเวอร์ชันเดียวกันสำหรับไลบรารีการสนับสนุนทั้งหมด ทุกการสนับสนุนหรือดีกว่าที่จะพูดว่าไลบรารี AndroidX จะคงเวอร์ชันของตัวเองไว้
ข้อดีอีกอย่างสำหรับนักพัฒนาคือเราไม่ต้องดูแลเวอร์ชันเดียวกันสำหรับไลบรารีสนับสนุนทั้งหมดในโครงการของเรา
เกี่ยวกับ Jetifier จะแปลงแพ็คเกจการสนับสนุนทั้งหมดของการพึ่งพาในเวลาสร้าง ตามเอกสารอย่างเป็นทางการของ Jetifier
เครื่องมือ Jetifier จะย้ายไลบรารีที่ขึ้นกับไลบรารีที่รองรับให้ใช้แพ็คเกจ AndroidX ที่เทียบเท่าแทน เครื่องมือนี้ช่วยให้คุณย้ายไลบรารีแต่ละรายการได้โดยตรงแทนที่จะใช้ปลั๊กอิน Android gradle ที่มาพร้อมกับ Android Studio
ในการใช้ AndroidX ในโปรเจ็กต์เราต้องตั้ง targetSdkVersion สำหรับโปรเจ็กต์ของเราเป็น28และเพิ่ม 2 บรรทัดต่อไปนี้ในไฟล์gradle.properties
android.useAndroidX=true
android.enableJetifier=true
ฉันหวังว่านี่จะตอบคำถามของคุณ
แก้ไข
ลิงก์นี้มีการแมปองค์ประกอบไลบรารีสนับสนุนทั้งหมดกับส่วนเคาน์เตอร์ AndroidX
โปรดดูบล็อกนี้สำหรับคำอธิบายโดยละเอียดเกี่ยวกับ AndroidX
สมมติว่าคุณคุ้นเคยกับAndroidX
. ถ้าไม่โปรดดู @ โพสต์นี้
Jetifier
จะแปลงการsupport libraries
อ้างอิงทั้งหมดของคุณเป็นAndroidX
โดยอัตโนมัติหากคุณไม่ได้ตั้งค่าเป็นtrue
โครงการของคุณจะมีทั้งการสนับสนุน ( เลิกใช้งานหลังจากเวอร์ชัน 28.0.0 ) และแพ็คเกจAndroidXซึ่งซ้ำซ้อน
หากคุณมีการPhotoView.java
พึ่งพาของคุณ AppCompatImageView
ที่ห้องสมุดสนับสนุนการใช้งาน
import android.support.v7.widget.AppCompatImageView;
ตอนนี้คลาสนี้ถูกย้ายไปที่androidx
แพ็กเกจแล้วดังนั้นจะPhotoView
รับ androidx ได้AppCompatImageView
อย่างไร? และแอปยังคงทำงานในอุปกรณ์
ใครเป็นคนวิ่งนี้
Jetifierซึ่งแปลงแพ็คเกจการสนับสนุนทั้งหมดของการพึ่งพาในเวลาสร้าง
Jetifier จะแปลงandroid.support.v7.widget.AppCompatImageView
เป็นandroidx.appcompat.widget.AppCompatImageView
ในขณะที่สร้างโครงการ
การเปิดใช้งาน Jetifier เป็นสิ่งสำคัญเมื่อคุณย้ายจากห้องสมุดสนับสนุนการ AndroidX
ดูโพสต์นี้เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับ AndroidX
รหัสของคุณอาจแสดงข้อผิดพลาดเวลาคอมไพล์หลังจากเปิดใช้งาน Jetifier ในขณะที่ใช้คลาสการอ้างอิง ซึ่งคุณสามารถลบโดยการลบ.idea
, .gradle
และซิงค์ซ้ำแบบโครงการ
Jetifierช่วยในการย้ายโครงการหุ่นยนต์ที่จะAndroidX
Jetifierช่วยในการสร้างไลบรารีของบุคคลที่สามเข้ากันได้กับโครงการ AndroidX ของคุณ
หากคุณไม่ได้ใช้ไลบรารีของบุคคลที่สามในโปรเจ็กต์ Android ของคุณคุณก็ไม่จำเป็นต้องใช้ Jetifier เนื่องจาก Jetifier ช่วยเฉพาะในการ "สร้างไลบรารีของบุคคลที่สาม" ให้เข้ากันได้กับโปรเจ็กต์ของคุณในกรณีที่คุณกำลังย้ายไปใช้ AndroidX ดังนั้นเพื่อให้การใช้โครงการของคุณ Jetifier คุณเขียนด้านล่างรหัสในgradle.properties
android.enableJetifier=true
android.useAndroidX=true
หากคุณไม่ได้ย้ายไปใช้ AndroidX และใช้วิธีก่อนหน้านี้ในการใช้ไลบรารี Android (เช่นcom.android.support ) ไลบรารีของบุคคลที่สามเหล่านี้ไม่จำเป็นต้องเข้ากันได้เนื่องจากไลบรารีของบุคคลที่สามเหล่านี้เข้ากันได้กับวิธีก่อนหน้าของ ใช้ไลบรารี Android ในกรณีนี้คุณไม่จำเป็นต้องใช้ Jetifier ดังนั้นตอนนี้คุณไม่จำเป็นต้องเขียนบรรทัดที่ระบุไว้ด้านบนหรือคุณสามารถเขียนด้านล่างเพื่อเปลี่ยนค่าในอนาคตเพื่อย้ายไปที่ androidx: -
android.enableJetifier=false
android.useAndroidX=false
Jetifier
jetifierเป็นเครื่องมือที่มีประโยชน์ที่จะย้ายคุณdependencies
ไปAndroidX
เวลาที่สร้าง หากไม่มีสิ่งนี้คุณจะต้องมีการพึ่งพาทุกครั้งที่คุณใช้เพื่อให้มีเวอร์ชัน AndroidX ก่อนจึงจะสามารถย้ายข้อมูลได้และอาจจะไม่เกิดขึ้นในบางครั้ง
มีข้อ จำกัด ที่สำคัญที่ควรทราบ: Jetifier ใช้งานได้กับสิ่งประดิษฐ์ที่บรรจุหีบห่อเท่านั้น มันใช้ไม่ได้กับซอร์สโค้ดของคุณซึ่งคุณคาดว่าจะต้องอัปเดตด้วยตัวเอง
สำหรับการเปิดใช้งาน AndroidX คุณต้องเพิ่ม 2 แฟล็กในgradle.properties
ไฟล์ของคุณ แฟล็กแรกบอกให้ Android Plugin ใช้AndroidX
แพ็คเกจแทนAppCompat
และแฟล็กที่สองจะเปิดใช้งานJetifier
:
android.useAndroidX=true
android.enableJetifier=true
ดูนี้ , นี้โพสต์เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับ AndroidX
เมื่อตั้งค่าสถานะนี้เป็นจริงปลั๊กอิน Android จะย้ายไลบรารีของบุคคลที่สามที่มีอยู่โดยอัตโนมัติเพื่อใช้การอ้างอิงของ AndroidX โดยการเขียนไบนารีใหม่ แฟล็กเป็นเท็จโดยค่าเริ่มต้นหากไม่ได้ระบุไว้
มีประโยชน์สำหรับความเข้ากันได้ เมื่อมีการใช้งานของผู้บริโภคและการใช้ผลิตandroidX
support
ตัวอย่างเช่นเมื่อโครงการของคุณAndroidX
ต้องการใช้การอ้างอิงซึ่งใช้support library
แทนAndroidX
[ตัวอย่าง]
เพิ่มสองบรรทัดนี้ android.useAndroidX = true
android.enableJetifier = true
ใน buid.gradle มันใช้ได้ผลสำหรับฉัน
implementation "com.commonsware.cwac:document:0.3.0"
ในdependencies
ไฟล์.com.android.support:support-annotations:27.0.2
รุ่นห้องสมุดที่มีการพึ่งพาสกรรมกริยาบน อย่างไรก็ตามคุณต้องการใช้androidx.annotation:annotation
เป็นส่วนหนึ่งของการใช้การอ้างอิง AndroidX อื่น ๆ Jetifier อย่างใดจะอัปเดตที่จะใช้com.commonsware.cwac:document
androidx.annotation:annotation