การสร้าง Android

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ทำตามคำแนะนำเหล่านี้เพื่อเริ่มสร้าง Android

การสร้างสิ่งแวดล้อม

เริ่มต้นสภาพแวดล้อมด้วยสคริปต์ envsetup.sh :

source build/envsetup.sh

หรือ

. build/envsetup.sh

ดูสคริปต์ที่ platform/build/envsetup.sh สำหรับคำอธิบายของคำสั่งที่เกี่ยวข้อง รวมถึงการ รับประทานอาหารกลางวัน สำหรับการเลือกเป้าหมายอุปกรณ์และ ทาปาส สำหรับการสร้างแอปที่ไม่ได้รวมกลุ่ม เช่น แอปทีวีอ้างอิง

คุณต้องออกคำสั่งนี้ใหม่หลังจากการ repo sync ทุกครั้งเพื่อรับการเปลี่ยนแปลงในสคริปต์นั้น โปรดทราบว่าการแทนที่ source ด้วย . (จุดเดียว) บันทึกอักขระสองสามตัว และรูปแบบย่อมักใช้ในเอกสารประกอบ

สคริปต์ envsetup.sh นำเข้าคำสั่งต่างๆ ที่ช่วยให้คุณทำงานกับซอร์สโค้ดของ Android รวมถึงคำสั่งที่ใช้ในแบบฝึกหัดนี้

หากต้องการดูรายการคำสั่งที่มีอยู่ทั้งหมด ให้เรียกใช้:

hmm

การเลือกเป้าหมาย

อาหารกลางวัน

เลือกเป้าหมายที่จะสร้างด้วย lunch lunch product_name - build_variant เลือก product_name เป็นผลิตภัณฑ์ที่จะสร้าง และ build_variant เป็นตัวเลือกในการสร้าง และจัดเก็บการเลือกเหล่านั้นในสภาพแวดล้อมที่จะอ่านโดยการเรียกใช้ m และคำสั่งอื่นๆ ที่คล้ายคลึงกัน

การกำหนดค่าที่แน่นอนสามารถส่งผ่านเป็นอาร์กิวเมนต์ได้ ตัวอย่างเช่น คำสั่งต่อไปนี้อ้างถึงบิลด์ที่สมบูรณ์สำหรับอีมูเลเตอร์ โดยเปิดใช้งานการดีบักทั้งหมด:

lunch aosp_arm-eng

หากทำงานโดยไม่มีข้อโต้แย้ง lunch จะแจ้งให้คุณเลือกเป้าหมายจากเมนู แต่โปรดทราบว่าเมนูนี้ไม่ได้รวมทุกความเป็นไปได้ ดู การเลือกบิลด์อุปกรณ์ สำหรับการกำหนดค่าบิลด์ของอุปกรณ์ทั้งหมดที่รองรับใน AOSP หรือพูดคุยกับผู้คนในทีมของคุณเกี่ยวกับอาหารกลางวันที่ถูกต้องสำหรับอุปกรณ์ที่คุณกำลังใช้งาน

บิลด์เป้าหมายทั้งหมดอยู่ในรูปแบบ BUILD-BUILDTYPE โดยที่ BUILD เป็นชื่อรหัสที่อ้างถึงการผสมผสานคุณลักษณะเฉพาะ BUILDTYPE เป็นหนึ่งในรายการต่อไปนี้

Buildtype ใช้
ผู้ใช้ การเข้าถึงที่จำกัด; เหมาะสำหรับการผลิต
userdebug เช่นเดียวกับผู้ใช้ แต่มีความสามารถในการเข้าถึงรูทและการดีบัก ต้องการสำหรับการดีบัก
ภาษาอังกฤษ การกำหนดค่าการพัฒนาด้วยเครื่องมือแก้ไขข้อบกพร่องเพิ่มเติม

บิลด์ userdebug ควรทำงานเหมือนกับบิลด์ผู้ใช้ โดยมีความสามารถในการเปิดใช้งานการดีบักเพิ่มเติมที่ปกติจะละเมิดรูปแบบความปลอดภัยของแพลตฟอร์ม สิ่งนี้ทำให้ userdebug สร้างได้ดีสำหรับการทดสอบผู้ใช้ด้วยความสามารถในการวิเคราะห์ที่มากขึ้น เมื่อพัฒนาด้วยบิวด์ userdebug ให้ปฏิบัติตาม หลักเกณฑ์ userdebug

