অ্যান্ড্রয়েডের জন্য সি বা সি ++ এ অ্যাপ্লিকেশন লিখুন? [বন্ধ]


286

আমি অ্যান্ড্রয়েডে একটি গেম বিকাশ / পোর্ট করার চেষ্টা করছি, তবে এটি সি এর মধ্যে রয়েছে, এবং অ্যান্ড্রয়েড জাভা সমর্থন করে, তবে আমি নিশ্চিত যে সেখানে একটি সি অ্যাপ পাওয়ার কোনও উপায় অবশ্যই আছে, যে কেউ এটি সম্পাদন করার উপায় জানেন?


আপনি যদি ফোনকে জেলব্রেক করেন কেবলমাত্র আফাইক।
Cogsy

64
আইফোনের জন্য জেলব্রেকিং নয়?
রবার্ট গোল্ড

1
জি 1 ডিফল্টরূপে রুট অ্যাক্সেসের অনুমতি দেয় না এবং 'অ্যান্ড্রয়েড' পরিবেশের বাইরে কী কার্যকর করা যেতে পারে সে সম্পর্কে অনেকগুলি বিধিনিষেধ রয়েছে। অ্যান্ড্রয়েডের মধ্য থেকে নেটিভ কোড কার্যকর করার উপায় খুঁজে পাওয়ার আমার খুব বেশি আশা নেই।
Cogsy

2
তবে আমি বাজার থেকে Android এর জন্য ডুম ডাউনলোড করেছি OM সুতরাং এটি করণীয় হওয়া উচিত
রবার্ট গোল্ড

4
অ্যান্ড্রয়েডের জন্য ডওম
মার্কো মুস্তাপিক

উত্তর:


247

গুগলের মাধ্যমে যে যার কাছে এটি আসার জন্য নোট করুন যে এসডিকে ১.6 থেকে শুরু করে অ্যান্ড্রয়েডের এখন একটি সরকারী নেটিভ এসডিকে রয়েছে।

আপনি এখান থেকে অ্যান্ড্রয়েড এনডিকে (নেটিভ ডেভলপমেন্ট কিট) ডাউনলোড করতে পারেন: https://developer.android.com/ndk/downloads/index.html

এছাড়াও এনডিকে সম্পর্কে একটি ব্লগ পোস্ট রয়েছে: http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-re कृपया-1.html


5
ঠিক আছে, তাহলে এখন সি # এবং। নেট সম্পর্কে কীভাবে? -)
আভি

4
নেট সমর্থন কখনও ঘটতে পারে না
বিকিরক


2
অনুগ্রহ করে এই লিঙ্কটি androidsnippets.wordpress.com/2012/08/30/… দেখুন
KK_07k11A0585

2
.NET / c # কোড এবং অ্যান্ড্রয়েডের জন্য xamarin চেক আউট করুন
বিবিকিচিকেনরোবট

41

অ্যান্ড্রয়েড NDK একটি টুলসেট আপনি নেটিভ কোড মধ্যে আপনার অ্যাপ্লিকেশান অংশগুলি বাস্তবায়ন, এই ধরনের সি এবং সি ++ যেমন ভাষায় ব্যবহার করতে দেয়। নির্দিষ্ট ধরণের অ্যাপ্লিকেশানের জন্য এটি আপনাকে সেই ভাষাগুলিতে লিখিত কোড লাইব্রেরি পুনরায় ব্যবহার করতে সহায়তা করতে পারে।

স্থানীয় বিকাশের সাথে কীভাবে শুরু করবেন সে সম্পর্কে আরও তথ্যের জন্য, এই লিঙ্কটি অনুসরণ করুন

নমুনা অ্যাপ্লিকেশন এখানে পাওয়া যাবে


1
বা 2009, 2010, 2011, 2012 বা 2013
ক্রিস্টোফার বারম্যান

19

