অ্যান্ড্রয়েড সহ জাভা 7 ভাষার বৈশিষ্ট্য


188

শুধু ভাবছেন যে কেউ অ্যান্ড্রয়েডের সাথে নতুন জাভা 7 ভাষার বৈশিষ্ট্যগুলি ব্যবহার করার চেষ্টা করেছে? আমি জানি যে অ্যান্ড্রয়েড জাভা স্পিট আউট করে বাইটোকোড পড়ে এবং এটিকে ডেক্সে পরিণত করে। সুতরাং আমি অনুমান করি আমার প্রশ্নটি এটি জাভা 7 এর বাইটকোড বুঝতে পারে?


10
বিকল্পভাবে, সম্ভবত আপনি জাভা 7 ভাষার বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন তবে জাভা 6 বাইটকোড সংকলন করতে পারেন?
ম্যাট্রিক্সফ্রগ

2
একটি নতুন প্রকল্প তৈরি করার সময় অ্যান্ড্রয়েড স্টুডিও আপনাকে এখন একটি বিজ্ঞপ্তি দেবে: "মিনিএসডিকি ভার্সন 19-এরও কম দিয়ে, আপনি সংস্থান-ব্যবহারগুলি ব্যবহার করতে পারবেন না, তবে জাভা 7 এর অন্যান্য ভাষা বৈশিষ্ট্যগুলি ভাল"
IgorGanapolsky

1
হ্যাঁ আমি জানি :) আমরা আমাদের প্রকল্পে শেষ পর্যন্ত জাভা 7 ব্যবহার করছি।
ড্যানিয়েল রায়ান

উত্তর:


165

আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছেন তবে জাভা 7 ভাষা কোনও প্যাচ ছাড়াই স্বয়ংক্রিয়ভাবে সক্ষম করা উচিত। রিসোর্স-এ-রিসোর্সের জন্য এপিআই লেভেল 19+ প্রয়োজন, এবং নিও 2.0 স্টাফগুলি অনুপস্থিত।

আপনি যদি জাভা 7 বৈশিষ্ট্যগুলি ব্যবহার করতে না পারেন তবে কীভাবে আপনার সম্পাদনা করবেন সে সম্পর্কে @ নুনোর উত্তর দেখুন build.gradle

নিম্নলিখিতটি কেবল historicalতিহাসিক স্বার্থের জন্য।


জাভা 7 এর একটি ছোট্ট অংশ অবশ্যই অ্যান্ড্রয়েডের সাথে ব্যবহার করা যেতে পারে (দ্রষ্টব্য: আমি কেবলমাত্র 4.1 এ পরীক্ষা করেছি)।

প্রথমত, আপনি Elpipse এর ADT ব্যবহার করতে পারেননি কারণ এটি হার্ড কোডেড যে কেবল জাভা সংকলক 1.5 এবং 1.6 মেনে চলে। আপনি এডিটি পুনরায় সংকলন করতে পারেন তবে আমি দেখতে পেয়েছি যে সম্পূর্ণ অ্যান্ড্রয়েড একসাথে পুনরায় সংশোধন করা ছাড়া এটি করার সহজ উপায় নেই।

তবে আপনাকে Eclipse ব্যবহার করার দরকার নেই। উদাহরণস্বরূপ, অ্যান্ড্রয়েড স্টুডিও ০.০.২ , ইন্টেলিজ আইডিইএ সিই এবং অন্যান্য জাভাক -ভিত্তিক আইডিই অ্যান্ড্রয়েডে সংকলন সমর্থন করে এবং আপনি জাভা 8 পর্যন্ত কমপ্লায়েন্সটি সেট করতে পারেন:

  • ফাইল → প্রকল্পের কাঠামো → মডিউলগুলি → (দ্বিতীয় ফলকে মডিউলটি চয়ন করুন) level ভাষা স্তর → ("7.0 - হীরা, এআরএম, মাল্টি-ক্যাচ, ইত্যাদি" নির্বাচন করুন)

ইন্টেলিজজে জাভা 7 সক্ষম করা হচ্ছে

