কীভাবে এএআরকে জেআর তে রূপান্তর করবেন


95

পরিস্থিতি :

আমি জাভা গ্রন্থাগারটি ব্যবহার করার ইচ্ছা করি এবং আমার কাছে কেবল একটি মাভেন সংগ্রহশালা থেকে একটি এআর ফাইল থাকে তবে আমার কাছে জেআর ফাইলটি দরকার ।

পটভূমি গল্প:

আমি একটি লাইব্রেরি সংকলন করার চেষ্টা করেছি, তবে এর গ্রেডল কাঠামোটি অস্থির ছিল। সুতরাং আমি একটি সংকলিত জার ফাইলের জন্য জিজ্ঞাসা করেছি, এবং এর বিকাশকারী আমাকে কিছু মাভেন সংগ্রহশালা থেকে একটি আয়ার ফাইল হস্তান্তর করেছিলেন (বিকাশকারী তার নিজস্ব প্রকল্পটি সংকলন করতে পারেন না)। গ্রেডল কনফিগারেশনটি একটি গোলমাল ছিল, এটি একাধিক লাইব্রেরির উপর নির্ভর করে এবং গ্রেডল কিছু ব্যতিক্রম ছুঁড়ে ফেলেছে thrown

আমি এটি আমার আইডিইএ আইডিইতে ব্যবহার করার চেষ্টা করেছি, তবে এটি এটি দেখতে পেল না। একটি লাইব্রেরী প্রকল্প ঠিক একটি জার ফাইল মধ্যে সংকলন করতে সক্ষম হওয়া উচিত?

প্রশ্ন :

সেই এআর ফাইলটিকে একটি জেআর ফাইলে রূপান্তর করতে আমার কী করা উচিত?


4
আপনি কেবল এটি জাজার নামে পুনরায় নামকরণ করতে পারেন তবে আপনার পরিবেশ সম্পর্কে আরও বিশদ না জেনে এটি আপনার যা করতে হবে তা বা নাও হতে পারে, একটি এআর নির্দিষ্ট ব্যবহারের সাথে অক্ষ গ্রন্থাগার।
পেডেন্টিক

4
আপনি হাসছেন, তবে আমাকে কিছু নিয়মিত শব্দ যুক্ত করতে হয়েছিল কারণ এসইও আমার প্রশ্নটি এত সরল-শব্দযুক্ত হওয়ার কারণে পোস্ট করতে দেয় না। এবং আমার ধারণা, এটি গ্রাডল ব্যবহার করে গ্রন্থাগারের বিকাশকারী তার নিজস্ব প্রকল্পটি সংকলন করতে পারবেন না এমন সমস্ত কিছু বলে ...
নেস্টর

উত্তর:


144

AAR ফাইলটি একটি নিয়ে গঠিত JAR- র ফাইল এবং কিছু রিসোর্স ফাইল (এটা মূলত একটি কাস্টম ফাইল এক্সটেনশন সঙ্গে একটি প্রমিত জিপ ফাইল যায়)। রূপান্তর করার পদক্ষেপ এখানে:

  1. স্ট্যান্ডার্ড জিপ এক্সট্র্যাক্ট ব্যবহার করে এআর ফাইলটি বের করুন ( এটি সহজ করার জন্য এটি *। জিপ নামকরণ করুন )
  2. এই classes.jar নিষ্কাশিত ফাইলে ফাইল
  3. আপনার প্রকল্পটির পছন্দ অনুসারে এটির নাম পরিবর্তন করুন এবং সেই জার ফাইলটি ব্যবহার করুন

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

