เพิ่มโค้ด 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++ ใหม่ลงในโปรเจ็กต์ของคุณ
หากต้องการเพิ่มโค้ดเนทีฟลงในโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
-
สร้างไฟล์ต้นฉบับใหม่และเพิ่ม
ไฟล์ลงในโปรเจ็กต์ Android Studio ของคุณ
- ข้ามขั้นตอนนี้หากคุณมีโค้ดแบบเนทีฟอยู่แล้วหรือต้องการที่จะ นำเข้าไลบรารีเนทีฟที่สร้างไว้ล่วงหน้า
-
กำหนดค่า CMake เป็น
สร้างซอร์สโค้ดดั้งเดิมของคุณ
ลงในไลบรารี ต้องระบุสคริปต์บิลด์นี้
หากคุณนำเข้าและลิงก์กับแพลตฟอร์มที่สร้างไว้ล่วงหน้า
ห้องสมุด
- หากคุณมีไลบรารีเนทีฟที่มี
CMakeLists.txt
สคริปต์ของบิลด์หรือใช้ndk-build
และรวมAndroid.mk
สคริปต์บิลด์ ข้ามขั้นตอนนี้
- หากคุณมีไลบรารีเนทีฟที่มี
-
กำหนดค่า
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 แต่มีขั้นตอนเพิ่มเติมดังนี้
- ในส่วนเลือกโปรเจ็กต์ของคุณของวิซาร์ด เลือกประเภทโปรเจ็กต์ C++ แบบดั้งเดิม
- คลิกถัดไป
- กรอกข้อมูลในฟิลด์อื่นๆ ทั้งหมดในส่วนถัดไปของวิซาร์ด
- คลิกถัดไป
-
ในส่วนปรับแต่งการสนับสนุน C++ ของวิซาร์ด คุณสามารถปรับแต่ง
โดยใช้ช่อง C++ Standard
- ใช้รายการแบบเลื่อนลงเพื่อ เลือกการกำหนดมาตรฐานของ C++ ที่ต้องการใช้ เลือก Toolchain ค่าเริ่มต้นจะใช้การตั้งค่า CMake เริ่มต้น
- คลิกเสร็จสิ้น
หลังจาก Android Studio สร้างโปรเจ็กต์ใหม่เสร็จแล้ว ให้เปิด แผงโปรเจ็กต์จากด้านซ้ายของ IDE แล้วเลือก มุมมอง Android จากเมนู ดังที่แสดงในรูปที่ 1 Android Studio เพิ่มกลุ่ม cpp
หมายเหตุ: มุมมองนี้ไม่ได้แสดงลำดับชั้นไฟล์จริง บนดิสก์ แต่จัดกลุ่มไฟล์ที่คล้ายกัน เพื่อให้ไปยังส่วนต่างๆ ของโปรเจ็กต์ได้ง่ายขึ้น
กลุ่ม 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 ภาพรวมต่อไปนี้อธิบายเหตุการณ์ที่ สร้างและเรียกใช้แอปตัวอย่าง:
- เรียกใช้สคริปต์บิลด์ภายนอก
CMakeLists.txt
- CMake ทำตามคำสั่งในสคริปต์บิลด์เพื่อคอมไพล์ซอร์ส C++
native-lib.cpp
ลงในไลบรารีและชื่อออบเจ็กต์ที่แชร์libnative-lib.so
จากนั้น Gradle จัดแพ็กเกจลงในแอป - ในระหว่างรันไทม์
MainActivity
ของแอปจะโหลดโฆษณาเนทีฟ ไลบรารีที่ใช้System.loadLibrary()
ฟังก์ชันเนทีฟของไลบรารีstringFromJNI()
พร้อมให้ใช้งานในแอปแล้ว -
MainActivity.onCreate()
โทรหาstringFromJNI()
ซึ่งจะแสดงผล"Hello from C++"
และใช้ข้อมูลดังกล่าวเพื่ออัปเดตTextView
หากต้องการยืนยันว่า Gradle ทำแพ็กเกจไลบรารีเนทีฟในแอป ให้ใช้ เครื่องมือวิเคราะห์ APK:
- เลือก Build > สร้างชุด / APK > สร้าง APK
- เลือก Build > วิเคราะห์ APK
- เลือก APK หรือ AAB จากไดเรกทอรี
app/build/outputs/
แล้วคลิกตกลง - ดังที่แสดงในรูปที่ 2 คุณจะเห็น
libnative-lib.so
ใน หน้าต่างตัววิเคราะห์ APK ภายใต้lib/<ABI>/
เคล็ดลับ: หากต้องการทดสอบกับแอป Android อื่นๆ ที่ ใช้โค้ดแบบเนทีฟ ให้คลิก ไฟล์ > ใหม่ > นำเข้าตัวอย่างและ เลือกโปรเจ็กต์ตัวอย่างจากรายการ Ndk
สร้างไฟล์ต้นฉบับ C/C++ ใหม่
หากต้องการเพิ่มไฟล์ต้นฉบับ C/C++ ใหม่ลงในโปรเจ็กต์ที่มีอยู่ ให้ดำเนินการดังนี้
- หากคุณยังไม่มีไดเรกทอรี
cpp/
ในแหล่งที่มาหลัก ชุดแอปของคุณ ให้สร้างขึ้นมาดังนี้ - เปิดแผงโครงการทางด้านซ้ายของ IDE และ เลือกมุมมองโครงการจากเมนู
- ไปที่ your-module > src
- คลิกขวาที่ไดเรกทอรี หลัก และเลือก ใหม่ > ไดเรกทอรี
- ป้อน
cpp
เป็นชื่อไดเรกทอรีแล้วคลิกตกลง - คลิกขวาที่ไดเรกทอรี
cpp/
แล้วเลือก ใหม่ > ไฟล์ต้นฉบับ C/C++ - ป้อนชื่อไฟล์ต้นฉบับ เช่น
native-lib
- จากเมนูประเภท ให้เลือกนามสกุลไฟล์
สำหรับไฟล์ต้นฉบับ เช่น
.cpp
- คลิกแก้ไขประเภทไฟล์
เพื่อเพิ่มไฟล์ประเภทอื่นๆ ในเมนู เช่น
.cxx
หรือ.hxx
ในนามสกุลไฟล์ใหม่ ที่ปรากฏขึ้น ให้เลือกนามสกุลไฟล์อื่นจาก เมนูส่วนขยายแหล่งที่มาและส่วนขยายส่วนหัว และ คลิกตกลง
- คลิกแก้ไขประเภทไฟล์
เพื่อเพิ่มไฟล์ประเภทอื่นๆ ในเมนู เช่น
- ในการสร้างไฟล์ส่วนหัว ให้เลือกปุ่ม สร้าง ส่วนหัวที่เกี่ยวข้อง
- คลิกตกลง
หลังจากเพิ่มไฟล์ C/C++ ใหม่ลงในโปรเจ็กต์แล้ว คุณยังต้อง กำหนดค่า CMake เพื่อรวมไฟล์ใน ไลบรารีเนทีฟ
แหล่งข้อมูลเพิ่มเติม
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับโค้ด C/C++ ในแอปของคุณ ให้ลองทำตามขั้นตอนต่อไปนี้ ทรัพยากร
Codelab
- สร้าง Hello-CMake ด้วย Android Studio Codelab นี้จะแสดงวิธีใช้เทมเพลต CMake ของ Android Studio เพื่อเริ่มต้น การพัฒนาโปรเจ็กต์ Android NDK