วิศวกรฝ่ายวิศวกรรมให้ความสำคัญกับผลิตภาพทางวิศวกรรมสำหรับวิศวกรที่ทำงานบนแพลตฟอร์ม โครงสร้าง eng จะปิดการเพิ่มประสิทธิภาพต่างๆ ที่ใช้เพื่อมอบประสบการณ์การใช้งานที่ดีแก่ผู้ใช้ มิฉะนั้น eng build จะมีพฤติกรรมคล้ายกับ user และ userdebug builds เพื่อให้นักพัฒนาอุปกรณ์สามารถเห็นว่าโค้ดทำงานอย่างไรในสภาพแวดล้อมเหล่านั้น

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและใช้งานฮาร์ดแวร์จริง โปรดดูที่ Flashing Devices

ทาปาส

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

เรียกใช้วิธีใช้ tapas help สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง

การสร้างรหัส

ส่วนนี้เป็นข้อมูลสรุปโดยย่อเพื่อให้แน่ใจว่าการตั้งค่าเสร็จสมบูรณ์

สร้างทุกอย่างด้วย m . m สามารถจัดการงานแบบขนานด้วยอาร์กิวเมนต์ -jN หากคุณไม่ได้ระบุอาร์กิวเมนต์ -j ระบบบิลด์จะเลือกจำนวนงานแบบขนานที่คิดว่าเหมาะสมที่สุดสำหรับระบบของคุณโดยอัตโนมัติ

m

ตามที่อธิบายไว้ข้างต้น คุณสามารถสร้างโมดูลเฉพาะแทนอิมเมจอุปกรณ์แบบเต็มได้ โดยแสดงชื่อโมดูลเหล่านั้นในบรรทัดคำสั่ง m ของคุณ นอกจากนี้ m ยังให้เป้าหมายเทียมสำหรับวัตถุประสงค์พิเศษอีกด้วย ตัวอย่างบางส่วนคือ:

  • droid - m droid เป็นบิลด์ปกติ เป้าหมายนี้อยู่ที่นี่เนื่องจากเป้าหมายเริ่มต้นต้องการชื่อ
  • all - m all สร้างทุกอย่างที่ m droid ทำ บวกกับทุกอย่างที่ไม่มีแท็ก droid เซิร์ฟเวอร์บิลด์เรียกใช้สิ่งนี้เพื่อให้แน่ใจว่าทุกอย่างที่อยู่ในทรีและมีไฟล์ Android.mk สร้างขึ้น
  • m - วิ่งสร้างจากด้านบนของต้นไม้ สิ่งนี้มีประโยชน์เพราะคุณสามารถเรียกใช้ make จากภายในไดเร็กทอรีย่อย หากคุณมีชุดตัวแปรสภาพแวดล้อม TOP จะใช้สิ่งนั้น หากคุณไม่ทำเช่นนั้น โปรแกรมจะค้นหาทรีจากไดเรกทอรีปัจจุบัน พยายามหาส่วนบนสุดของทรี คุณสามารถสร้างแผนผังซอร์สโค้ดทั้งหมดได้โดยการรัน m โดยไม่มีอาร์กิวเมนต์ หรือสร้างเป้าหมายเฉพาะโดยการระบุชื่อ
  • mma - สร้างโมดูลทั้งหมดในไดเร็กทอรีปัจจุบันและการอ้างอิง
  • mmma - สร้างโมดูลทั้งหมดในไดเร็กทอรีที่ให้มาและการพึ่งพา
  • croot - cd ไปที่ด้านบนของต้นไม้
  • clean - m clean ลบเอาต์พุตและไฟล์ระดับกลางทั้งหมดสำหรับการกำหนดค่านี้ นี้เหมือนกับ rm -rf out/

เรียกใช้ m help เพื่อดูว่าเป้าหมายเทียม m อื่นมีอะไรบ้าง

กำลังดำเนินการสร้าง

คุณสามารถรันบิลด์ของคุณบนอีมูเลเตอร์หรือแฟลชบนอุปกรณ์ก็ได้ เนื่องจากคุณได้เลือกเป้าหมายงานสร้างพร้อม lunch แล้ว จึงไม่น่าจะทำงานบนเป้าหมายที่ต่างไปจากที่ตั้งใจไว้

กระพริบด้วย fastboot

