เพิ่มโค้ด C และ C++ ในโปรเจ็กต์

เพิ่มโค้ด C และ C++ ลงในโปรเจ็กต์ Android โดยวางโค้ดลงใน cpp ในโมดูลโปรเจ็กต์ของคุณ เมื่อสร้างโปรเจ็กต์ ระบบจะคอมไพล์โค้ดลงในไลบรารีแบบเนทีฟที่ Gradle รวมแอปเข้ากับแอปของคุณได้ จากนั้นโค้ด Java หรือ Kotlin จะเรียกใช้ฟังก์ชันในไลบรารีเนทีฟได้ ผ่าน Java Native Interface (JNI) หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ JNI ของเฟรมเวิร์ก, อ่านเคล็ดลับสำหรับ JNI สำหรับ Android

Android Studio รองรับ CMake ซึ่งมีประโยชน์สำหรับโปรเจ็กต์ข้ามแพลตฟอร์ม Android Studio ยังรองรับ ndk-build ซึ่ง จะเร็วกว่า CMake แต่รองรับเฉพาะ Android การใช้ทั้ง CMake และ ระบบยังไม่รองรับ ndk-build ในโมดูลเดียวกันในขณะนี้

วิธีนำเข้าไลบรารี ndk-build ที่มีอยู่ไปยัง Android Studio เรียนรู้วิธี ลิงก์ Gradle กับโปรเจ็กต์ไลบรารีที่มาพร้อมเครื่อง

หน้านี้แสดงวิธีตั้งค่า Android Studio ด้วย เครื่องมือบิลด์ที่จำเป็น สร้างโปรเจ็กต์ใหม่ด้วย C/C++ สนับสนุน และเพิ่มไฟล์ C/C++ ใหม่ลงในโปรเจ็กต์ของคุณ

หากต้องการเพิ่มโค้ดเนทีฟลงในโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างไฟล์ต้นฉบับใหม่และเพิ่ม ไฟล์ลงในโปรเจ็กต์ Android Studio ของคุณ
    • ข้ามขั้นตอนนี้หากคุณมีโค้ดแบบเนทีฟอยู่แล้วหรือต้องการที่จะ นำเข้าไลบรารีเนทีฟที่สร้างไว้ล่วงหน้า
  2. กำหนดค่า CMake เป็น สร้างซอร์สโค้ดดั้งเดิมของคุณ ลงในไลบรารี ต้องระบุสคริปต์บิลด์นี้ หากคุณนำเข้าและลิงก์กับแพลตฟอร์มที่สร้างไว้ล่วงหน้า ห้องสมุด
    • หากคุณมีไลบรารีเนทีฟที่มี CMakeLists.txt สคริปต์ของบิลด์หรือใช้ ndk-build และรวม Android.mk สคริปต์บิลด์ ข้ามขั้นตอนนี้
  3. กำหนดค่า Gradle โดยการระบุเส้นทางไปยัง CMake หรือ ndk-build ของคุณ ไฟล์สคริปต์ Gradle ใช้สคริปต์บิลด์เพื่อนำเข้าซอร์สโค้ดไปยัง โปรเจ็กต์ Android Studio และจัดแพ็กเกจไลบรารีเนทีฟลงในแอป

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

หมายเหตุ: หากโปรเจ็กต์ที่มีอยู่ของคุณใช้เวอร์ชัน ndkCompile ให้ย้ายข้อมูลโดยใช้ CMake หรือ ndk-build

ดาวน์โหลด NDK และเครื่องมือสร้าง

หากต้องการคอมไพล์และแก้ไขข้อบกพร่องของโค้ดเนทีฟสำหรับแอป คุณต้องมีสิ่งต่อไปนี้ คอมโพเนนต์

  • ชุดเครื่องมือพัฒนาซอฟต์แวร์เนทีฟสำหรับ Android (NDK): ชุดเครื่องมือที่ให้คุณใช้โค้ด C และ C++ กับ Android NDK มีไลบรารีแพลตฟอร์มที่ช่วยให้คุณจัดการโฆษณาเนทีฟ กิจกรรมและเข้าถึงส่วนประกอบของอุปกรณ์ทางกายภาพ เช่น เซ็นเซอร์และการสัมผัส อินพุต
  • CMake: พร็อพเพอร์ตี้ เครื่องมือสร้างภายนอกที่ทำงานร่วมกับ Gradle เพื่อสร้างโฆษณาเนทีฟ ไลบรารี คุณไม่จำเป็นต้องใช้คอมโพเนนต์นี้หากวางแผนที่จะใช้เท่านั้น ndk-build
  • LLDB: ฟิลด์ ใน Android Studio ที่แก้ไขข้อบกพร่องของโค้ดแบบเนทีฟ

