বিতরণের জন্য একটি অ্যান্ড্রয়েড জার লাইব্রেরি তৈরি করুন


160

আমি অ্যান্ড্রয়েড লাইব্রেরি প্রকল্পগুলি সম্পর্কে জানি, যা আপনাকে একটি ভাগ করে নেওয়া-উত্স প্রকল্প তৈরি করতে দেয় যা প্রয়োজনীয় হিসাবে অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে টানতে পারে। যাইহোক, এটি প্রয়োজন যে উত্স উপলব্ধ করা উচিত।

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

আমি http://andparcel.com/ দেখেছি তবে এটি একটি কাজের মতো বলে মনে হচ্ছে এবং আমি গুগল দ্বারা 'সরকারীভাবে সমর্থিত' কিছু ব্যবহার করব। এছাড়াও, আমার নিশ্চিত করা দরকার যে আমি যে জেআর তৈরি করি তা অ্যান্ড্রয়েড এসডিকে পুরানো / নতুন সংস্করণের সাথে সামঞ্জস্যপূর্ণ (যেমন আমার লক্ষ্য প্ল্যাটফর্ম সংস্করণ ইত্যাদি সেট করার একটি উপায় প্রয়োজন)।

সর্বশেষতম অ্যান্ড্রয়েড টুলসেটগুলি কি জেআর বাইনারি তৈরি / ব্যবহারের অনুমতি দেয়? আমি কীভাবে এটি করতে পারি তার কোনও ডকুমেন্টেশনের দিকে ইঙ্গিত করতে পারেন?


আপনার প্রশ্নের উত্তর পেয়েছেন? আমারও অনুরূপ প্রয়োজনীয়তা আছে .. আপনি কীভাবে জার ফাইল তৈরি করতে গিয়েছিলেন?
কৃষ্ণভদ্র

অ্যান্ড্রয়েডের জন্য একটি .জার বিতরণ করতে আপনার অ্যান্ড্রয়েড ডিএক্স সংকলক লাগবে না, নিয়মিত জাভা কম্পাইলার কাজ করে। আপনি যদি কোনও জার বিতরণ করেন তবে অ্যাপটি তৈরি হয়ে গেলে এটি ডেক্স বাইটোকোডে রূপান্তরিত হয়।
থমাস ডাব্লু

উত্তর:


49

যদি আপনি কোনও সংস্থান না করে অ্যান্ড্রয়েড লাইব্রেরি প্রকল্প তৈরি করেন তবে এডিটি (প্রথমে r16 তে লক্ষ্য করা গেছে) 'বিন' ফোল্ডারে প্রকল্পের একই নামের সাথে একটি জজার তৈরি করবে।


অনুগ্রহ এই প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/12970802/...
vnshetty

1
এটি আমাকে জার করে, তবে আমার কি এখনও সম্পদ ফোল্ডার বিতরণ করা দরকার? অ্যাকশনবার শেরলক জার করে দেওয়ার চেষ্টা করা হচ্ছে এবং আমার প্রকল্পগুলি সংকলন করবে না কারণ তারা অ্যাকশনবার সংস্থান খুঁজে পাচ্ছে না।
নাথান শোয়ারম্যান

1
@ স্কুইজ এটি কেবল অ-সংস্থানীয় প্রকল্পগুলির জন্য কাজ করে (যেমন আমি উত্তরে বলেছি)। অন্যথায় আপনাকে এটি একটি স্ট্যান্ডার্ড অ্যান্ড্রয়েড লাইব্রেরী প্রকল্প হিসাবে আমদানি করতে হবে।
ফ্রেডড্রয়েড

1
এটা কি এখনও সত্য? আমি ফোল্ডারে দেখতে পাচ্ছি myapp.jarনা /bin। আছে classes.jar, কিন্তু তাই না, তাই না?
আবর্জনা বর্ণবিবাহকারী