সাধারণত, আপনাকে:

  1. গুগল অ্যান্ড্রয়েড এনডিকে ইনস্টল করুন। এটিতে লিবস, শিরোনামগুলি, ম্যাকফিলের উদাহরণগুলি এবং জিসিসি সরঞ্জামচেন রয়েছে
  2. আপনার সি সি কোড থেকে এআরএমের জন্য একটি এক্সিকিউটেবল তৈরি করুন, অনুকূলিতকরণ করুন এবং প্রয়োজনে সরবরাহকৃত ল্যাবগুলির সাথে এটি লিঙ্ক করুন
  3. প্রদত্ত এডিবি ইন্টারফেস ব্যবহার করে কোনও ফোনে সংযোগ করুন এবং আপনার এক্সিকিউটেবলের পরীক্ষা করুন

আপনি যদি একটি অ্যাপ্লিকেশন বিক্রয় করতে চাইছেন:

  1. আপনার সি কোড থেকে একটি লাইব্রেরি তৈরি করুন
  2. সাধারণ জাভা কোড তৈরি করুন যা এই লাইব্রেরিটি ব্যবহার করবে
  3. অ্যাপ্লিকেশন প্যাকেজ ফাইলে এই গ্রন্থাগারটি এম্বেড করুন
  4. আপনার অ্যাপ্লিকেশন পরীক্ষা করুন
  5. এটি বিক্রয় করুন বা বিনামূল্যে বিতরণ করুন

আমি এনডিকে নতুন এবং আমি অ্যান্ড্রয়েডে সি ল্যান চালাতে চাই? কোন রেফের লিঙ্ক আছে?
প্যারাগ চৌহান

14