এটি কেবল জাভা language ভাষার বৈশিষ্ট্যগুলিকে মঞ্জুরি দেয় এবং লাইব্রেরি থেকে অর্ধেক উন্নতি হওয়ায় আপনি খুব কমই যে কোনও কিছু থেকে উপকৃত হতে পারেন। আপনি যে বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন সেগুলি হ'ল লাইব্রেরির উপর নির্ভর করে না:

  • ডায়মন্ড অপারেটর ( <>)
  • স্ট্রিং সুইচ
  • একাধিক-ধরা ( catch (Exc1 | Exc2 e))
  • আক্ষরিক সংখ্যার ( 1_234_567)
  • বাইনারি আক্ষরিক ( 0b1110111)

এবং এই বৈশিষ্ট্যগুলি এখনও ব্যবহার করা যাবে না :

  • try-সঙ্গে-সম্পদ বিবৃতি - কারণ এটা অ বিদ্যমান ইন্টারফেস "java.lang.AutoCloseable" প্রয়োজন (এই 4.4+ সর্বজনীনভাবে ব্যবহার করা যেতে পারে)
  • @ সেফভারার্স টিকা রচনা - কারণ "java.lang.SafeVarargs" বিদ্যমান নেই

... "তবুও" :) দেখা যাচ্ছে যে অ্যান্ড্রয়েডের গ্রন্থাগারটি 1.6 এর জন্য লক্ষ্যবস্তু করা হচ্ছে, অ্যান্ড্রয়েড উত্সটিতে অটোস্লোজেটেবল এবং Closeতিহ্যবাহী ইন্টারফেসের মতো ইন্টারফেস রয়েছে যেমন ক্লোজবেবল অটোক্লোজেবল থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছে (যদিও সেফভাইরাসগুলি আসলে অনুপস্থিত)। আমরা প্রতিবিম্বের মাধ্যমে এর অস্তিত্ব নিশ্চিত করতে পারতাম। এগুলি কেবল লুকিয়ে রয়েছে কারণ জাভাদকের কাছে @hideট্যাগ রয়েছে, যার ফলে "android.jar" তাদের অন্তর্ভুক্ত না করেছিল।

ইতিমধ্যে বিদ্যমান প্রশ্ন হিসাবে আছে আমি কীভাবে লুকানো এবং অভ্যন্তরীণ এপিআই উপলব্ধ অ্যান্ড্রয়েড এসডিকে তৈরি করব? কীভাবে এই পদ্ধতিগুলি ফিরে পাবেন on আপনার কেবলমাত্র আমাদের বর্তমানের প্ল্যাটফর্মের "অ্যান্ড্রয়েড.জার" রেফারেন্সটি আমাদের কাস্টমাইজড একের সাথে প্রতিস্থাপন করতে হবে, তার পরে জাভা 7 এপিআইয়ের অনেকগুলি উপলব্ধ হয়ে যাবে (পদ্ধতিটি গ্রহনের অনুরূপ। প্রকল্পের কাঠামো → এসডিকে দেখুন))

অটোক্লোজেবল অতিরিক্ত, (শুধুমাত্র) নিম্নলিখিত জাভা 7 গ্রন্থাগার বৈশিষ্ট্য প্রকাশ করা হয়:

  • সাম্প্রতিকতমতা মডেলিংএক্সেপশন, লিংকেজ এয়ারার এবং এ্যাসেরেশন এরিয়ারে চেইন কনস্ট্রাক্টর ব্যতিক্রম
  • আদিমদের জন্য স্ট্যাটিক .কম্পের () পদ্ধতিগুলি: বুলিয়ান ডটকম (পেট), বাইট ডটকম (পার্ট), শর্ট.কম (পার্ট), ক্যারেক্টার ডট কম (), ইন্টিজার ডট কম (), লং ডট কম () are
  • মুদ্রা : .getAv উপলভুক্ত বিমানবন্দর (), .getDisplayName () (তবে ছাড়া ) .getNumericCode ))
  • বিটসেট : .প্রিরিসেটসিট বিট (), .প্রিফেরি ক্লিয়ারবিট (), .ভাল্যুওফ (), টো লংআরে (), টোবাইটআর্রে ()
  • সংগ্রহ :।
  • AutoCloseable
  • নিক্ষেপযোগ্য : .addSuppressed (), .getSuppressed (), এবং 4-যুক্তি নির্মাণকারী
  • অক্ষর : .compare (), .isSurrogate (), .getName (), .HighSurrogate (), .lowSurrogate (), .isBmpCodePoint () (তবে .আইএল্যাব্যাটিক () ছাড়াই এবং .আইসআইডোগ্রাফিক ())
  • সিস্টেম: .লাইনসাপারেটর () (নথিভুক্ত?)
  • java.lang.reflect.Modifier : .classModifiers (), .constructorModifiers (),। FieldModifiers (), .interfaceModifiers (), .MododModifiers ()
  • নেটওয়ার্কআইন্টারফেস : .getIndex (), .getByIndex ()
  • ইনসকেটএড্রেস : .গেটহোস্টস্ট্রিং ()
  • ইনটএড্রেস : .গেটলুপব্যাকএড্রেস ()
  • লগার : .getGlobal ()
  • ConcurrentLinkedDeque
  • অ্যাবস্ট্রাক্টকিউইডসিনক্রোনাইজার : .হ্যাসকিউইডপ্রিসেসার্স ()
  • ডিফলারআউটপুট স্ট্রিম : "সিঙ্কফ্লুশ" সহ 3 জন নির্মাতা।
  • Deflater : .NO_FLUSH, .SYNC_FLUSH, .FULL_FLUSH, .deflate () 4 টি যুক্তি সহ