โปรดดูข้อมูลเกี่ยวกับการติดตั้งคอมโพเนนต์เหล่านี้ที่หัวข้อติดตั้งและกำหนดค่า NDK และ CMake

สร้างโปรเจ็กต์ใหม่ที่รองรับ C/C++

ในการสร้างโปรเจ็กต์ใหม่ที่รองรับโค้ดแบบเนทีฟ กระบวนการจะคล้ายกับ การสร้าง Android อื่นๆ โปรเจ็กต์ Studio แต่มีขั้นตอนเพิ่มเติมดังนี้

  1. ในส่วนเลือกโปรเจ็กต์ของคุณของวิซาร์ด เลือกประเภทโปรเจ็กต์ C++ แบบดั้งเดิม
  2. คลิกถัดไป
  3. กรอกข้อมูลในฟิลด์อื่นๆ ทั้งหมดในส่วนถัดไปของวิซาร์ด
  4. คลิกถัดไป
  5. ในส่วนปรับแต่งการสนับสนุน C++ ของวิซาร์ด คุณสามารถปรับแต่ง โดยใช้ช่อง C++ Standard
    • ใช้รายการแบบเลื่อนลงเพื่อ เลือกการกำหนดมาตรฐานของ C++ ที่ต้องการใช้ เลือก Toolchain ค่าเริ่มต้นจะใช้การตั้งค่า CMake เริ่มต้น
  6. คลิกเสร็จสิ้น

หลังจาก Android Studio สร้างโปรเจ็กต์ใหม่เสร็จแล้ว ให้เปิด แผงโปรเจ็กต์จากด้านซ้ายของ IDE แล้วเลือก มุมมอง Android จากเมนู ดังที่แสดงในรูปที่ 1 Android Studio เพิ่มกลุ่ม cpp

รูปที่ 1 กลุ่มมุมมองของ Android สำหรับแหล่งที่มาดั้งเดิมของคุณ และสคริปต์บิลด์ภายนอก

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

กลุ่ม cpp คือที่ที่คุณจะค้นหาโฆษณาเนทีฟทั้งหมด ไฟล์ต้นฉบับ ส่วนหัว สคริปต์บิลด์สำหรับ CMake หรือ ndk-build และสร้างไว้ล่วงหน้า ห้องสมุดที่เป็นส่วนหนึ่งของโครงการ Android Studio สำหรับโปรเจ็กต์ใหม่ สร้างไฟล์ต้นฉบับ C++ ตัวอย่าง native-lib.cpp และวางไว้ ในไดเรกทอรี src/main/cpp/ ของโมดูลแอป ตัวอย่างนี้ โค้ดจะให้ฟังก์ชัน C++ แบบง่าย stringFromJNI() ซึ่ง แสดงผลสตริง "Hello from C++" ดูวิธีเพิ่ม ไฟล์ต้นฉบับไปยังโครงการในส่วนเกี่ยวกับวิธี สร้างไฟล์ต้นฉบับใหม่

คล้ายกับวิธีที่ไฟล์ build.gradle บอกวิธีสร้าง Gradle แอป CMake และ ndk-build ต้องใช้สคริปต์บิลด์เพื่อดูวิธีสร้าง ไลบรารีเนทีฟ Android Studio จะสร้างบิลด์ CMake สำหรับโปรเจ็กต์ใหม่ CMakeLists.txt แล้ววางไว้ในไดเรกทอรีรากของโมดูล หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาของสคริปต์บิลด์นี้ โปรดอ่าน กำหนดค่า CMake

สร้างและเรียกใช้แอปตัวอย่าง