গুগল একটি নেটিভ ডেভলপমেন্ট কিট ( এনডিকে) প্রকাশ করেছে ( http://www.youtube.com/watch?v=Z5WWFLH1-E অনুযায়ী 00:07:30)।

আশা করি গুগল গ্রুপগুলির পৃষ্ঠায় ( http://groups.google.com/group/android-ndk ) তথ্য আপডেট করা হবে , কারণ এটি এখনও প্রকাশ করা হয়নি।

আমি এটির জন্য সহজ ডাউনলোড কোথায় পাবেন তা নিশ্চিত নই, তবে আমি শুনেছি যে আপনি ডোনাট শাখার অধীনে গুগলের গিট সংগ্রহস্থল থেকে এনডিকে একটি অনুলিপি পেতে পারেন।


12

সরকারী অবস্থানটি দেখে মনে হচ্ছে এটি এমন কোনও কিছু নয় যা আপনি কখনও "করতে চান"। অ্যান্ড্রয়েড বিকাশকারীদের তালিকায় এই থ্রেডটি দেখুন । গুগল বিভিন্ন ডিভাইস (সিপিইউ, প্রদর্শন, ইত্যাদি) উপর চলমান Android অ্যান্ড্রয়েড কল্পনা। বিকাশ সক্ষম করার সর্বোত্তম উপায় হ'ল (পোর্টেবল) পরিচালিত কোড ব্যবহার করা যা ডালভিক ভিএমকে লক্ষ্য করে। এই কারণে অ্যান্ড্রয়েড এসডিকে সি / সি ++ সমর্থন করে না।

তবে এই পৃষ্ঠাটি একবার দেখুন :

অ্যান্ড্রয়েডে অ্যান্ড্রয়েড সিস্টেমের বিভিন্ন উপাদান দ্বারা ব্যবহৃত সি / সি ++ লাইব্রেরির একটি সেট অন্তর্ভুক্ত রয়েছে। এই ক্ষমতাগুলি অ্যান্ড্রয়েড অ্যাপ্লিকেশন কাঠামোর মাধ্যমে বিকাশকারীদের কাছে প্রকাশ করা হয়েছে।

পরিচালিত অ্যাপ্লিকেশন কাঠামো এই লাইব্রেরির উপরের স্তরযুক্ত বলে মনে হচ্ছে। পৃষ্ঠাটি সি / সি ++ libs তালিকাভুক্ত করে: মানক সি লাইব্রেরি, মিডিয়া, 3 ডি, এসকিউএল লাইট এবং অন্যান্য।

সুতরাং আপনার যা দরকার তা হ'ল একটি সংকলক চেইন যা উপযুক্ত সিপিইউতে সি / সি ++ সংকলন করবে (জি 1 এর ক্ষেত্রে এআরএম)। এটি কীভাবে করবেন সে সম্পর্কে কয়েকটি সংক্ষিপ্ত নির্দেশিকা এখানে রয়েছে

আমি যা জানি না তা হ'ল এই লাইব্রেরিগুলি সরবরাহ করে এমন API এর বিবরণ কোথায় পাওয়া যায়। আমি অনুমান করতে পারি যে এসডিকে কোথাও হেডার ফাইলগুলি সমাধিস্থ করা যেতে পারে, তবে ডকুমেন্টেশনগুলি স্কেচি / নিখোঁজ হতে পারে। তবে আমার মনে হয় এটি করা সম্ভব!

আশা করি কার্যকর হবে। রেকর্ডের জন্য, আমি কোনও নেটিভ অ্যান্ড্রয়েড অ্যাপস লিখিনি - কেবল কয়েকটি সাধারণ পরিচালিত অ্যাপ্লিকেশন।

অ্যান্ডি


4
Downvoting। এনডিকে এখন অ্যান্ড্রয়েড নেটিভ কোডের জন্য একটি অফিসিয়াল সংকলক বলে মনে হচ্ছে। এই উত্তরটি অচল করে দেওয়া।
unixman83

8

আপনি জাভা বাইটকোডে সি (বা অন্যান্য জিসিসি ভাষাগুলি) অনুবাদ করতে নেস্টেডভিএম ব্যবহার করতে পারেন এবং এটি আপনার বন্দরের ভিত্তি হিসাবে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, সাইমন টেথামের পোর্টেবল ধাঁধা সংগ্রহের অ্যান্ড্রয়েড বন্দরটি দেখুন ।

আমি আশা করি NDK দ্বারা এই পদ্ধতিটি অচল করে দেওয়া হয়েছে, তবে কোনও নেটওয়ার্ক বা কোনও কিছু লোককে তাদের ফোন আপগ্রেড করার অনুমতি না দিলে এটি নাও পারে।


1
NDK এর বিকল্পের জন্য +1, যদিও এনডিকে এটি অপ্রচলিত করে।
tobsen

আরও ডিভাইসের সাথে নেস্টেডভিএম উপযুক্ত নয় কি?
charo

8

গুগল ইতোমধ্যে গুগল আই / ও ২০১১ চালু করেছে : সি এবং সি ++ গেমগুলি অ্যান্ড্রয়েড সেশনে আনয়ন যা http://www.youtube.com/watch?v=5yorhsSPFG4 এ উপলব্ধ

অ্যান্ড্রয়েডের জন্য সি এবং সি ++ তে অ্যাপ্লিকেশন লেখার জন্য এনডিকে ব্যবহার বুঝতে ভাল।

আপনি যদি কেবল কোনও কনসোল ভিত্তিক নেটিভ গেমটি সংকলন করতে চান এবং এন্ড্রয়েডে চালাতে চান তবে এই নিবন্ধটি এর জন্য 3 টি পদ্ধতি দেখিয়েছে।

1: স্ট্যান্ডেলোন টুলচেন ব্যবহার করে স্থির সংকলন

2: অ্যান্ড্রয়েড এনডিকে এর সরঞ্জামচেইন ব্যবহার করে ক্রস সংকলন

3: এওএসপি উত্স কোড ব্যবহার করে ক্রস সংকলন


7

আপনি কি এটি খুঁজছেন?

http://www.mosync.com/

এটি সি ++ ব্যবহার করে বেশ কয়েকটি মোবাইল প্ল্যাটফর্মের জন্য বিকাশের জন্য একটি মাঝারি স্তর।


2
লিঙ্কটি 404 পাওয়া যায় নি। সাইটের মালিক লটারি জিতলে, তার স্ত্রীকে তালাক দেয় এবং বাহামাসে চলে যায় সে ক্ষেত্রে মূল পোস্ট থেকে কিছু বিষয়বস্তু উত্তরে রেখে দেওয়া সবসময়ই ভাল ধারণা।
Zuzlx

7

এটি দেখে মনে হয় এটি সম্ভব:

"সত্যতা কেবল জাভা ভাষার সমর্থিত হওয়ার অর্থ এই নয় যে আপনি অন্য ভাষায় অ্যাপ্লিকেশন বিকাশ করতে পারবেন না This এটি অনেক বিকাশকারী, হ্যাকার এবং মোবাইলের জন্য অ্যাপ্লিকেশন বিকাশের বিশেষজ্ঞরা প্রমাণ করেছেন Ed এডজিলিবের পিছনে সংস্থা এলিমেন্ট ইন্টারেক্টিভ বিভি-তে লোকেরা লাইব্রেরি, অ্যান্ড্রয়েড প্ল্যাটফর্মে নেটিভ সি ++ অ্যাপ্লিকেশন চালাতে সফল হয়েছে, এমনকি এখনও এই সময়ে প্রদর্শন এবং শব্দ সম্পর্কিত আরও অনেক সমস্যা রয়েছে ... ইত্যাদি এর মধ্যে এস-ট্রিস 2 গেম এবং এডজেলিবের একটি 3 ডি অ্যানিমেশন ডেমো অন্তর্ভুক্ত রয়েছে। "


6

২০০৯ সাল থেকে এই বিষয়ে একটি উন্নয়ন চলছে is
প্রয়োজনীয়তা - অ্যান্ড্রয়েড ভিডিও
শুরু করার জন্য কিউটি (সি ++ ফ্রেমওয়ার্ক) ।


ভাল যুক্তি. অতিরিক্ত নোট হিসাবে ঠিক, ন্যাসিটাস অ্যান্ড্রয়েড এনডিকে ব্যবহার করে।
জাইমে ইভান সার্ভেন্টস


5

আমি নিশ্চিত ননডিকে অফিসিয়াল জাভা এপিআইয়ের সম্পূর্ণ কভারেজ সরবরাহ করে।

Http://developer.android.com/sdk/ndk/index.html# ওভারভিউ থেকে :

দয়া করে নোট করুন যে NDK আপনাকে কেবল নেটিভ-অ্যাপ্লিকেশন বিকাশ করতে সক্ষম করে না। অ্যান্ড্রয়েডের প্রাথমিক রানটাইমটি রয়ে গেছে ডালভিক ভার্চুয়াল মেশিন।




2

আমি টিউটোরিয়াল জানি না তবে একটি ভাল বিকাশের সরঞ্জাম: আইডিয়াবার্স ল্যাবগুলি থেকে এয়ারপ্লে এসডিকে। (সম্প্রতি " মার্মেলেড " রূপান্তরিত ) সি / সি ++ ব্যবহার করে আপনি উইন্ডোজ মোবাইল, আইফোন, অ্যান্ড্রয়েডের জন্য অ্যাপ্লিকেশন তৈরি করতে পারেন। আমি যে একমাত্র উপাদানটি পছন্দ করিনি তা হ'ল জিইউআই সুরকার - একটি বগি, তবে আপনি সর্বদা নোটপ্যাডের সাথে এটির বিকল্প তৈরি করতে পারেন।


2

আপনি সি 4ড্রয়েড ডাউনলোড করতে পারেন এবং তারপরে জিসিসি প্লাগইন ইনস্টল করতে পারেন এবং আপনার এসডি তে ইনস্টল করতে পারেন। শেল থেকে আমি কেবল সেই ডিরেক্টরিতে চলে যাই যেখানে জিসিসি বাইনারি থাকে এবং তারপরে বোর্ডটিকে কার্যকর করতে সক্ষম করে তোলে।

সন্ধান / -নামি জিসিসি

/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;
}

./arm-linux-androideabi-gcc test.c-o পরীক্ষা

./test

হ্যালো বাহু!



2

নেটিভ সি / সি ++ ফাইলগুলি libstdc ++। * আপনার উবুন্টু থেকে x86 (বা x86_64) বাইনারি তবে অ্যান্ড্রয়েড ডিভাইস এবং এমুলেটরগুলি এআরএম। অবশ্যই, এটি কোনওভাবেই কাজ করবে না, এমনকি যদি আপনি সঠিক সোনাম সেট করেন। এটি খুব নিখুঁত উপায় যা কোথাও নিয়ে যায় না। অ্যান্ড্রয়েডের সি ++ এর খুব সীমিত সমর্থন রয়েছে যার অর্থ ব্যতিক্রম নেই, মান সি ++ গ্রন্থাগার (এসটিএল সহ) এবং আরটিটিআই রয়েছে। আপনার যদি এই জাতীয় কার্যকারিতা দরকার হয় তবে আমার কাস্টম এনডিকে বিতরণটি ব্যবহার করুন

http://crystax.net/android/ndk.php - এটি উপরে তালিকাভুক্ত সম্পূর্ণ সি ++ বৈশিষ্ট্যগুলিকে সমর্থন করে।

ত্রুটি কেন আছে: '__cxa_end_cleanup' লিঙ্ক ত্রুটিটির অপরিবর্তিত রেফারেন্স। অ্যান্ড্রয়েড stlport

সময়। কারণ libstdc + + এর কোনও লিঙ্ক নেই। উ: খুব ভুল।

যেহেতু এটি কিছু স্ট্যাটিক লাইব্রেরি ব্যবহার করে, তাই সম্পূর্ণ লিস্টস্টিক ++ লিঙ্ক করা প্রয়োজন। একটি ক্যান

প্যাকেজটি ডাউনলোড করতে এখানে http://crystax.net/android/ndk.php

উত্স \ cxx-stl \ gnu-libstdc + + bs libs \ আরমেবি ডিরেক্টরি।

অ্যান্ড্রয়েডের নিজস্ব 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সংকলন করা যায়


1

অ্যান্ড্রয়েডের পরবর্তী এসডিকে সংস্করণে কোড / সি ++ লাইব্রেরি দেওয়ার অনুমতি রয়েছে (কোডনাম ইক্লেয়ার?) আজ অবধি, অ্যান্ড্রয়েড জাভা এসডিকে মাধ্যমে এটি সম্ভব নয়। তবে, আপনি বিশাল ওপেন সোর্স প্রকল্পটি ধরতে পারেন, আপনার নিজের লাইব্রেরিগুলি রোল করতে পারেন এবং তারপরে আপনার নিজের ডিভাইস ফ্ল্যাশ করতে পারেন ... তবে যে কেউ আপনার লাইব্রেরিটি ব্যবহার করতে চায় তাকে আপনার কাস্টম বিল্ডটিও ফ্ল্যাশ করতে হবে।


-7

সংক্ষিপ্ত উত্তর: আপনি পারবেন না।

@ ব্যাকস্ল্যাশ 17: নিবন্ধটি এবং ইনস্টলেশনের নির্দেশাবলীর সাথে নিম্নলিখিত লিঙ্কটি সন্ধান করে, সমস্ত সংস্থা কাজ শুরু করেছে অ্যান্ড্রয়েড কাঠামোটি বাইপাস করে এমুলেটরটিতে একটি স্বয়ংক্রিয় সংকলিত এক্সিকিউটেবল চালু করা। একবার আপনার এমুলেটর থাকলে আপনি টেলনেট করতে পারেন এবং একটি লিনাক্স শেল নিতে পারেন। একটি লিনাক্স প্রোগ্রাম চালানো অবশ্যই তুচ্ছ। তবে এটি জেলব্রেক ছাড়াই ফোনের জন্য কাজ করছে না (ওরফে রুট অ্যাক্সেস) এবং বাজারে সরবরাহযোগ্য নয়।

গুগল অন্য সুযোগ না খোলে বা কেউ যদি একটি কাস্টম সংকলক লিখেন যা ভাষা এক্সকে ডালভিক বাইটকোডে সংকলন করে (ডালভিক এমন ভিএম যা অ্যান্ড্রয়েড প্রোগ্রামগুলি চালায়) আপনি নেটিভ কোড লিখতে পারবেন না।


ঠিক আছে, এ কারণেই আমি লিখেছি "মনে হচ্ছে ..."। বিশ্বাস করতে দেখুন!
ব্যাকস্ল্যাশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.