เพิ่มโค้ด 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. กำหนดค่า ndk-build โดยระบุเส้นทางไปยังไฟล์สคริปต์ CMake หรือ ndk-build Gradle ใช้สคริปต์บิลด์เพื่อนำเข้าซอร์สโค้ดไปยัง โปรเจ็กต์ Android Studio และจัดแพ็กเกจไลบรารีเนทีฟลงในแอป

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

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

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

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

  • Android Native Development Kit (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++
    • ใช้รายการแบบเลื่อนลงเพื่อเลือกมาตรฐาน 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 จะสร้างสคริปต์บิลด์ CMakeCMakeLists.txt และวางไว้ในไดเรกทอรีรูทของโมดูล ดูข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาของสคริปต์บิลด์นี้ได้ที่หัวข้อกำหนดค่า CMake

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

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

  1. Gradle จะเรียกใช้สคริปต์บิลด์ภายนอก 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. เลือกบิลด์ > วิเคราะห์ 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++ ในแอปของคุณ ให้ลองทำตามขั้นตอนต่อไปนี้ ของ Google

Codelab