ทำตามคำแนะนำเหล่านี้เพื่อเริ่มสร้าง 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
build ดีสำหรับการทำความเข้าใจประสิทธิภาพและพลังงานที่ใช้โดยรีลีส เมื่อพัฒนาด้วย build userdebug
ให้ปฏิบัติตาม แนวทาง userdebug
โครงสร้าง eng
จะจัดลำดับความสำคัญของประสิทธิภาพทางวิศวกรรมสำหรับวิศวกรที่ทำงานบนแพลตฟอร์ม โครงสร้าง eng
จะปิดการเพิ่มประสิทธิภาพต่างๆ ที่ใช้ในการเพิ่มประสิทธิภาพรันไทม์ให้สูงสุด มิฉะนั้น บิลด์ eng
จะคล้ายกับบิลด์ user
และบิลด์ userdebug
มาก ดังนั้นนักพัฒนาอุปกรณ์จึงสามารถดูว่าโค้ดทำงานอย่างไรในสภาพแวดล้อมเหล่านั้น
หากต้องการดูการตั้งค่าอาหารกลางวันปัจจุบัน ให้รันคำสั่ง:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างและใช้งานฮาร์ดแวร์จริง โปรดดูที่ อุปกรณ์แฟลช
ทาปาส
คำสั่ง 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 บิลด์ใดรุ่นหนึ่ง สิ่งสำคัญคือต้องเข้าใจลายนิ้วมือของบิลด์ ลายนิ้วมือของบิลด์เป็นสตริงที่ไม่ซ้ำกันและมนุษย์สามารถอ่านได้ ซึ่งมีข้อมูลของผู้ผลิตที่ออกให้กับแต่ละบิลด์ ดูคำอธิบาย ลายนิ้วมือ ภายในส่วน พารามิเตอร์การสร้าง ของเอกสารคำจำกัดความความเข้ากันได้ของ Android (CDD) เพื่อดูไวยากรณ์ที่แม่นยำ
ลายนิ้วมือของบิลด์แสดงถึงการใช้งานและการแก้ไข Android โดยเฉพาะ คีย์เฉพาะนี้ช่วยให้นักพัฒนาแอปและคนอื่นๆ สามารถรายงานปัญหาเกี่ยวกับเวอร์ชันเฟิร์มแวร์เฉพาะได้ ดู การรายงานข้อบกพร่อง สำหรับกระบวนการรายงานปัญหาของ Android
ลายนิ้วมือของบิลด์สรุปรายละเอียดการใช้งาน Android ทั้งหมด:
- API: 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 รีสตาร์ทด้วยการกำหนดค่าใหม่