মূলত এটাই। বিশেষত, এনআইও 2.0 এর অস্তিত্ব নেই এবং অ্যারে.এএসলিস্ট এখনও @ সাফেভাইরাসগুলিতে নেই।


2
দুর্দান্ত উত্তর। আমি আশা করি সম্পূর্ণ jvm স্তর সমর্থন ভবিষ্যতে শীঘ্রই ঘটবে, nio2এবং অন্যান্য গুডিস অবশ্যই একটি সুসংবাদ হবে।
এসডি

4
AutoCloseableআইসিএস (বা সম্ভবত হানিকম্ব পর্যন্ত) অ্যান্ড্রয়েড রানটাইমটিতে ইন্টারফেসের অস্তিত্ব নেই তা উল্লেখ করার মতো বিষয় । এমনকি যদি আপনি প্যাচড android.jar ব্যবহার করেন তবে আপনি NoClassDefFoundError2.x সিস্টেমে পাবেন।
আইডলন

2
@ ডিভায়েন্ট: এর জন্য ডালভিক ভিএম সংশোধন করা দরকার, যেহেতু জাভা ৮ লাম্বদা ব্যবহার করে invokedynamicযা
জাভিএম

2
আপনি একটি আপডেট যুক্ত করতে চাইতে পারেন যে অ্যান্ড্রয়েড স্টুডিও ৩.২ অনুসারে, ভাষা স্তর fully সম্পূর্ণরূপে সমর্থিত, যদি আপনি কিটক্যাট
বিপরীতে

4
রিসোর্স দিয়ে চেষ্টা করুন এখন এসডিকে 19 (অ্যান্ড্রয়েড কিটক্যাট) এ ব্যবহার করা যেতে পারে। দেখুন tools.android.com/recent/androidstudio032released
মোহাম্মদ এল-নাকিব

70

সম্পাদনা: এই সময়ে এটি লেখা হয়েছিল, সর্বশেষ প্রকাশটি ছিল অ্যান্ড্রয়েড 9 এবং এক্সপ্লিস ইন্ডিগো। তার পর থেকে বিষয় বদলেছে।

  • ব্যবহারিক উত্তর

হ্যাঁ, আমি চেষ্টা করেছি। তবে এটি দুর্দান্ত পরীক্ষা নয় কারণ সামঞ্জস্যতা জাভা 7 ব্যবহার করার জন্য কোনও উপায় (কমপক্ষে কোনও সহজ উপায় নয়) 6 স্তরে সীমাবদ্ধ ছিল:

  • প্রথমে আমি একটি মেশিনে একটি জেডিকে 7 ইনস্টল করেছিলাম যেখানে অন্য কোনও জেডিকে ইনস্টল করা হয়নি - গ্রহন এবং অ্যান্ড্রয়েড হয় না ইনস্টল করা:

