Google มุ่งมั่นที่จะพัฒนาความเท่าเทียมทางเชื้อชาติสำหรับชุมชนคนผิวดำ มาดูกันว่า
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

อาคาร Android

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

ตั้งค่าสภาพแวดล้อม

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

source build/envsetup.sh

หรือ

. build/envsetup.sh

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

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

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

  • lunch - lunch product_name - build_variant เลือก product_name เป็นผลิตภัณฑ์ที่จะสร้างและ build_variant เป็นตัวแปรที่จะสร้างและเก็บการเลือกเหล่านั้นในสภาพแวดล้อมที่จะอ่านโดยการร้องขอต่อมาของ m และคำสั่งที่คล้ายกันอื่น ๆ
  • m - วิ่งสร้างจากด้านบนของต้นไม้ สิ่งนี้มีประโยชน์เพราะคุณสามารถเรียกใช้ make จากภายในไดเรกทอรีย่อย หากคุณมีชุดตัวแปรสภาพแวดล้อม TOP จะใช้ชุดนั้น หากไม่ทำเช่นนั้นจะค้นหาแผนผังจากไดเรกทอรีปัจจุบันพยายามค้นหาส่วนบนของต้นไม้ คุณสามารถสร้างแผนภูมิซอร์สโค้ดทั้งหมดโดยรัน m โดยไม่มีอาร์กิวเมนต์หรือสร้างเป้าหมายที่เจาะจงโดยระบุชื่อ
  • mma - สร้างโมดูลทั้งหมดในไดเรกทอรีปัจจุบันและการพึ่งพา
  • mmma - สร้างโมดูลทั้งหมดในไดเรกทอรีที่ให้มาและการพึ่งพา
  • croot - cd ไปด้านบนของต้นไม้

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

hmm

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

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

lunch aosp_arm-eng

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

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

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

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

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

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

สร้างรหัส

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

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

m

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

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

เรียก m help ที่จะเห็นสิ่งอื่น ๆ pseudotargets m ให้

เรียกใช้!

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

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

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

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

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

emulator

การแก้ไขปัญหาข้อผิดพลาดเกี่ยวกับบิลด์ทั่วไป

เวอร์ชัน 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 ที่มีปัญหา

Python เวอร์ชัน 3

Repo สร้างขึ้นจากฟังก์ชั่นเฉพาะจาก Python 2.x และไม่สามารถใช้กับ Python 3 ได้ในการใช้ Repo ให้ติดตั้ง Python 2.x:

apt-get install python

ระบบไฟล์แบบคำนึงถึงขนาดตัวพิมพ์

หากคุณกำลังสร้างระบบไฟล์ HFS บน macOS คุณอาจพบข้อผิดพลาดเช่น:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

ทำตามคำแนะนำใน การสร้างอิมเมจของดิสก์

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

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

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