เพิ่มโค้ด 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
สคริปต์บิลด์ ข้ามขั้นตอนนี้
- หากคุณมีไลบรารีเนทีฟที่มี
-
กำหนดค่า
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 แต่มีขั้นตอนเพิ่มเติมดังนี้
- ในส่วนเลือกโปรเจ็กต์ของคุณของวิซาร์ด เลือกประเภทโปรเจ็กต์ C++ แบบดั้งเดิม
- คลิกถัดไป
- กรอกข้อมูลในฟิลด์อื่นๆ ทั้งหมดในส่วนถัดไปของวิซาร์ด
- คลิกถัดไป
-
ในส่วนปรับแต่งการสนับสนุน C++ ของวิซาร์ด คุณสามารถปรับแต่งโปรเจ็กต์ด้วยช่องมาตรฐาน C++
- ใช้รายการแบบเลื่อนลงเพื่อเลือกมาตรฐาน C++ ที่ต้องการใช้ เลือก Toolchain ค่าเริ่มต้นจะใช้การตั้งค่า CMake เริ่มต้น
- คลิกเสร็จสิ้น
หลังจาก 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 หรือโปรแกรมจำลอง ภาพรวมต่อไปนี้อธิบายเหตุการณ์ที่
สร้างและเรียกใช้แอปตัวอย่าง:
- Gradle จะเรียกใช้สคริปต์บิลด์ภายนอก
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
- เลือกบิลด์ > วิเคราะห์ APK
- เลือก APK หรือ AAB จากไดเรกทอรี
app/build/outputs/
แล้วคลิกตกลง - ดังที่แสดงในรูปที่ 2 คุณจะเห็น
libnative-lib.so
ใน หน้าต่างตัววิเคราะห์ APK ภายใต้lib/<ABI>/
รูปที่ 2 ค้นหาไลบรารีแบบเนทีฟโดยใช้ตัววิเคราะห์ APK
เคล็ดลับ: หากต้องการทดสอบกับแอป 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++ ในแอปของคุณ ให้ลองทำตามขั้นตอนต่อไปนี้ ของ Google
Codelab
- สร้าง Hello-CMake ด้วย Android Studio โค้ดแล็บนี้แสดงวิธีใช้เทมเพลต CMake ของ Android Studio เพื่อเริ่มการพัฒนาโปรเจ็กต์ Android NDK