আমি সর্বশেষতম এডিটি চালাচ্ছি এবং আমি এখনও আমার / বিন ফোল্ডারে একটি <প্রকল্পের নাম> .জার পাই। তবে যদি আপনার প্রকল্পটি উত্সগুলির উপর নির্ভর করে তবে এটি কোনও ভাল নয় এবং প্রকল্পটি একটি লাইব্রেরি প্রকল্প হিসাবে অন্তর্ভুক্ত করা দরকার (আপনি এখনও একটি .jar পাবেন
ফ্রেড্রয়েড

23

অ্যান্ড্রয়েড একটি বিশেষ ধরণের অ্যান্ড্রয়েড-জার সরবরাহ করে না। তবে আপনি যা করতে পারেন তা হ'ল আপনার প্রকল্পে একটি বিল্ড.এক্সএমএল যুক্ত করা এবং পিঁপড়ে দিয়ে জার তৈরি করা।

আমার বিল্ড.এক্সএমএল দেখে মনে হচ্ছে:

<project name="MyAndroidLib" default="dist" basedir=".">
  <description>
This is my Android lib
  </description>
  <!-- set global properties for this build -->
  <property name="src" location="src" />
  <property name="bin" location="bin" />

  <target name="jar">
    <jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
      <!-- replace 'com' by what ever you are using -->
      <!-- as first part of the package name -->
      <!-- e.g. de, org, ... -->
      <!-- the ** is important to include the directory recursively -->
      <include name="com/**" />
    </jar>
  </target>
</project>

ant jarআপনার প্রকল্পের মূল ফোল্ডারে চালিয়ে জার তৈরি করুন ।


এটি চেষ্টা করে একটি জেআর ফাইল তৈরি করতে সক্ষম হয়েছিল, তবে জেআর-তে কোনও লাইব্রেরি রফতানির তুলনায় আকারটি বিজোড় (কেবল 343 বাইট) ছিল। কোন পতাকাটি অনুপস্থিত তা সম্পর্কে কোনও ধারণা?
শেন অলিভার

আপনি একটি সংরক্ষণাগার প্রোগ্রামের (জেআর হ'ল জিপ) জারের সামগ্রী চেক করতে পারেন এবং কী অনুপস্থিত রয়েছে তা দেখতে এবং সেগুলি যুক্ত করতে পারেন। আপনি এখানে আরও তথ্য পেতে পারেন: ant.apache.org/manual/Tasks/jar.html
সাদা_জেকো

5
সর্বশেষতম অ্যান্ড্রয়েড এসডিকে দিয়ে, জাভা ফাইলগুলি সংকলিত হয়েছে bin/classes, তাই <jar destfile="MyAndroidLib.jar" basedir="bin/">হওয়া উচিত<jar destfile="MyAndroidLib.jar" basedir="bin/classes/">
থিও

17

আপনি একটি "নিয়মিত" জাভা প্রকল্প তৈরি করতে পারেন এবং সেখান থেকে অ্যান্ড্রয়েড.জার থেকে আমদানি করতে পারেন। তারপরে, আপনার এসডিকে প্রতিটি অংশে অ্যাক্সেস থাকবে। তারপরে, আপনি আপনার প্রকল্পটি জার হিসাবে রফতানি করতে পারেন ... এবং আপনার Android অ্যাপ্লিকেশন থেকে এটি লোড করতে পারেন। এটি দুর্দান্তভাবে কাজ করে এবং এটি করার জন্য এটি প্রাকৃতিকভাবে সহজ উপায় বলে মনে হচ্ছে।


1
সেক্ষেত্রে কীভাবে গ্রন্থাগারের উপাদানগুলি পরিষেবা, ক্রিয়াকলাপ, সম্প্রচারকারী, ইন্টেন্টফিল্টারগুলির মতো ঘোষণা করতে হয়। ক্লায়েন্ট অ্যাপ্লিকেশনটির কি এই সমস্ত ঘোষণা ম্যানিফেস্টে রাখা দরকার?
রন

@ferostar আমি কীভাবে জাভা প্রকল্পে android.jar আমদানি করতে পারি?
কৃষ্ণভদ্র

যদি সেই লাইব্রেরির সংস্থান রয়েছে তবে কীভাবে একটি আর.জাভা তৈরি করা যায় এবং এটিকে জেআর-এ যুক্ত করতে হয়

15

আপনি যে প্রকল্পটির জার বানাতে চান তার কেবল সেই প্রকল্পের বৈশিষ্ট্যে যান Android অ্যান্ড্রয়েড ট্যাবে ক্লিক করুন। এবং ইস লাইব্রেরিতে টিক দিন। এখন আপনি বিন ফোল্ডারে .jar ফাইলটি দেখতে পাবেন you যেখানে আপনি ব্যবহার করতে চান সেখানে এটি ব্যবহার করুন।


2
লাইব্রেরি প্রোজেক্টের সংস্থান না থাকলে এটি কাজ করে বলে মনে হচ্ছে। কোনও ধারণা কীভাবে এটি সংস্থানসমূহের সাথে কাজ করবেন?
নাথান শোয়ারম্যান

এটি যদি আপনার লাইব্রেরি প্রকল্পটি অন্যান্য প্রকল্পের উপর নির্ভর করে তবে এটি একটি খারাপ উত্তর। সেই উল্লেখগুলি নেওয়া হবে না।
স্টিভবট

10

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

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


"আপনি সাধারণ উপায়ে একটি জেআর তৈরি করতে পারেন, তবে আপনি এর মধ্যে সংস্থানগুলি বা রেফারেন্স অন্তর্ভুক্ত করতে পারবেন না।" <- আমি যদি অ্যানড্রয়েড ক্লাসের রেফারেন্স করি বা অ্যান্ড্রয়েড সংকলক ব্যবহার করি তবে Eclipse এ ঠিক কাজ করবে বলে মনে হচ্ছে না। কীভাবে তা কাজ করতে হবে তা সম্পর্কে ক্লু?
সাইকোটিক

5
আমি সবেমাত্র একলিপসে একটি সাধারণ জাভা প্রকল্প তৈরি করেছি, অ্যান্ড্রয়েড.জার যুক্ত করার পথে যুক্ত করুন, তারপরে রফতানি - জাভা - জার ফাইল নির্বাচন করুন।
জেফ গিলফেল্ট

@ জেফগিলফেল্ট এবং যদি আপনি উদাহরণস্বরূপ অ্যান্ড্রয়েড -13 এসডিকে ডিরেক্টরিটির জন্য অ্যান্ড্রয়েড.জার অন্তর্ভুক্ত করেন, তবে আপনি কি এখনও উচ্চতর API স্তরের প্রকল্পগুলিতে আপনার জার লাইব্রেরিটি ব্যবহার করতে সক্ষম হবেন?
ফ্রান মারজোয়া

10

অ্যান্ড্রয়েড স্টুডিও 1.2 এর সর্বশেষ বিল্ডে, জেআর লাইব্রেরিটি তৈরি করা পয়েন্ট এবং ক্লিকের মতো সহজ হয়েছে।

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

  • গোটো ফাইল -> নতুন -> নতুন মডিউল এখানে চিত্র বর্ণনা লিখুন
  • অপশন তালিকার শেষে "জাভা লাইব্রেরি" নির্বাচন করুন এখানে চিত্র বর্ণনা লিখুন
  • এতে জার লিবের নাম এবং শ্রেণীর নাম এবং ফিনিশ বোতামটি চাপুন এখানে চিত্র বর্ণনা লিখুন
  • এটাই !

পরবর্তী পদক্ষেপটি আপনার অ্যাপ্লিকেশনে নির্ভরতা হিসাবে আপনার জার লাইব্রেরি যুক্ত করছে। ঠিক হিসাবে সহজ

  • গোটো ফাইল -> প্রকল্পের কাঠামো -> 'অ্যাপ' নির্বাচন করুন -> 'নির্ভরতা' নির্বাচন করুন
  • নীচে '+' নির্বাচন করুন -> 'মডিউল নির্ভরতা' নির্বাচন করুন এখানে চিত্র বর্ণনা লিখুন
  • আপনি ঠিক উপরে তৈরি আপনার জার লিব মডিউলটি নির্বাচন করুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন
  • ঠিক আছে নির্বাচন করুন এবং এটি thats!

.... অথবা আপনি কেবল আপনার অ্যাপ গ্রেডল ফাইলটিতে নীচের লাইনটি যুক্ত করতে পারেন

dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar']) // Default Gradle Task, should be already present
      compile 'com.android.support:appcompat-v7:21.0.3' // Default Gradle Task, should be already present

      compile project(':nameOfYourJarLibraryModule') // This is your jar library module
 }

গুগল, অ্যান্ড্রয়েড সংরক্ষাণাগার (AAR) প্রচার করছে যদিও JAR- র সমর্থিত ফিরে আনা হয় অ্যান্ড্রয়েড studio.To AAR এবং জারের মধ্যে পার্থক্য জানতে পড়ুন এই লিঙ্কে


আমি বুঝতে পারি না এটি কীভাবে একটি নতুন জার ফাইল তৈরি করে। দেখে মনে হচ্ছে আপনি এমন একটি নতুন মডিউল তৈরি করছেন যা আপনার অ্যান্ড্রয়েড প্রকল্পে একটি লাইব্রেরি হিসাবে ব্যবহৃত হবে
Jejefcgb

কি?! আপনি কিছুই থেকে নতুন জার তৈরি?
ইওকস

@ সপ্তাহ: আপনি মডিউলটি তৈরি করার পরে আপনাকে এতে ক্লাস যুক্ত করতে হবে। একবার হয়ে গেলে আপনি একে নির্ভরতা হিসাবে যোগ করেন
নিশান্ত।

2
প্রশ্নটি ছিল: উত্স কোড সহ একটি ইমপ্লেনড লাইব্রেরি রয়েছে। এটির জারটি কীভাবে তৈরি করা যায় যাতে পুরো লাইব্রেরির উত্স কোডের পরিবর্তে কেবলমাত্র জারটি অন্য প্রকল্পে ব্যবহৃত হয় .. বা আমি কিছু মিস করেছি?
ইওকস

2
@Nishant। আমার জন্য কাজ! ধন্যবাদ!
ramires.cabral

6

এটি চেষ্টা করুন: এটি কাজ করে

1) ইসলাইবারি পতাকাটি নির্বাচন না করে আপনার লাইব্রেরি প্রকল্পটিকে একটি সাধারণ প্রকল্প হিসাবে গড়ে তুলুন।