หากต้องการแฟลชอุปกรณ์ ให้ใช้ fastboot ซึ่งควรรวมอยู่ในเส้นทางของคุณหลังจากสร้างสำเร็จ ดูคำแนะนำใน การกะพริบอุปกรณ์

การจำลองอุปกรณ์ Android

โปรแกรมจำลองถูกเพิ่มไปยังเส้นทางของคุณโดยอัตโนมัติโดยกระบวนการสร้าง ในการรันโปรแกรมจำลอง ให้พิมพ์:

emulator

ทำความเข้าใจการสร้างลายนิ้วมือ

ในการติดตามและรายงานปัญหาที่เชื่อมโยงกับบิวด์ Android หนึ่งๆ สิ่งสำคัญคือต้องเข้าใจลายนิ้วมือของบิวด์ ลายนิ้วมือของบิวด์เป็นสตริงเฉพาะที่มนุษย์อ่านได้ ซึ่งมีข้อมูลผู้ผลิตที่ออกให้กับแต่ละบิลด์ ดูคำอธิบาย FINGERPRINT ในส่วน Build Parameters ของ Android Compatibility Definition Document (CDD) สำหรับไวยากรณ์ที่แม่นยำ

ลายนิ้วมือของบิลด์แสดงถึงการใช้งานและการแก้ไข Android โดยเฉพาะ คีย์เฉพาะนี้ช่วยให้นักพัฒนาแอปและคนอื่นๆ สามารถรายงานปัญหาเกี่ยวกับเฟิร์มแวร์เวอร์ชันต่างๆ ได้ ดูการ รายงานจุดบกพร่อง สำหรับกระบวนการรายงานปัญหาของ Android

ลายนิ้วมือของบิวด์สรุปรายละเอียดการใช้งาน Android ทั้งหมด:

  • APIs: Android และ Native รวมถึงพฤติกรรม API ที่อ่อนนุ่ม
  • Core API และพฤติกรรม UI ของระบบบางส่วน
  • ข้อกำหนดด้านความเข้ากันได้และความปลอดภัยที่กำหนดไว้ใน CDD
  • ข้อมูลจำเพาะของผลิตภัณฑ์และการตั้งค่า คุณสมบัติ การใช้งานที่ใช้โดยแอพเพื่อกำหนดเป้าหมายอุปกรณ์ที่ตรงตามข้อกำหนดที่คาดหวัง
  • การใช้งานส่วนประกอบฮาร์ดแวร์และซอฟต์แวร์

ดู CDD สำหรับรายละเอียดทั้งหมดและ การเพิ่มอุปกรณ์ใหม่ เพื่อดูคำแนะนำในการสร้างอุปกรณ์ Android ใหม่ทั้งหมด

แก้ไขข้อผิดพลาดทั่วไปของบิลด์

เวอร์ชัน Java ไม่ถูกต้อง

หากคุณกำลังพยายามสร้างเวอร์ชันของ Android ที่ไม่สอดคล้องกับเวอร์ชัน Java ของคุณ make ยกเลิกด้วยข้อความเช่น:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

นี่คือสาเหตุและวิธีแก้ไขที่เป็นไปได้:

  • ความล้มเหลวในการติดตั้ง JDK ที่ถูกต้องตามที่ระบุไว้ใน ข้อกำหนดของ JDK ตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนใน การตั้งค่าสภาพแวดล้อม และ การเลือกเป้าหมาย
  • JDK อื่นที่ติดตั้งไว้ก่อนหน้านี้ปรากฏในเส้นทางของคุณ ใส่ JDK ที่ถูกต้องไว้ข้างหน้าเส้นทางของคุณหรือลบ JDK ที่มีปัญหาออก

ไม่ได้รับอนุญาต USB

ตามค่าเริ่มต้นบนระบบ Linux ส่วนใหญ่ ผู้ใช้ที่ไม่มีสิทธิพิเศษจะไม่สามารถเข้าถึงพอร์ต USB ได้ หากคุณเห็นข้อผิดพลาดถูกปฏิเสธการอนุญาต ให้ทำตามคำแนะนำในการ กำหนดค่าการเข้าถึง USB

หาก ADB ทำงานอยู่แล้วและไม่สามารถเชื่อมต่อกับอุปกรณ์หลังจากตั้งค่ากฎเหล่านั้นแล้ว คุณสามารถฆ่ามันด้วย adb kill-server คำสั่งนั้นทำให้ ADB รีสตาร์ทด้วยการกำหนดค่าใหม่