मैं एंड्रॉइड के लिए एक गेम विकसित / पोर्ट करने की कोशिश कर रहा हूं, लेकिन यह सी में है, और एंड्रॉइड जावा का समर्थन करता है, लेकिन मुझे यकीन है कि वहां पर सी ऐप प्राप्त करने का एक तरीका होना चाहिए, किसी को भी इसे पूरा करने का एक तरीका पता है?
मैं एंड्रॉइड के लिए एक गेम विकसित / पोर्ट करने की कोशिश कर रहा हूं, लेकिन यह सी में है, और एंड्रॉइड जावा का समर्थन करता है, लेकिन मुझे यकीन है कि वहां पर सी ऐप प्राप्त करने का एक तरीका होना चाहिए, किसी को भी इसे पूरा करने का एक तरीका पता है?
जवाबों:
Google के माध्यम से इस पर आने वाले किसी के लिए, ध्यान दें कि एसडीके 1.6 एंड्रॉइड से शुरू होने पर अब एक आधिकारिक देशी एसडीके है।
आप यहाँ से 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
एंड्रॉयड NDK एक टूलसेट आप मूल कोड में अपने ऐप के कुछ हिस्सों को लागू, इस तरह के C और C ++ के रूप में भाषाओं का उपयोग करने देता है। कुछ प्रकार के ऐप्स के लिए, यह आपको उन भाषाओं में लिखे कोड पुस्तकालयों का पुन: उपयोग करने में मदद कर सकता है।
मूल विकास के साथ आरंभ करने के बारे में अधिक जानकारी के लिए, इस लिंक का अनुसरण करें ।
आम तौर पर, आपको निम्न करना होगा:
यदि आप एक ऐप बेचना चाहते हैं:
Google ने एक मूल विकास किट (NDK) ( http://www.youtube.com/watch?v=Z5whfaLH1-E के अनुसार 00:07:30) जारी किया है।
उम्मीद है कि जानकारी Google समूह पृष्ठ ( http://groups.google.com/group/android-ndk ) पर अपडेट की जाएगी , क्योंकि यह कहता है कि यह अभी तक जारी नहीं किया गया है।
मुझे यकीन नहीं है कि इसके लिए एक सरल डाउनलोड कहां से मिलेगा, लेकिन मैंने सुना है कि आप डोनट शाखा के तहत Google की गिट रिपॉजिटरी से NDK की एक प्रति प्राप्त कर सकते हैं।
आधिकारिक स्थिति से लगता है कि यह ऐसा कुछ नहीं है जिसे आप कभी "करना चाहते हैं"। देखें इस सूत्र Android डेवलपर की सूची पर। Google विभिन्न उपकरणों (CPU, डिस्प्ले, आदि) की एक किस्म पर चलने वाले Android की परिकल्पना करता है। इसलिए विकास को सक्षम करने का सबसे अच्छा तरीका है कि (पोर्टेबल) प्रबंधित कोड का उपयोग किया जाए जो दलविक वीएम को लक्षित करता है। इस कारण से, Android SDK C / C ++ का समर्थन नहीं करता है।
लेकिन, इस पृष्ठ पर एक नज़र डालें :
एंड्रॉइड में C / C ++ लाइब्रेरी का एक सेट शामिल है जिसका उपयोग एंड्रॉइड सिस्टम के विभिन्न घटकों द्वारा किया जाता है। ये क्षमताएं Android एप्लिकेशन ढांचे के माध्यम से डेवलपर्स के सामने आती हैं।
इन पुस्तकालयों के शीर्ष-स्तर पर प्रबंधित अनुप्रयोग ढांचा स्तरित दिखता है। पृष्ठ C / C ++ लिबास: मानक C लाइब्रेरी, मीडिया, 3D, SQL लाइट और अन्य को सूचीबद्ध करता है।
तो आपको बस एक संकलक श्रृंखला है जो C1 / C ++ को उपयुक्त CPU (ARM, G1 के मामले में) संकलित करेगी। ऐसा करने के तरीके पर कुछ संक्षिप्त निर्देश हैं यहाँ ।
मुझे नहीं पता कि इन पुस्तकालयों द्वारा प्रदान किए जाने वाले एपीआई के विवरण कहां से मिलेंगे। मुझे लगता है कि SDK में कहीं हेडर फाइल दफन हो सकती है, लेकिन प्रलेखन स्केच / गायब हो सकता है। लेकिन मुझे लगता है कि यह किया जा सकता है!
आशा है कि उपयोगी है। रिकॉर्ड के लिए, मैंने कोई देशी एंड्रॉइड ऐप नहीं लिखा है - बस कुछ सरल प्रबंधित।
एंडी
आप सी (या अन्य जीसीसी भाषाओं) का अनुवाद करने के लिए नेस्टेडम को जावा बाइटकोड में उपयोग कर सकते हैं , और अपने पोर्ट के आधार के रूप में उपयोग कर सकते हैं। उदाहरण के लिए, साइमन टाथम्स पोर्टेबल पहेली संग्रह का एंड्रॉइड पोर्ट देखें ।
मुझे उम्मीद है कि यह विधि NDK द्वारा अप्रचलित है, लेकिन ऐसा नहीं हो सकता है यदि कुछ नेटवर्क या कुछ लोग अपने फोन को अपग्रेड करने की अनुमति नहीं देते हैं।
Google ने पहले ही Google I / O 2011 लॉन्च कर दिया है : C और C ++ गेम्स को Android सत्र में लाया जा रहा है जो http://www.youtube.com/watch?v=5yorhsSPFG4 पर उपलब्ध है
जो android के लिए c और c ++ में एप्लीकेशन लिखने के लिए NDK के उपयोग को समझने के लिए अच्छा है।
यदि आप किसी भी कंसोल आधारित देशी गेम को संकलित करना चाहते हैं और उन्हें एंड्रॉइड पर चलाना चाहते हैं, तो इस अनुच्छेद ने उसी के लिए 3 तरीके दिखाए हैं।
1: स्टैंडअलोन टूलकिन का उपयोग करके स्थैतिक संकलन
2: Android NDK के टूलचिन का उपयोग करके क्रॉस संकलन
3: AOSP स्रोत कोड का उपयोग करके क्रॉस संकलन
शायद आप इस के लिए देख रहे हैं?
यह c ++ का उपयोग करके कई मोबाइल प्लेटफार्मों के लिए विकसित करने के लिए एक मध्य परत है।
इसे देखकर ऐसा लगता है कि यह संभव है:
"तथ्य यह है कि केवल जावा भाषा समर्थित है इसका मतलब यह नहीं है कि आप अन्य भाषाओं में एप्लिकेशन विकसित नहीं कर सकते हैं। यह कई डेवलपर्स, हैकर्स और विशेषज्ञों द्वारा मोबाइल के लिए एप्लिकेशन डेवलपमेंट में साबित किया गया है। एजलिब के पीछे कंपनी एलिमेंट्स इंटरएक्टिव बीवी में लोग हैं। लाइब्रेरी, एंड्रॉइड प्लेटफ़ॉर्म पर देशी C ++ एप्लिकेशन को चलाने में सफल रहा, यहां तक कि इस समय भी डिस्प्ले और साउंड ... आदि पर कई मुद्दे हैं। इसमें S-Tris2 गेम और एडगैब का 3 डी एनिमेशन डेमो शामिल है। "
2009 से इस मामले पर एक विकास चल रहा है।
Necessitas - क्यूटी (सी ++ ढांचे) Android के लिए
आरंभ कर रहे हैं वीडियो ।
Google ndk समूह पर एक नज़र डालें जो यह आशाजनक लगता है, NDK का पहला संस्करण 1H2009 में उपलब्ध होगा।
अपडेट: और यह http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html जारी किया गया है
मुझे यकीन नहीं है कि एनडीके आधिकारिक जावा एपीआई की पूर्ण कवरेज प्रदान करता है।
से http://developer.android.com/sdk/ndk/index.html#overview :
कृपया ध्यान दें कि NDK आपको केवल-मूल एप्लिकेशन विकसित करने में सक्षम नहीं करता है। एंड्रॉइड का प्राथमिक रनटाइम Dalvik वर्चुअल मशीन है।
Google ने सिर्फ NDK जारी किया जो कि वास्तव में इसकी अनुमति देता है।
यह यहाँ पाया जा सकता है: http://developer.android.com/sdk/ndk/1.5_r1/indinex.html
यह ब्लॉग पोस्ट एक अच्छी शुरुआत हो सकती है: http://benno.id.au/blog/2007/11/13/android-native-apps दुर्भाग्य से, बहुत से महत्वपूर्ण सामान "पाठक को एक अभ्यास के रूप में छोड़ दिया जाता है"।
मैं एक ट्यूटोरियल नहीं जानता लेकिन एक अच्छा विकास उपकरण: आइडियावर्क्स लैब्स से एयरप्ले एसडीके। (हाल ही में " Marmelade " को रीब्रांड किया गया है ) C / C ++ का उपयोग करके आप विंडोज मोबाइल, आईफ़ोन, एंड्रॉइड के लिए ऐप बना सकते हैं। एकमात्र घटक जो मुझे पसंद नहीं था वह जीयूआई संगीतकार था - एक छोटी गाड़ी, लेकिन आप हमेशा इसे नोटपैड के साथ स्थानापन्न कर सकते हैं।
आप c4droid डाउनलोड कर सकते हैं और फिर जीसीसी प्लगइन स्थापित कर सकते हैं और अपने एसडी पर इंस्टॉल कर सकते हैं। शेल से मैं सिर्फ उस निर्देशिका की ओर जाता हूं जहां जीसीसी बाइनरी है और फिर इसे ऑन बोर्ड एग्जीक्यूटेबल बनाने के लिए कॉल करता है।
/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) एंड्रॉइड पर देशी सी कोड कैसे पोर्ट करें
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
मूल C / c ++ फ़ाइलें libstdc ++। * आपके Ubuntu से x86 (या x86_64) बायनेरी हैं, लेकिन Android डिवाइस और एमुलेटर ARM हैं। बेशक, यह वैसे भी काम नहीं करेगा, भले ही आप सही सोनम को सेट करेंगे। यह बहुत भोला तरीका है जो कहीं नहीं जाता है। एंड्रॉइड को C ++ का बहुत सीमित समर्थन है जिसका कोई अपवाद नहीं है, मानक C ++ लाइब्रेरी (STL सहित) और RTTI। यदि आपको ऐसी कार्यक्षमता की आवश्यकता है, तो मेरे कस्टम NDK वितरण का उपयोग करें
http://crystax.net/android/ndk.php - यह ऊपर सूचीबद्ध पूर्ण C ++ सुविधाओं का समर्थन करता है।
त्रुटि क्यों है: '__cxa_end_cleanup' लिंक त्रुटि के लिए अपरिभाषित संदर्भ। Android stlport
समय। क्योंकि libstdc + + का कोई लिंक नहीं है। ए तो गलत है।
चूँकि यह कुछ स्टैटिक लाइब्रेरी का उपयोग करता है, इसलिए इसे पूर्ण 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
संकलित किया जा सकता है
एंड्रॉइड के अगले एसडीके संस्करण में कोड / सी ++ लाइब्रेरी की अनुमति देने की योजना है (कोडनेम एक्लेयर?) आज तक, यह एंड्रॉइड जावा एसडीके के माध्यम से संभव नहीं है। हालाँकि, आप बड़ी खुली स्रोत परियोजना को पकड़ सकते हैं, अपने स्वयं के पुस्तकालयों को रोल कर सकते हैं, और फिर अपने स्वयं के डिवाइस को फ्लैश कर सकते हैं ... लेकिन जो कोई भी आपके पुस्तकालय का उपयोग करना चाहता है उसे आपके कस्टम बिल्ड को भी फ्लैश करना होगा।
संक्षिप्त उत्तर: आप नहीं कर सकते।
@ बैकस्लैश 17: इंस्टॉलेशन निर्देशों के साथ लेख और निम्नलिखित लिंक को देखते हुए, सभी कंपनी को काम करना है, एंड्रॉइड फ्रेमवर्क को दरकिनार करते हुए, एमुलेटर पर एक आत्म संकलित निष्पादन योग्य लॉन्च करना है। एक बार आपके पास एमुलेटर होने के बाद आप इसमें टेलनेट कर सकते हैं और एक लिनक्स शेल है। एक लिनक्स प्रोग्राम चलाना, निश्चित रूप से तुच्छ है। लेकिन यह जेलब्रेक (उर्फ रूट एक्सेस) के बिना फोन के लिए काम नहीं कर रहा है और न ही बाजार में पहुंचाने योग्य है।
जब तक Google अन्य अवसरों को नहीं खोलता है या कोई व्यक्ति एक कस्टम कंपाइलर लिखता है जो लैंग्वेज एक्स को डाल्विक बायटेकोड में संकलित करता है (डेल्विक वह वीएम है जो एंड्रॉइड प्रोग्राम चलाता है) तो आप मूल कोड नहीं लिख पाएंगे।