স্পটিফাই অ্যান্ড্রয়েড এসডিকে টিউটোরিয়াল অনুসরণ করে, এই উত্তরটি ছিল প্রতিকার। এটি কারণ আমি নেটবিনে প্রকল্পগুলি বিকাশ করি যা এআর এক্সটেনশনের সাথে সম্মতিযুক্ত নয় বলে মনে হয়। চুওংফামের মন্তব্যটি এই উত্তরটির সাথে নয়, তবে এডাব্লুটিটির উত্তরের সাথে সম্পর্কিত বলে মনে হচ্ছে, এবং তারপরে আমি আংশিকভাবে চুওংফামের সাথে একমত, অর্থাৎ এআর থেকে জেআর-র সহজ নামটি কাজ করছে না। তবে আমি আংশিকভাবেও একমত নই কারণ "রিসোর্স" ক্লাস.জার ফাইলের জন্য প্রাসঙ্গিক নয়।
কার্ল

11
এটিকে ম্যাকের মাধ্যমে কীভাবে এক্সট্রাক্ট করা যায় তা সন্ধান করতে আমার খুব কষ্ট হয়েছিল: অন্যদের ক্ষেত্রেও: শুধু .আর জিপ পরিবর্তন করুন এবং ডাবল ক্লিক করুন!
বাসটিয়েন বিউরিয়ার

4
সুতরাং একটি উত্স ভিত্তিক জার তৈরির সমাধান কী?
2cupsOfTech

4
এই সমাধানটি কেবল জার ফাইলটিই বের করে, তবে সংস্থানগুলি এতে অন্তর্ভুক্ত করে না। কিছু ভুল হবে।
টিঙ্কার রবি

21

.aar হ'ল একটি স্ট্যান্ডার্ড জিপ সংরক্ষণাগার, যা .ar তে ব্যবহৃত হয়। কেবল এক্সটেনশানটি পরিবর্তন করুন এবং ধরে নিই এটি দুর্নীতিগ্রস্থ বা কোনও কিছু নয়, এটি ঠিক করা উচিত।

আপনার যদি প্রয়োজন হয়, আপনি এটি আপনার ফাইল সিস্টেমে এক্সট্র্যাক্ট করতে পারেন এবং তারপরে এটি একটি জার হিসাবে পুনঃস্থাপন করতে পারেন।

1) Rename it to .jar
2) Extract: jar xf filename.jar
3) Repackage: jar cf output.jar input-file(s)

আমি যখন জার এক্সএফ চালনা করি, তখন আমি কিছুই পাই না: সি: \ প্রোগ্রাম ফাইলগুলি জাভা \ jdk1.7.0_25 \ বিন> জার এক্সএফ সি:: দেব \ 1 \ অ্যান্ড্রয়েড-ম্যাপস-ইউটিস- 0.2.1.জার সি: \ প্রোগ্রাম ফাইল \ জাভা \ jdk1.7.0_25 \ বিন>
নেস্টর

4
বাবু, পদক্ষেপ 1 যথেষ্ট। সবেমাত্র এর নাম পরিবর্তন করুন .jar। আমার দৃষ্টিতে পদক্ষেপগুলি (2) এবং (3) অকেজো
ডাঃ দেও

@ ডিডিডিও আমি যদি কেবল এটির নাম পরিবর্তন করি তবে গ্রহন প্রকল্পটি এটি একটি গ্রন্থাগার হিসাবে স্বীকৃতি দিচ্ছে না। এটা কি স্বাভাবিক? কোন সংকেত সনাক্ত করুন?
তানাসিস

4
যদি আপনি কেবল এটির নাম পরিবর্তন করেন এবং জারের সাথে পুনরায় এটি না করে থাকেন তবে এটি প্রকাশিত হবে না এবং এটি বৈধ জার ফাইল হিসাবে স্বীকৃতি দেবে না, আমি বিশ্বাস করি।
এডাব্লুটিটি

16

অন্য অনেক লোক যেমন উল্লেখ করেছেন, কেবলমাত্র .aar ফাইল থেকে .jar টি বের করা খুব ভালভাবে এটি কেটে দেয় না কারণ সংস্থানগুলি হারিয়ে যেতে পারে।