เมื่อคุณคลิกเรียกใช้ เรียกใช้แล้วเรียกใช้แอปจากแถบเมนู Android Studio สร้างและเปิดแอปที่แสดงข้อความ "สวัสดีจาก C++" ใน อุปกรณ์หรือโปรแกรมจำลอง Android ภาพรวมต่อไปนี้อธิบายเหตุการณ์ที่ สร้างและเรียกใช้แอปตัวอย่าง:

  1. เรียกใช้สคริปต์บิลด์ภายนอก CMakeLists.txt
  2. CMake ทำตามคำสั่งในสคริปต์บิลด์เพื่อคอมไพล์ซอร์ส C++ native-lib.cpp ลงในไลบรารีและชื่อออบเจ็กต์ที่แชร์ libnative-lib.so จากนั้น Gradle จัดแพ็กเกจลงในแอป
  3. ในระหว่างรันไทม์ MainActivity ของแอปจะโหลดโฆษณาเนทีฟ ไลบรารีที่ใช้ System.loadLibrary() ฟังก์ชันเนทีฟของไลบรารี stringFromJNI() พร้อมให้ใช้งานในแอปแล้ว
  4. MainActivity.onCreate() โทรหา stringFromJNI() ซึ่งจะแสดงผล "Hello from C++" และใช้ข้อมูลดังกล่าวเพื่ออัปเดต TextView

หากต้องการยืนยันว่า Gradle ทำแพ็กเกจไลบรารีเนทีฟในแอป ให้ใช้ เครื่องมือวิเคราะห์ APK:

  1. เลือก Build > สร้างชุด / APK > สร้าง APK
  2. เลือก Build > วิเคราะห์ APK
  3. เลือก APK หรือ AAB จากไดเรกทอรี app/build/outputs/ แล้วคลิกตกลง
  4. ดังที่แสดงในรูปที่ 2 คุณจะเห็น libnative-lib.so ใน หน้าต่างตัววิเคราะห์ APK ภายใต้ lib/<ABI>/

    รูปที่ 2 ค้นหาไลบรารีเนทีฟโดยใช้ APK เครื่องมือวิเคราะห์

เคล็ดลับ: หากต้องการทดสอบกับแอป Android อื่นๆ ที่ ใช้โค้ดแบบเนทีฟ ให้คลิก ไฟล์ > ใหม่ > นำเข้าตัวอย่างและ เลือกโปรเจ็กต์ตัวอย่างจากรายการ Ndk

สร้างไฟล์ต้นฉบับ C/C++ ใหม่

หากต้องการเพิ่มไฟล์ต้นฉบับ C/C++ ใหม่ลงในโปรเจ็กต์ที่มีอยู่ ให้ดำเนินการดังนี้

  1. หากคุณยังไม่มีไดเรกทอรี cpp/ ในแหล่งที่มาหลัก ชุดแอปของคุณ ให้สร้างขึ้นมาดังนี้
    1. เปิดแผงโครงการทางด้านซ้ายของ IDE และ เลือกมุมมองโครงการจากเมนู
    2. ไปที่ your-module > src
    3. คลิกขวาที่ไดเรกทอรี หลัก และเลือก ใหม่ > ไดเรกทอรี
    4. ป้อน cpp เป็นชื่อไดเรกทอรีแล้วคลิกตกลง

  2. คลิกขวาที่ไดเรกทอรี cpp/ แล้วเลือก ใหม่ > ไฟล์ต้นฉบับ C/C++
  3. ป้อนชื่อไฟล์ต้นฉบับ เช่น native-lib
  4. จากเมนูประเภท ให้เลือกนามสกุลไฟล์ สำหรับไฟล์ต้นฉบับ เช่น .cpp
    • คลิกแก้ไขประเภทไฟล์ เพื่อเพิ่มไฟล์ประเภทอื่นๆ ในเมนู เช่น .cxx หรือ .hxx ในนามสกุลไฟล์ใหม่ ที่ปรากฏขึ้น ให้เลือกนามสกุลไฟล์อื่นจาก เมนูส่วนขยายแหล่งที่มาและส่วนขยายส่วนหัว และ คลิกตกลง
  5. ในการสร้างไฟล์ส่วนหัว ให้เลือกปุ่ม สร้าง ส่วนหัวที่เกี่ยวข้อง
  6. คลิกตกลง

หลังจากเพิ่มไฟล์ C/C++ ใหม่ลงในโปรเจ็กต์แล้ว คุณยังต้อง กำหนดค่า CMake เพื่อรวมไฟล์ใน ไลบรารีเนทีฟ

แหล่งข้อมูลเพิ่มเติม

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับโค้ด C/C++ ในแอปของคุณ ให้ลองทำตามขั้นตอนต่อไปนี้ ทรัพยากร

Codelab