การสร้าง Android

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

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

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

source build/envsetup.sh

หรือ

. build/envsetup.sh

ดูสคริปต์ที่ แพลตฟอร์ม / สร้าง / envsetup.sh สำหรับรายละเอียดของคำสั่งที่เกี่ยวข้องรวมทั้ง อาหารกลางวัน สำหรับการเลือกเป้าหมายอุปกรณ์และ ทาปาส สำหรับการสร้างแอพพลิเค unbundled เช่น ตรวจสอบการอ้างอิงทีวี

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

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

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

hmm

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

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

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

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

lunch aosp_arm-eng

ถ้าทำงานกับการขัดแย้งใด lunch ให้คุณเลือกเป้าหมายจากเมนู ดู การเลือกสร้างอุปกรณ์ สำหรับการสร้างการกำหนดค่าของอุปกรณ์ที่มีอยู่ทั้งหมด

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

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

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

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

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

ทาปาส

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

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

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

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

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

m

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

  • 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 หนึ่งๆ สิ่งสำคัญคือต้องเข้าใจลายนิ้วมือของบิวด์ ลายนิ้วมือของบิวด์เป็นสตริงเฉพาะที่มนุษย์อ่านได้ ซึ่งมีข้อมูลผู้ผลิตที่ออกให้กับแต่ละบิลด์ ดูรายละเอียดของลายนิ้วมือภายใน พารามิเตอร์รูปร่าง ส่วนหนึ่งของความหมายของ Android เข้ากันได้ของเอกสาร (CDD) สำหรับไวยากรณ์ได้อย่างแม่นยำ

ลายนิ้วมือของบิลด์แสดงถึงการใช้งานและการแก้ไข Android โดยเฉพาะ คีย์เฉพาะนี้ช่วยให้นักพัฒนาแอปและคนอื่นๆ สามารถรายงานปัญหาเกี่ยวกับเฟิร์มแวร์เวอร์ชันต่างๆ ได้ ดู Bugs รายงาน สำหรับกระบวนการการรายงานประเด็น 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 รีสตาร์ทด้วยการกำหนดค่าใหม่