এখানে আমার জন্য কাজ করা পদক্ষেপগুলি রয়েছে (অ্যান্ড্রয়েডের প্রসঙ্গে, আপনার অন্য উদ্দেশ্যগুলি থাকলে আপনার মাইলেজটি ভিন্ন হতে পারে):

  1. .Zip ফাইলটি .zip এবং এক্সট্র্যাক্টে নতুন নামকরণ করুন।
  2. নিষ্ক্রিয় ফোল্ডারটি একটি এডিটি প্রকল্প যা আপনি কিছু ছোটখাটো পরিবর্তন (নীচে দেখুন) দিয়ে Eclipse এ আমদানি করতে পারেন!
  3. এক্সট্রাক্ট ফোল্ডারে থাকা ফাইল ক্লাসের নাম পরিবর্তন করুন you জাস্ট আপনার পছন্দ অনুযায়ী (এই উদাহরণে আমারপ্রজেক্টলিব.জার) এবং এটিকে এক্সট্রাক্ট ফোল্ডারের মধ্যে লিবিব ফোল্ডারে সরান।
  4. এখন অ্যালিপস এটি গ্রহণ করার জন্য আপনাকে নিষ্ক্রিয় ফোল্ডার রুটে দুটি ফাইল রাখতে হবে:
    • .প্রজেক্ট
    • .ক্লাসপাথ
  5. এটি করতে, Eclipse এ একটি নতুন অ্যান্ড্রয়েড ডামি প্রকল্প তৈরি করুন এবং ফাইলগুলির অনুলিপি করুন বা কোনও বিদ্যমান অ্যান্ড্রয়েড প্রকল্প থেকে অনুলিপি করুন।
  6. প্রজেক্ট ফাইলটি খুলুন এবং এক্সএমএল নাম ট্যাগটি সন্ধান করুন এবং এর সামগ্রীগুলি মাইপ্রজেক্টলিব (বা আপনি যেটিকে উপরে আপনার জার ফাইল বলেছিলেন) দিয়ে প্রতিস্থাপন করুন এবং সংরক্ষণ করুন।
  7. এখন Eclipse এ আপনি বিদ্যমান উত্স থেকে -> নতুন -> প্রকল্প -> অ্যান্ড্রয়েড প্রকল্প ফাইল করতে পারেন এবং নিষ্কাশন ফোল্ডারের সামগ্রীটিতে নির্দেশ করতে পারেন।
  8. আমদানি করার পরে নতুন তৈরি প্রকল্পটিতে ডান ক্লিক করুন, সম্পত্তি -> অ্যান্ড্রয়েড নির্বাচন করুন এবং লাইব্রেরি চেক করুন ।
  9. আপনার মূল প্রকল্পে আপনি লাইব্রেরিটি ব্যবহার করতে চান, সেই জন্য প্রোপার্টি -> অ্যান্ড্রয়েডে যান এবং নির্ভরতার তালিকায় নতুন যুক্ত মাইপ্রজেক্টলিব যুক্ত করুন।

এটি আমাকে সাহায্য করেছিল। তবে সম্পূর্ণরূপে কাজ করার জন্য, আমাকে step থেকে step ধাপের মধ্যে একটি ফাঁকা "এসসিআর" ফোল্ডার তৈরি করতে হবে
বার্নহার্ড ক্রেঞ্জ

8

তাদের জন্য, যারা এটি স্বয়ংক্রিয়ভাবে করতে চান, আমি একটি সামান্য দুই-লাইনের বাশ স্ক্রিপ্ট লিখেছি যা পরবর্তী দুটি কাজ করে:

  1. সমস্ত * .আর ফাইল অনুসন্ধান করে এবং সেগুলি থেকে ক্লাস.জারগুলি বের করে
  2. নতুন নামগুলি ক্লাস.জারকে আয়ারের মতো হতে তবে নতুন এক্সটেনশনের সাথে নিয়ে গেছে

    find . -name '*.aar' -exec sh -c 'unzip -d `dirname {}` {} classes.jar' \;
    find . -name '*.aar' -exec sh -c 'mv `dirname {}`/classes.jar `echo {} | sed s/aar/jar/g`' \;
    