2) আপনার প্রকল্পটি অ্যান্ড্রয়েড অ্যাপ্লিকেশন হিসাবে কার্যকর করুন। (এটি কোনও ত্রুটি প্রদর্শন করবে না)

3) আপনি .apk সহ বিন ফোল্ডারে একটি .jar ফাইল পাবেন।

4) আপনি .ar যারা আপনার গ্রন্থাগার ব্যবহার করতে চান তা দিন।

5) তাদের বলুন কেবল নির্মাণের পথে বাহ্যিক জার আমদানি করতে।

এটি সমস্ত সংস্থানগুলির সাথে সূক্ষ্মভাবে কাজ করবে। ভাগ্য সুপ্রসন্ন হোক.


1
আমাকে এই পোস্টটি সংশোধন করতে হবে: জেআর-ফাইলগুলিতে কেবল কোড থাকতে পারে, কোনও অ্যান্ড্রয়েড সংস্থান থাকতে পারে। যদি কোনও সংস্থান অন্তর্ভুক্ত / প্রয়োজন হয় তবে আমাদের লাইব্রেরি প্রকল্পটি উন্মুক্ত রাখতে হবে এবং কেবল একটি সাধারণ জেআর-ফাইল ব্যবহার করতে পারি না।
કોડি

@ কোডি: আমরা কীভাবে সম্পদের পাশাপাশি জার ফাইল তৈরি করব এবং এটি অন্য প্রকল্পে ব্যবহার করব?
মহন্তেশ এম আম্বি