7 টি এই মেশিনে একমাত্র ইনস্টল করা

  • তারপরে আমি একেবারে নতুন একলিপস ইন্ডিগো ইনস্টল করেছিলাম এবং এটি জেডিকে 7 ব্যবহার করছে তা যাচাই করেছিলাম (ভাল, কারণ এটিই একমাত্র এবং এটিই আমি বেছে নিয়েছি আমি অবাক হতাম)

7 শুধুমাত্র এইগ্রহণটি ব্যবহার করে

  • তারপরে আমি অ্যান্ড্রয়েড এসডিকে (EDIT: Honeycomb, API13, এই পোস্টটি লেখার সময়) এর সর্বশেষতম সংস্করণ ইনস্টল করেছি। এটি আমার JDK 7 খুঁজে পেয়েছে এবং সঠিকভাবে ইনস্টল হয়েছে। এডিটির ক্ষেত্রেও একই।

  • একটি হ্যালো ওয়ার্ড অ্যান্ড্রয়েড অ্যাপ সংকলন এবং চালনার চেষ্টা করার সময় আমি অবাক হয়েছি। সামঞ্জস্যতা জাভা 6 এ জাভা 7 এ জোর করার কোনও উপায় ছাড়াই সেট করা হয়েছিল:

সামঞ্জস্যতা জাভা 6 এর মধ্যে সীমাবদ্ধ

  • আমি একটি অ-অ্যান্ড্রয়েড প্রকল্প, একটি নিয়মিত জাভা, দিয়ে চেষ্টা করেছি এবং আমার ব্যাখ্যাটি ছিল। সামঞ্জস্যতা স্তরটি Eclipse দ্বারা সীমাবদ্ধ বলে মনে হচ্ছে (নীচের চিত্রের নীচে বার্তাটি দেখুন):

গ্রহপ নিজেকে 6 স্তরের সামঞ্জস্যের মধ্যে সীমাবদ্ধ করে

তাই আমি ছিল হ্যালো ওয়ার্ল্ড কাজ, এবং এছাড়াও অন্যান্য অ্যাপ্লিকেশান, আরো জটিল এবং ব্যবহার SQLite, Listview, SensorএবংCamera , কিন্তু এই শুধুমাত্র প্রমাণ করে যে সামঞ্জস্য জাভা 7 হ্যান্ডলিং ভাল কাজ করেছেন এবং অ্যান্ড্রয়েড সঙ্গে কাজ বলে মনে হয়।

তাহলে, কেউ কি উপরে দেখা ভালগ্রহের সীমাবদ্ধতা বাইপাস করার জন্য ভাল পুরানো পিঁপড়ার সাথে চেষ্টা করেছিল?

  • থিওরিটিক্যাল উত্তর

যাইহোক, এসডিকে এখানে বর্ণিত হিসাবে জাভা 5 বা 6 ব্যবহার করার জন্য ডিজাইন করা হয়েছে

জাভা with এর সাথে আমাদের কিছু কাজ হতে পারে তবে এটি "দুর্ঘটনাক্রমে" কাজ করবে। ডেক্সের বিল্ডিংটি সঠিকভাবে কাজ করতে পারে বা না পারে, এবং একবার ডেক্স নির্মিত হলে এটি কাজ করতে পারে বা নাও পারে। এটি কারণ একটি অ-যোগ্য জেডিকে ব্যবহার করে সংজ্ঞা অনুসারে অনাকাঙ্ক্ষিত ফলাফল দেয়।

এমনকি যদি কেউ সাফল্যের সাথে প্লেইন জাভা 7 এর অধীনে অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি তৈরি করে ফেলেছে তবে এটি জেডিকে যোগ্যতা অর্জন করে না। অন্য অ্যাপ্লিকেশনটিতে প্রয়োগ করা একই প্রক্রিয়াটি ব্যর্থ হতে পারে বা ফলস্বরূপ অ্যাপ্লিকেশনটিতে সেই জেডিকে ব্যবহারের সাথে বাগগুলি আবদ্ধ থাকতে পারে। প্রস্তাবিত নয়।

যারা ওয়েব অ্যাপ্লিকেশন বিকাশের সাথে জড়িত তাদের জন্য, এটি জাভা 5 বা 6 এর অধীনে তৈরি করা একটি অ্যাপ্লিকেশন সার্ভারের অধীনে কেবলমাত্র জাভা 4 এর জন্য যোগ্যতাযুক্ত ওয়েব অ্যাপ্লিকেশন স্থাপন করার মতো (উদাহরণস্বরূপ ওয়েব্লোগিক 8 বলুন)। এটি কার্যকর হতে পারে, তবে এটি চেষ্টা করার চেয়ে অন্য উদ্দেশ্যে সুপারিশ করা যায় এমন কিছু নয়।