এটাই!


4
অবশ্যই, কোনও আআআআআজার রূপান্তরকারীতে সংস্থান এবং ম্যানিফেস্ট থাকবে না। আমরা বলতে পারি (অবশ্যই না তবে কাছাকাছি) aar=jar+res+manifest+libs। যাক rest=res+manifest+libs, চেয়ে jar(aar)=aar-rest
ddmytrenko

এটাই আমি চাই! অনেক ধন্যবাদ. তবে এটি সত্যই ডিস্কের ব্যবহার বৃদ্ধি করে। কারণ প্রতিটি সমর্থন লাইব্রেরির অনেকগুলি সংস্করণ রয়েছে। কেবল আনজিপ করুন সর্বশেষতম
ভার্শনটি

6

অ্যান্ড্রয়েড স্টুডিও (সংস্করণ: 1.3.2) আপনাকে একটি .aar এর ভিতরে .har অবিচ্ছিন্নভাবে অ্যাক্সেস করতে দেয়।

বোনাস: এটি স্বয়ংক্রিয়ভাবে ক্লাসগুলি সংক্ষেপিত করে!

কেবল এই পদক্ষেপগুলি অনুসরণ করুন:

  1. File > New > New Module > Import .JAR/.AAR Package আপনাকে আমদানি করতে .আর একটি মডিউল হিসাবে

  2. আপনার মূল প্রকল্পের নির্ভরতা হিসাবে নতুন নির্মিত মডিউল যুক্ত করুন (প্রয়োজন কিনা তা নিশ্চিত নয়)

  3. নীচে ক্যাপচারে দেখানো হয়েছে "ক্লাস.জার" এ ডান ক্লিক করুন, এবং "এক্সপ্লোরার-এ দেখান" ক্লিক করুন। এই তোমার .jar।

.ar থেকে প্রেরণ .ar


4
প্রথমে প্রজেক্ট ম্যানেজারে অ্যান্ড্রয়েডের পরিবর্তে প্রকল্পটি নির্বাচন করতে হবে তারপরে বাহ্যিক লাইব্রেরিগুলি দেখানো হবে
সামাদ

5
 The 'aar' bundle is the binary distribution of an Android Library Project. .aar file 
 consists a JAR file and some resource files. You can convert it
 as .jar file using this steps

1) Copy the .aar file in a separate folder and Rename the .aar file to .zip file using 
 any winrar or zip Extractor software.

2) Now you will get a .zip file. Right click on the .zip file and select "Extract files". 
 Will get a folder which contains "classes.jar, resource, manifest, R.java,
 proguard(optional), libs(optional), assets(optional)".

3) Rename the classes.jar file as yourjarfilename.jar and use this in your project.

দ্রষ্টব্য: আপনি যদি .ar ফাইল থেকে কেবল .jar ফাইল পেতে চান তবে উপরের উপায়ে ব্যবহার করুন। মনে করুন আপনি যদি .jar ফাইলের সাথে ম্যানিফেস্ট.এক্সএমএল এবং সংস্থানগুলি অন্তর্ভুক্ত করতে চান তবে আপনি আপনার .aar ফাইলটিতে ডান ক্লিক করতে পারেন এবং .zip হিসাবে সংরক্ষণের পরিবর্তে এটি সরাসরি জাজার ফাইল হিসাবে সংরক্ষণ করতে পারেন। আপনি বের করেছেন এমন .jar ফাইলটি দেখতে, জেডি-জিইআই (জাভা ডেকম্পিলার) ডাউনলোড করুন । তারপরে আপনার .jar ফাইলটি এই জেডি_জিইউআইতে টেনে আনুন এবং আপনি জাভা ফাইলের মতো পাঠযোগ্য বিন্যাসে .class ফাইলটি দেখতে পাবেন।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