1

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


0

আমাদের প্রকল্পে, আমরা apk তৈরি করছি (apkbuilder ব্যবহার করে) যা / সিস্টেমে / ফ্রেমওয়ার্কে ইনস্টল করা আছে এবং এই এপিকে ডিফল্ট শ্রেণিবদ্ধে যুক্ত করেছে। জারটি ব্যবহার করে অ্যাপ্লিকেশনগুলি সংকলনের জন্য, আমরা একটি জার ফাইল তৈরি করছি (জার সি ব্যবহার করে)।

দ্রষ্টব্য: লাইব্রেরিতে আমাদের কোনও সংস্থান নেই।


0

.jar হ'ল একটি .zip ফাইল যা .class ফাইল ধারণ করে (আপনি কোনও .jar ফাইলকে .zip এ পরিবর্তন করার চেষ্টা করতে পারেন তারপরে ফলাফল দেখুন)। সহজেই, আপনি .class ফাইলটি জিপ করে যে কোনও উদ্দেশ্যে .ar লাইব্রেরি তৈরি করতে পারেন।


কঠোরভাবে সত্য নয়, দেখতে en.wikipedia.org/wiki/JAR_(file_format) সূক্ষ্ম পার্থক্য (প্রধানত জিপ মধ্যে এন্ট্রি ক্রম)
ইদ্দোর

0

পদক্ষেপ:

1) ফাইল প্রজেক্ট.প্রেটিস খুলুন

2) মান যোগ করুন android.library=true

3) ফাইল সংরক্ষণ করুন

4) প্রকল্পের জন্য গ্রহন মেনু থেকে, স্বয়ংক্রিয়ভাবে বিল্ড নির্বাচন করুন এবং তারপর পরিষ্কার নির্বাচন করুন

ফলাফল: ব্র্যান্ড নতুন বয়াম অধীনে তৈরি করা হয় বিন

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