1
বিস্তারিত পর্যালোচনা করার জন্য ধন্যবাদ। দেখে মনে হচ্ছে আপনি জাভা language টি ভাষার বৈশিষ্ট্য ব্যবহার করতে পারবেন না তবে এখনও জাভা Java টি জাভা as হিসাবে ব্যবহার করতে পারবেন আশা করি খুব শীঘ্রই এই পরিবর্তন হয় :)
ড্যানিয়েল রায়ান

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

হ্যাঁ ভার্গা, তবে আমি মনে করি না যে সংকলক সংস্করণ সীমাবদ্ধতা এন্টি থেকে এসেছে তবে গ্রহণের থেকে এসেছে।
শ্লুবলু

2
এছাড়াও মনে রাখবেন যে আপনার যদি জাভাটির একাধিক সংস্করণে টোয়িং সরবরাহ করা সরঞ্জামগুলি সামঞ্জস্য না করে। আমার অর্থ হ'ল আপনি যদি প্রথমে জাভা tools টি সরঞ্জাম থেকে আপনার অ্যাপ্লিকেশনটি জার্সাইনারের সাথে স্বাক্ষর করেন এবং পরে জাভা installed ইনস্টল করেন এবং জাভা সাইনারের সাথে আমাদের অ্যাপ্লিকেশনটির একটি নতুন সংস্করণ সই করে যা জাভা 7 এবং একই কীস্টোরের সাথে আগের স্বাক্ষরগুলি মেলে না !
টিমো

38

ডালভিকভিএম.কম এর উদ্ধৃতি:

অ্যান্ড্রয়েড এসডিকে অন্তর্ভুক্ত ডিএক্স, নিয়মিত জাভা সংকলক দ্বারা সংকলিত জাভা ক্লাসের জাভা ক্লাসের ফাইলগুলিকে অন্য শ্রেণির ফাইল ফর্ম্যাটে (.dex ফর্ম্যাট) রূপান্তর করে

তার মানে, জাভা উত্স ফাইলটি কোনও ব্যাপার নয়, এটি কেবল। ক্লাস বাইটকোড।

যতদুর আমি জানি, শুধুমাত্র invokedynamic জাভা 7 জেভিএম বাইটকোড যোগ করা হয়েছে, বাকি জাভা 6. দ্য জাভা ভাষা সামঞ্জস্যপূর্ণ নিজেই ব্যবহার করে না হয় invokedynamic । অন্যান্য নতুন বৈশিষ্ট্য, যেমন স্ট্রিং গুলি বা মাল্টি- ক্যাচ ব্যবহার করে স্যুইচ স্টেটমেন্টটি কেবল সিনট্যাটিক চিনি এবং বাইট কোড পরিবর্তন প্রয়োজন হয় না। উদাহরণস্বরূপ, মাল্টি- ক্যাচ প্রতিটি সম্ভাব্য ব্যতিক্রমের জন্য কেবল ক্যাচ- ব্লকটি অনুলিপি করে ।

একমাত্র সমস্যাটি হওয়া উচিত যে জাভা in তে প্রবর্তিত নতুন ক্লাসগুলি অ্যান্ডক্লোজেবলের মতো অ্যান্ড্রয়েডে অনুপস্থিত রয়েছে , তাই আপনি চেষ্টা করে -সংস্থানসমূহ বৈশিষ্ট্যটি ব্যবহার করতে পারবেন কিনা তা সম্পর্কে নিশ্চিত নই (কেউ এটি চেষ্টা করেছিলেন?)

তাতে কোন মন্তব্য? আমি কিছু অনুপস্থিত করছি?


2
এখন সমস্যাটি হল আমরা কীভাবে জাভা source উত্স কোডগুলি জাভা class শ্রেণির ফাইলগুলিতে সংকলন করি বিশেষতঃ গ্রহণের ক্ষেত্রে?
র‌্যান্ডি সুগিয়ান্তো 'ইউকু'

