สูตรคือ
minSdkVersion <= targetSdkVersion <= compileSdkVersion
minSdkVersion - เป็นเครื่องหมายที่กำหนดรุ่น Android ขั้นต่ำที่แอปพลิเคชันจะสามารถติดตั้งได้ มันใช้โดย Lint เพื่อป้องกันการเรียก API ที่ไม่มีอยู่ นอกจากนี้ยังมีผลกระทบต่อเวลาในการสร้าง ดังนั้นคุณสามารถใช้ build รสเพื่อแทนที่ minSdkVersion ให้มากที่สุดในระหว่างการพัฒนา มันจะช่วยให้สร้างได้เร็วขึ้นโดยใช้การปรับปรุงทั้งหมดที่ทีม Android จัดเตรียมไว้ให้เรา ตัวอย่างเช่นคุณลักษณะบางอย่าง Java 8 มีเฉพาะใน minSdkVersion เวอร์ชันที่ระบุเท่านั้น
targetSdkVersion - บอกว่าระบบ Android จะเปิดการเปลี่ยนแปลงพฤติกรรมที่เฉพาะเจาะจง
ตัวอย่างเช่น:
เริ่มใช้ Android 6.0 (API ระดับ 23) Runtime Permissions
แล้ว หากคุณตั้งค่าtargetSdkVersion
เป็น 22 หรือต่ำกว่าแอปพลิเคชันของคุณจะไม่ขอสิทธิ์จากผู้ใช้ในเวลาทำงาน
เริ่มต้นใน Android 8.0 (API ระดับ 26) ทั้งหมดnotifications
จะต้องกำหนดให้กับช่องมิฉะนั้นจะไม่ปรากฏ สำหรับอุปกรณ์ที่ใช้ Android 7.1 (API ระดับ 25) และต่ำกว่าผู้ใช้สามารถจัดการการแจ้งเตือนแบบต่อแอพเท่านั้น (ประสิทธิภาพแต่ละแอพมีเพียงหนึ่งช่องทางบน Android 7.1 และต่ำกว่า)
เริ่มต้นใน Android 9 (API ระดับ Web-based data directories separated by process
28) ถ้าtargetSdkVersion
เป็น 28+ และคุณสร้างWebView
กระบวนการที่แตกต่างกันคุณจะได้รับjava.lang.RuntimeException
compileSdkVersion - จริง ๆ แล้วมันเป็นรุ่น SDK แพลตฟอร์มและบอก Gradle ที่ Android SDK ใช้ในการรวบรวม เมื่อคุณต้องการใช้คุณสมบัติใหม่หรือ.java
ไฟล์ดีบั๊กจาก Android SDK คุณควรดูแล compileSdkVersion ตัวอย่างอีกหนึ่งคือการใช้AndroidXว่ากองกำลังที่จะใช้compileSdkVersion
- ระดับ 28 compileSdkVersion
ไม่รวมอยู่ใน APK ของคุณ : compile time
มันจะถูกใช้อย่างหมดจดที่ การเปลี่ยน compileSdkVersion ของคุณไม่ได้เปลี่ยนพฤติกรรมการใช้งานจริง มันสามารถสร้างเช่นคำเตือน / ข้อผิดพลาดคอมไพเลอร์ใหม่ ดังนั้นจึงขอแนะนำอย่างยิ่งให้คุณรวบรวม SDK ล่าสุดเสมอ คุณจะได้รับประโยชน์ทั้งหมดจากการตรวจสอบการรวบรวมใหม่สำหรับรหัสที่มีอยู่หลีกเลี่ยง API ที่เลิกใช้ใหม่และพร้อมใช้งาน API ใหม่ ข้อเท็จจริงอีกประการหนึ่งคือcompileSdkVersion >= Support Library version
คุณสามารถอ่านเพิ่มเติมได้ที่นี่ นอกจากนี้ฉันขอแนะนำให้คุณดูตัวอย่างของการโยกย้ายไปยัง Android 8.0