ฉันกำลังพยายามพัฒนา / ย้ายเกมไปยัง Android แต่อยู่ใน C และ Android รองรับ Java แต่ฉันแน่ใจว่าต้องมีวิธีในการรับแอป C ที่นั่นทุกคนรู้วิธีที่จะทำสิ่งนี้ให้สำเร็จหรือไม่
ฉันกำลังพยายามพัฒนา / ย้ายเกมไปยัง Android แต่อยู่ใน C และ Android รองรับ Java แต่ฉันแน่ใจว่าต้องมีวิธีในการรับแอป C ที่นั่นทุกคนรู้วิธีที่จะทำสิ่งนี้ให้สำเร็จหรือไม่
คำตอบ:
สำหรับใครก็ตามที่เข้ามาทาง Google โปรดทราบว่าการเริ่มต้นจาก SDK 1.6 Android ตอนนี้มี SDK ดั้งเดิมอย่างเป็นทางการแล้ว
คุณสามารถดาวน์โหลด Android NDK (Native Development Kit) ได้จากที่นี่: https://developer.android.com/ndk/downloads/index.html
นอกจากนี้ยังมีโพสต์บล็อกเกี่ยวกับ NDK:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Android NDKเป็นชุดเครื่องมือที่ช่วยให้คุณใช้ชิ้นส่วนของแอปในรหัสพื้นเมืองโดยใช้ภาษาเช่น C และ C ++ ได้ สำหรับแอพบางประเภทสิ่งนี้สามารถช่วยให้คุณใช้ไลบรารีโค้ดที่เขียนด้วยภาษาเหล่านั้นได้อีกครั้ง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเริ่มต้นกับการพัฒนาดั้งเดิมให้ไปที่ลิงค์นี้
โดยปกติคุณจะต้อง:
หากคุณต้องการขายแอพ:
Google ได้เปิดตัว Native Development Kit (NDK) (อ้างอิงจากhttp://www.youtube.com/watch?v=Z5whfaLH1-Eเวลา 00:07:30)
หวังว่าข้อมูลจะได้รับการอัปเดตในหน้ากลุ่ม google ( http://groups.google.com/group/android-ndk ) ตามที่ระบุว่ายังไม่ได้เปิดตัว
ฉันไม่แน่ใจว่าจะดาวน์โหลดได้ที่ไหน แต่ฉันได้ยินมาว่าคุณสามารถรับ NDK ได้จากที่เก็บ Git ของ Google ภายใต้สาขาโดนัท
ตำแหน่งทางการดูเหมือนว่าจะไม่ใช่สิ่งที่คุณต้องการ "อยากทำ" ดูหัวข้อนี้ในรายการนักพัฒนา Android Google มองเห็น android ที่ใช้อุปกรณ์ต่าง ๆ (ซีพียูจอแสดงผล ฯลฯ ) วิธีที่ดีที่สุดในการเปิดใช้งานการพัฒนาคือการใช้รหัสที่จัดการ (พกพา) ที่กำหนดเป้าหมาย Dalvik VM ด้วยเหตุผลนี้ Android SDK จึงไม่รองรับ C / C ++
แต่ดูที่หน้านี้ :
Android มีชุดของไลบรารี C / C ++ ที่ใช้โดยคอมโพเนนต์ต่าง ๆ ของระบบ Android ความสามารถเหล่านี้ถูกเปิดเผยต่อนักพัฒนาผ่านกรอบแอปพลิเคชัน Android
เฟรมเวิร์กแอปพลิเคชันที่ได้รับการจัดการนั้นดูเหมือนจะอยู่ด้านบนสุดของไลบรารีเหล่านี้ หน้าเว็บจะแสดงรายการ C / C ++ libs: ไลบรารี C มาตรฐาน, สื่อ, 3D, SQL lite และอื่น ๆ
ดังนั้นสิ่งที่คุณต้องมีคือคอมไพเลอร์เชนที่จะรวบรวม C / C ++ ให้กับ CPU ที่เหมาะสม (ARM ในกรณีของ G1) บางคำแนะนำสั้น ๆ เกี่ยวกับวิธีการทำเช่นนี้มีที่นี่
สิ่งที่ฉันไม่รู้ก็คือจะหาคำอธิบายของ API ที่ห้องสมุดเหล่านี้มีให้ได้ที่ไหน ฉันเดาว่าอาจมีไฟล์ส่วนหัวฝังอยู่ใน SDK อยู่ที่ไหนสักแห่ง แต่เอกสารอาจจะขาดหายไป แต่ฉันคิดว่ามันสามารถทำได้!
หวังว่ามีประโยชน์ สำหรับบันทึกแล้วฉันยังไม่ได้เขียนแอพพลิเคชั่น Android ของตัวเองเลย
แอนดี้
คุณสามารถใช้nestedvmเพื่อแปลภาษา C (หรือภาษา GCC อื่น ๆ ) เป็น Java bytecode และใช้สิ่งนั้นเป็นพื้นฐานของพอร์ตของคุณ ยกตัวอย่างเช่นดูพอร์ต Android ของไซมอน Tathams คอลเลกชันปริศนาแบบพกพา
ฉันคาดหวังว่าวิธีการนี้จะทำให้ล้าสมัยโดย NDK แต่อาจไม่ได้อยู่ในบางเครือข่ายหรือบางสิ่งบางอย่างไม่อนุญาตให้ผู้คนอัพเกรดโทรศัพท์ของพวกเขา
Google ได้เปิดตัวGoogle I / O 2011 แล้ว: นำเกม C และ C ++ ไปยัง Androidซึ่งมีให้ที่http://www.youtube.com/watch?v=5yorhsSPFG4
ซึ่งเป็นสิ่งที่ดีที่จะเข้าใจการใช้ NDK สำหรับการเขียนแอปพลิเคชันใน c และ c ++ สำหรับ Android
หากคุณเพียงต้องการรวบรวมเกมพื้นเมืองที่ใช้คอนโซลและรันบน Android แล้วบทความนี้ได้แสดงวิธีการ 3 วิธีสำหรับสิ่งเดียวกัน
1: การรวบรวมแบบคงที่โดยใช้ toolchain แบบสแตนด์อโลน
2: การคอมไพล์ข้ามโดยใช้ toolchain ของ Android NDK
3: การคอมไพล์ข้ามโดยใช้ซอร์สโค้ด AOSP
บางทีคุณกำลังมองหาสิ่งนี้?
เป็นเลเยอร์กลางสำหรับการพัฒนาสำหรับแพลตฟอร์มมือถือหลาย ๆ เครื่องโดยใช้ c ++
ดูที่นี่ดูเหมือนว่าจะเป็นไปได้:
"ความจริงก็คือภาษาจาวาเท่านั้นที่รองรับไม่ได้หมายความว่าคุณไม่สามารถพัฒนาแอปพลิเคชั่นในภาษาอื่น ๆ ได้ซึ่งได้รับการพิสูจน์โดยนักพัฒนาแฮกเกอร์และผู้เชี่ยวชาญในการพัฒนาแอปพลิเคชั่นมือถือหลาย ๆ คนที่ Elements Interactive BV บริษัท หลัง Edgelib ไลบรารี่ประสบความสำเร็จในการรันแอพพลิเคชั่น C ++ บนแพลตฟอร์ม Android แม้ในขณะนี้ยังมีปัญหามากมายเกี่ยวกับการแสดงและเสียง ... เป็นต้นซึ่งรวมถึงเกม S-Tris2 และการสาธิตภาพเคลื่อนไหว 3 มิติของ Edgelib "
ตั้งแต่ปี 2009 มีการพัฒนาในเรื่องนี้
Necessitas - Qt (กรอบ C ++) สำหรับ Android วิดีโอ
เริ่มต้นใช้งาน
ลองดูที่กลุ่ม Google ndk ที่ดูเหมือนว่ามีแนวโน้มรุ่น NDK แรกจะพร้อมใช้งานในครึ่งปีแรกของปี 2552
อัปเดต: และจะเปิดตัวhttp://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
ฉันไม่แน่ใจ NDK ให้ความคุ้มครองเต็มรูปแบบของ Java API อย่างเป็นทางการ
จากhttp://developer.android.com/sdk/ndk/index.html#overview :
โปรดทราบว่า NDK ไม่ได้ช่วยให้คุณพัฒนาแอปพลิเคชั่นที่มีในเครื่องเท่านั้น รันไทม์หลักของ Android ยังคงเป็นเครื่องเสมือนของ Dalvik
Google เพิ่งเปิดตัว NDK ซึ่งช่วยได้อย่างแน่นอน
สามารถพบได้ที่นี่: http://developer.android.com/sdk/ndk/1.5_r1/index.html
โพสต์บล็อกนี้อาจเป็นการเริ่มต้นที่ดี: http://benno.id.au/blog/2007/11/13/android-native-apps โชคไม่ดีที่สิ่งสำคัญมากมายคือ "ปล่อยให้ผู้อ่านออกกำลังกาย"
ฉันไม่ทราบเกี่ยวกับการสอน แต่เป็นเครื่องมือในการพัฒนาที่ดี: Airplay SDK จาก Ideaworks Labs (เปลี่ยนโฉมใหม่เมื่อเร็ว ๆ นี้ " Marmelade ") การใช้ C / C ++ คุณสามารถสร้างแอพสำหรับ Windows Mobile, iPhone, Android องค์ประกอบเดียวที่ฉันไม่ชอบคือนักแต่ง GUI - รถบักกี้ แต่คุณสามารถทดแทนมันได้ด้วย Notepad
คุณสามารถดาวน์โหลด c4droid แล้วติดตั้งปลั๊กอิน GCC และติดตั้งลงใน SD ของคุณ จาก shell ฉันไปที่ไดเรคทอรีที่เป็น GCC binary แล้วเรียกมันว่าสร้างปฏิบัติการบนบอร์ด
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
สวัสดีแขน!
สามขั้นตอนนี้ดีต่อการมีและเก็บไว้ในโพสต์นี้
1) วิธีการโอนรหัสภาษาซีไปยัง Android
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
ไฟล์ C / c ++ ดั้งเดิม libstdc ++. * จาก Ubuntu ของคุณคือไบนารี x86 (หรือ x86_64) แต่อุปกรณ์ Android และอีมูเลเตอร์เป็น ARM แน่นอนว่านี่จะไม่ทำงานแม้ว่าคุณจะตั้งค่า soname ที่ถูกต้องก็ตาม นี่เป็นวิธีที่ไร้เดียงสาอย่างมาก Android ได้รับการสนับสนุนอย่าง จำกัด ของ C ++ หมายถึงไม่มีข้อยกเว้นไลบรารี C ++ มาตรฐาน (รวมถึง STL) และ RTTI หากคุณต้องการฟังก์ชั่นดังกล่าวให้ใช้การกระจาย NDK ของฉันเอง
http://crystax.net/android/ndk.php - รองรับคุณสมบัติ C ++ ทั้งหมดตามรายการด้านบน
เหตุใดจึงมีข้อผิดพลาด: ไม่ได้กำหนดการอ้างอิงถึงข้อผิดพลาดการเชื่อมโยง '__cxa_end_cleanup' Android stlport
เวลา. เนื่องจากไม่มีลิงก์ไปยัง libstdc + + A. ผิด
เนื่องจากใช้ไลบรารีแบบคงที่บางตัวจึงจำเป็นต้องเชื่อมโยง libstdc + + แบบเต็ม กระป๋อง
http://crystax.net/android/ndk.phpที่นี่เพื่อดาวน์โหลดแพ็คเกจ
ไดเรกทอรี \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi
Android บนการสนับสนุน libstdc + + ของตัวเองนั้นถูก จำกัด มันจะต้องเชื่อมโยงกับ libstdc + + ที่สมบูรณ์ เป็นงาน
เพิ่มไฟล์ใน Android.mk LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
และLOCAL_CPPFLAGS + =-lstdc + +-fexceptions
สามารถรวบรวมได้
มีแผนที่จะอนุญาตให้ใช้ไลบรารี C / C ++ ใน Android รุ่น SDK ถัดไป (Codename Eclair?) จนถึงวันนี้มันเป็นไปไม่ได้ผ่าน Android Java SDK อย่างไรก็ตามคุณสามารถคว้าโครงการโอเพ่นซอร์สขนาดใหญ่ม้วนห้องสมุดของคุณแล้วแฟลชอุปกรณ์ของคุณเอง ... แต่ใครก็ตามที่ต้องการใช้ห้องสมุดของคุณจะต้องสร้างงานสร้างของคุณเองเช่นกัน
คำตอบสั้น ๆ : คุณทำไม่ได้
@ Backslash17: มองผ่านบทความและลิงค์ต่อไปนี้พร้อมคำแนะนำในการติดตั้ง บริษัท ทั้งหมดที่ทำงานก็คือการเปิดตัวปฏิบัติการที่คอมไพล์ด้วยตัวเองบนอีมูเลเตอร์โดยผ่านกรอบของ Android เมื่อคุณมีอีมูเลเตอร์คุณสามารถเทลเน็ตและมีเชลล์ลินุกซ์ แน่นอนว่าการรันโปรแกรม linux นั้นเป็นเรื่องเล็กน้อย แต่นั่นไม่ได้ผลสำหรับโทรศัพท์ที่ไม่มีการเจลเบรค (รู้จักการเข้าถึงรูท) และไม่สามารถส่งมอบได้ในตลาด
เว้นแต่ Google จะเปิดโอกาสอื่น ๆ หรือมีคนเขียนคอมไพเลอร์แบบกำหนดเองที่รวบรวม Language X ไปยัง Dalvik bytecode (Dalvik เป็น VM ที่ใช้งานโปรแกรม Android) คุณจะไม่สามารถเขียนโค้ดเนทีฟได้