ทำตามคำแนะนำเหล่านี้เพื่อเริ่มสร้าง 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
เป็นหนึ่งในรายการต่อไปนี้
ประเภทการสร้าง | ใช้ |
---|---|
ผู้ใช้ | การเข้าถึงที่ จำกัด ; เหมาะสำหรับการผลิต |
การแก้ไขข้อบกพร่องของผู้ใช้ | เช่นเดียวกับผู้ใช้ แต่มีความสามารถในการเข้าถึงรูทและดีบัก ใกล้เคียงกับประสิทธิภาพการผลิต |
อังกฤษ | การกำหนดค่าการพัฒนาด้วยเวลาในการสร้างที่เร็วขึ้น เหมาะสมที่สุดสำหรับการพัฒนาวันต่อวัน |
บิลด์ userdebug
ควรทำงานเหมือนกับบิลด์ user
โดยมีความสามารถในการเปิดใช้การดีบั๊กเพิ่มเติมที่ปกติจะละเมิดโมเดลความปลอดภัยของแพลตฟอร์ม สิ่งนี้ทำให้ userdebug
สร้างได้ดีสำหรับการทำความเข้าใจประสิทธิภาพและพลังงานที่ใช้โดยรีลีส เมื่อพัฒนาด้วย userdebug
build ให้ทำตาม แนวทาง userdebug
การสร้าง eng
ให้ความสำคัญกับประสิทธิภาพทางวิศวกรรมสำหรับวิศวกรที่ทำงานบนแพลตฟอร์ม โครงสร้าง eng
จะปิดการปรับให้เหมาะสมต่างๆ ที่ใช้เพื่อเพิ่มประสิทธิภาพของรันไทม์ให้สูงสุด มิฉะนั้น eng
build จะคล้ายกับ user
และ userdebug
builds เพื่อให้ผู้พัฒนาอุปกรณ์เห็นว่าโค้ดทำงานอย่างไรในสภาพแวดล้อมเหล่านั้น
หากต้องการดูการตั้งค่าอาหารกลางวันปัจจุบัน ให้รันคำสั่ง:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและการรันบนฮาร์ดแวร์จริง โปรดดูที่ Flashing Devices
ทาปาส
คำสั่ง tapas
กำหนดค่าการสร้างแอพที่ไม่ได้รวมกลุ่ม มันเลือกแต่ละแอพที่จะสร้างโดยระบบบิลด์ของ Android ซึ่งแตกต่างจาก lunch
tapas
ไม่ต้องการการสร้างภาพสำหรับอุปกรณ์
เรียกใช้ tapas help
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง
สร้างรหัส
ส่วนนี้เป็นข้อมูลสรุปโดยย่อเพื่อให้แน่ใจว่าการตั้งค่าเสร็จสมบูรณ์
สร้างทุกอย่างด้วย m
. m
สามารถจัดการงานคู่ขนานด้วยอาร์กิวเมนต์ -jN
หากคุณไม่ระบุอาร์กิวเมนต์ -j
ระบบ build จะเลือกจำนวนงานคู่ขนานที่คิดว่าเหมาะสมที่สุดสำหรับระบบของคุณโดยอัตโนมัติ
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
เพื่อดูว่า pseudotargets m
ๆ ที่ให้ไว้
กำลังดำเนินการสร้าง
คุณสามารถเรียกใช้งานสร้างของคุณบนโปรแกรมจำลองหรือแฟลชบนอุปกรณ์ เนื่องจากคุณได้เลือกเป้าหมายงานสร้างพร้อม lunch
จึงไม่น่าจะทำงานบนเป้าหมายอื่นนอกเหนือจากที่สร้างขึ้นมา
กระพริบด้วย fastboot
หากต้องการแฟลชอุปกรณ์ ให้ใช้ fastboot
ซึ่งควรรวมอยู่ในเส้นทางของคุณหลังจากสร้างสำเร็จ ดูคำแนะนำใน การแฟลชอุปกรณ์
เลียนแบบอุปกรณ์ Android
โปรแกรมจำลองจะถูกเพิ่มไปยังเส้นทางของคุณโดยอัตโนมัติโดยกระบวนการสร้าง ในการรันโปรแกรมจำลอง ให้พิมพ์:
emulator
ทำความเข้าใจเกี่ยวกับการสร้างลายนิ้วมือ
ในการติดตามและรายงานปัญหาที่เกี่ยวข้องกับรุ่น Android โดยเฉพาะ สิ่งสำคัญคือต้องเข้าใจลายนิ้วมือของรุ่น ลายนิ้วมือสำหรับรุ่นเป็นสตริงที่ไม่ซ้ำกันและมนุษย์สามารถอ่านได้ซึ่งมีข้อมูลของผู้ผลิตที่ออกให้กับแต่ละรุ่น ดูคำอธิบาย FINGERPRINT ภายในส่วน Build Parameters ของเอกสารคำจำกัดความความเข้ากันได้ของ Android (CDD) สำหรับไวยากรณ์ที่แม่นยำ
ลายนิ้วมือบิลด์แสดงถึงการใช้งานและการแก้ไขเฉพาะของ Android รหัสเฉพาะนี้ช่วยให้นักพัฒนาแอปและผู้อื่นสามารถรายงานปัญหาเกี่ยวกับเวอร์ชันเฟิร์มแวร์เฉพาะได้ ดู การรายงานข้อบกพร่อง สำหรับกระบวนการรายงานปัญหาของ Android
ลายนิ้วมือบิลด์สรุปรายละเอียดการใช้งาน Android ทั้งหมด:
- APIs: Android และเนทีฟ รวมถึงลักษณะการทำงานของ Soft 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 รีสตาร์ทด้วยการกำหนดค่าใหม่