আর একটাই প্রশ্ন আপনি কেন বিরক্ত করবেন?
ওয়ার্পজিট

@ ওয়ারপজিট আরও বড় প্রশ্ন হওয়া উচিত যে কোনও বিকাশকারী কেন এই সমস্ত বিভ্রান্তির জন্য বিরক্ত করবেন না?
অমিত

@ অমিত অ্যান্ড্রয়েডটি বুঝতে পেরেছেন যে এটি জাভা থেকে আলাদা এবং অ্যান্ড্রয়েডের সাথে কাজ করার জন্য তাকে দেওয়া সরঞ্জামগুলি ব্যবহার করতে হবে।
ওয়ারপজিট

2
@ ওয়ারপজিট তাঁর একমাত্র প্রশ্ন " অ্যান্ড্রয়েড কি জাভা 7 বুঝতে পারে? " অজ্ঞতা কখনই সমাধান / উত্তর হয় না ...
অমিত

12

অ্যানড্রয়েড এসডিকে ভি 15 হিসাবে, Eclipse 3.7.1 এর পাশাপাশি জাভা 7 অ্যান্ড্রয়েড বিকাশের জন্য সমর্থিত নয় । উত্সের সাথে সামঞ্জস্যতা 1.7 ম্যান্ডেটে সেট করা উত্পন্ন। ক্লাস ফাইলের সামঞ্জস্যতা 1.7 এ সেট করে যা অ্যান্ড্রয়েড সংকলক দ্বারা নিম্নলিখিত ত্রুটির দিকে পরিচালিত করে:

অ্যান্ড্রয়েডের 5.0 বা 6.0 সংকলনের সম্মতি স্তরের প্রয়োজন। পরিবর্তে '1.7' পাওয়া গেছে। অনুগ্রহ করে অ্যান্ড্রয়েড সরঞ্জামগুলি> প্রকল্পের সম্পত্তি ঠিক করুন।


5

@ কেনেটিএম এর উপরের উত্তরের প্রসারিত করতে, আপনি যদি ৪.০.৩ এবং তার উপরে ( মিনিসডকভিশন = ১৫ ) লক্ষ্য করে থাকেন তবে আপনি আপনার টার্গেটের এসডিকে অ্যান্ড্রয়েড.জারে কয়েকটি ক্লাস যুক্ত করে লুকানো এপিআইগুলি ব্যবহার করতে পারেন।

একবার আপনি এটি করার পরে, আপনি যে কোনও ক্লোজবেলে চেষ্টা-সহ-রিসোর্সগুলি ব্যবহার করতে পারেন, পাশাপাশি নিজের ক্লাসে অটোক্লোজেবল প্রয়োগ করতে পারেন।

এই এপিআইগুলি উপলব্ধ করতে অ্যান্ড্রয়েড.জারে সংশোধন করা দরকার এমন সমস্ত শ্রেণীর উত্স এবং বাইনারি সমন্বিত একটি জিপ তৈরি করেছি। আপনাকে কেবল এটি আনপ্যাক করে বাইনারিগুলি আপনার
অ্যান্ড্রয়েড-এসডিকে / প্ল্যাটফর্ম / অ্যান্ড্রয়েড-এনএন / অ্যান্ড্রয়েড.জারে যুক্ত করতে হবে

আপনি এটি এখান থেকে ডাউনলোড করতে পারেন: http://db.tt/kLxAYWbr

এছাড়াও নোট যে, মাস গত কয়েক সালে ইলিয়ট হিউজেস অ্যান্ড্রয়েড গাছ হতে কয়েক করে করেছে: AutoCloseable বন্ধ সমাপ্ত , SafeVarargs যোগ , লুকোনো বিভিন্ন API গুলি , ফিক্সড নিক্ষেপযোগ্য সুরক্ষিত কন্সট্রাকটর এবং DX মধ্যে সংস্করণ 51 বর্গ ফাইলের জন্য অতিরিক্ত সমর্থন । সুতরাং, অবশেষে কিছু অগ্রগতি চলছে।

সম্পাদনা (এপ্রিল 2014):

এসডিকে 19 প্রকাশের সাথে সাথে অতিরিক্ত এপিআই দিয়ে অ্যান্ড্রয়েড.জার প্যাচ করার দরকার নেই।