এর অর্থ কি এই যে আমরা আরআর ফাইলটি জার ফাইলের মতো কেবল এটি .aar .ar থেকে নাম পরিবর্তন করে ব্যবহার করতে পারি?
সৌম্য

@ সৌম্য, না, আপনি পারবেন না।
ddmytrenko

4
আসলে কথোপকথনের বিষয়টি ভুল। আমরা এএআরকে জেআর বা বিপরীতে রূপান্তর করতে পারি না। কেবলমাত্র আমরা যা করতে পারি তা হ'ল "আআআআআআআআআআআআআআর থেকে জেআর বের করুন"। : এবং আমি লিখেছি কিভাবে এখানে ব্যাশ কোডের দুই লাইন ব্যবহার করে এই automaticaly করতে stackoverflow.com/a/29252592/746529
ddmytrenko

5

রিসোর্স ভিত্তিক .আর-প্রকল্পসমূহ

.Ar ফাইলের অভ্যন্তরে ক্লাস.জার ফাইলটি সন্ধান করা বেশ তুচ্ছ। যাইহোক, .আর-প্রকল্পটি কিছু সংস্থান সংজ্ঞায়িত করে তবে এই পদ্ধতির কাজ হবে না (উদাহরণ: R.layout.xyz)

  • সুতরাং কমন্সগুয়ের ডিয়ার আমাকে একটি .আর-ফাইলের বাইরে একটি বৈধ এডিটি-বান্ধব প্রকল্প পেতে সহায়তা করেছিল। আমার ক্ষেত্রে আমি সাব-স্যাম্পলিং-স্কেল-চিত্র-ভিউতে রূপান্তর করেছি । আমার পিসিতে রুবি সেট করতে প্রায় এক ঘন্টা সময় লেগেছে।

  • কমন্সগুই তার ব্লগে যেমন লিখেছেন তেমনই একটি পদ্ধতি হল এক্সপিস / এডিটি-র জন্য অ্যান্ড্রয়েড-মভেন-প্লাগইন ব্যবহার করছে ।

  • তবুও অন্য পদ্ধতির হতে পারে, পুরো কাঙ্ক্ষিত প্রকল্পটিকে গিট থেকে উত্স হিসাবে ক্লোনিং করে এটিকে "বিদ্যমান অ্যান্ড্রয়েড প্রকল্প" হিসাবে আমদানি করুন


1

আপনি যদি নিজের বিল্ডগুলির জন্য গ্রেডল ব্যবহার করছেন - একটি গ্র্যাডল প্লাগইন রয়েছে যা আপনাকে আপনার জাভা | কোটলিন | স্কেলা | ... মডিউলগুলিতে আয়ার নির্ভরতা যুক্ত করতে দেয়।

https://github.com/stepango/aar2jar

plugins {
    id 'java'
    id 'com.stepango.aar2jar' version “0.6// <- this one
}

dependencies {
    compileOnlyAar "com.android.support:support-annotations:28.0.0" // <- Use any AAR dependencies
}

বোঝার চেষ্টা করছেন, অ্যান্ড্রয়েড অ্যাপ / লিব প্লাগইনটির জন্য 'কমপাইলঅনলিআর' তৈরি করা কি সম্ভব? আমি জানি যে এটি আপনার লাইব্রেরি সম্পর্কে নয়, তবে সম্ভবত আপনি জানেন যেহেতু এটিই সম্ভব, অ্যান্ড্রয়েড প্লাগইনে 'কমপ্লায়ারআল্লিআর' এর মতো আর্টিক্ট কনফিগারেশন নেই। আপনি বুঝতে পারেন কেন আমি এই কার্যকারিতা এখানে (প্রয়োজন stackoverflow.com/questions/60998072/... )
HeyAlex

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