অ্যান্ড্রয়েড স্টুডিওতে app.০.৩ এবং তার চেয়ে বেশি লক্ষ্যযুক্ত এমন একটি অ্যাপ্লিকেশন ( minSdkVersion = 15 ) এর জন্য অ্যান্ড্রয়েড স্টুডিওতে রিসোর্স ব্যবহার করার সর্বোত্তম পদ্ধতিটি compileOptionsআপনার নীচে নিম্নলিখিতটি যুক্ত করছে build.gradle:

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.3'

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

অ্যান্ড্রয়েড স্টুডিও অভিযোগ করবে যে চেষ্টা করুন-সহ-রিসোর্সগুলি এই এপিআই স্তরের সাথে ব্যবহার করা যাবে না, তবে আমার অভিজ্ঞতাটি এটি পারে। প্রকল্পটি 4.0.3 বা তদুর্ধের ডিভাইসগুলিতে ইস্যু ছাড়াই নির্মিত এবং চালিত হবে। 500k + ডিভাইসগুলিতে ইনস্টল করা এমন একটি অ্যাপ্লিকেশন সহ আমি এর সাথে কোনও সমস্যা अनुभव করি না।

অ্যান্ড্রয়েড স্টুডিও ত্রুটি

এই সতর্কতাটি উপেক্ষা করতে, নিম্নলিখিতগুলিতে আপনার যুক্ত করুন lint.xml:

<issue id="NewApi">
    <ignore regexp="Try-with-resources requires API level 19"/>
</issue>

1
আমি এটি আকর্ষণীয় মনে করি যে অ্যান্ড্রয়েড স্টুডিও কোড সতর্কতা বলছে যে এপিআই 13-এ-রিসোর্সগুলি চেষ্টা করা নতুন এবং আমার এটি ব্যবহার করা উচিত। যদিও এটি সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করার সময় নেই।
ড্যানিয়েল রায়ান

1

দেখে মনে হচ্ছে খাঁটি পিঁপড়ে দিয়ে কাজ করা কিছুটা কুলডেজ।

তবে এটি আমার পক্ষে কাজ করেছে: http://www.informit.com/articles/article.aspx?p=1966024


1
আমি এটি দীর্ঘ সময়ের জন্য সন্ধান করলাম। নিবন্ধের মাধ্যমে ফিল্টারিংয়ের মাধ্যমে লোকজনকে ঝামেলা কাটাতে, আপনার অ্যান্ড্রয়েড দ্বারা সরবরাহ করা বিল্ট.এক্সএমএল এর property <সম্পত্তি নাম = "java.source" মান = "1.5" /> `লাইনটি পরিবর্তন করতে হবে আপনার প্রকল্প!)। আমার জন্য তা /opt/android-sdk-update-manager/tools/ant/build.xml ছিল
Mateusz Kowalczyk

না আপনি না। আপনি এই বৈশিষ্ট্যগুলি দিয়ে এগুলি ওভাররাইট করতে পারেন custom_rules.xml, আমার উত্তরটি এখানে দেখুন: stackoverflow.com/a/24608415/194894
ফ্লো

1

অ্যান্ড্রয়েডের পিঁপড়া ভিত্তিক বিল্ড সিস্টেম দ্বারা কোড বিল্ডে জাভা 7 বৈশিষ্ট্যগুলি ব্যবহার করতে custom_rules.xml, আপনার প্রকল্পগুলির মূল ডিরেক্টরিতে কেবল নিম্নলিখিতটি লিখুন :

custom_rules.xml:

<project name="custom_android_rules">
    <property name="java.target" value="1.7" />
    <property name="java.source" value="1.7" />
</project>

0

কিছু লোক আমি পেয়েছি এই গিট প্রকল্পে আগ্রহী হতে পারে, এটি অ্যান্ড্রয়েডে জাভা 7 চালানোর অনুমতি দেয় বলে মনে হয়। https://github.com/yareally/Java7-on-Android

তবে আমি যদি বর্তমান প্রকল্পে এটি যুক্ত করি তবে খুব বেশি ঝুঁকিপূর্ণ। সুতরাং আমি গুগল আনুষ্ঠানিকভাবে জাভা 7 সমর্থন না হওয়া পর্যন্ত অপেক্ষা করব।

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