কীভাবে একটি অ্যান্ড্রয়েড স্টুডিও প্রকল্প থেকে .জার আউট করবেন


98

আমি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছি এবং আমার যেমন দেখানো হয়েছে তেমন প্রকল্পটি রয়েছে:

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

নীল বৃত্তের ভিতরে যা আছে তা হ'ল মাইলিব। মাইলিবকেও একটি বাহ্যিক লিব ব্যবহার করা প্রয়োজন যা লাল বৃত্তের অভ্যন্তরে থাকে এবং একটি অ্যাপাচি প্যাকেজ (সবুজ বৃত্ত)।

সুতরাং আমি এই পুরো জিনিসটিকে একক। জার করে তুলতে চাই, তাই আমি এটি অন্য প্রকল্পে ব্যবহার করতে পারি।

একটি ধাপে ধাপে গাইড সত্যিই প্রশংসা করা হবে, আমি বিকাশকারী বিশ্বের একটি শিক্ষানবিস।

ধন্যবাদ!


4
আমার মনে হয় আপনি যা চান তা হ'ল একটি ফাইল (অ্যান্ড্রয়েড সংরক্ষণাগার) যা কোনওটিকে সহজতা নির্ভরতা হিসাবে যুক্ত করা যেতে পারে। মূলত আপনার একটি অ্যান্ড্রয়েড লাইব্রেরি প্রকল্প তৈরি করা দরকার। তবে আমি সঠিক পদক্ষেপগুলি মন থেকে লিখতে পারি না।
rekire

4
আমার একটি .jar ফাইলের প্রয়োজন তাই আমি যে কোনও জাভা প্রকল্পে ব্যবহার করতে পারি। শুধু অ্যান্ড্রয়েডের নয়।
dum4ll3

4
প্রায় একই হতে হবে - একটি লাইব্রেরি প্রকল্প তৈরি করুন এবং এটি রফতানি করুন।
থ্র্যাশ বিন

এই বাগটি অ্যান্ড্রয়েড গ্রেডল প্লাগইনটিতে এমন একটি ঘাটতি বর্ণনা করে যা জার টার্গেট যুক্ত করতে গ্রেড বিল্ডফাইলে সহজেই হ্যাকিং প্রতিরোধ করে ...
মিমিগডল

উত্তর:


136
  • লাইব্রেরি প্রকল্পের জন্য build.gradle খুলুন এখানে চিত্র বর্ণনা লিখুন

  • বিল্ড.gradle এ দুটি কাজ লিখুন - মুছে ফেলুন এবং তৈরি করুন এবং নিয়ম যুক্ত করুন জার.ডেপেন্ডসস (মুছে ফেলুন, তৈরি করুন) এখানে চিত্র বর্ণনা লিখুন

উপরের কোড:

task deleteJar(type: Delete) {
    delete 'libs/jars/logmanagementlib.jar'
}           

task createJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('libs/jars/')
    include('classes.jar')
    rename('classes.jar', 'logmanagementlib.jar')
}

createJar.dependsOn(deleteJar, build)
  • ডান দিক থেকে গ্রেডাল প্যানেল প্রসারিত করুন এবং আপনার লাইব্রেরি-> অন্যদের অধীনে সমস্ত কার্য খুলুন। আপনি সেখানে দুটি নতুন কাজ দেখতে পাবেন - ক্রিয়েজার এবং ডিলেটজার ar এখানে চিত্র বর্ণনা লিখুন

  • ক্রিয়েজারে ডাবল ক্লিক করুন এখানে চিত্র বর্ণনা লিখুন

  • টাস্কটি সফলভাবে চালানোর পরে, ক্রিয়েজার জাস্ট টাস্কে উল্লিখিত পাথ থেকে আপনার উত্পন্ন জারটি গ্রহণ করুন যেমন libs / xxxx.jar এখানে চিত্র বর্ণনা লিখুন

  • আপনার প্রয়োজনীয় প্রকল্পের লিব ফোল্ডারে সদ্য উত্পন্ন জারটি অনুলিপি করুন -> ডান ক্লিক করুন -> "লাইব্রেরি হিসাবে যুক্ত করুন" নির্বাচন করুন


4
কখনও কখনও মানুষ পড়ার চেয়ে দেখার দ্বারা বুঝতে পারে। এটি আপনি দেখতে একটি ভাল ইউএক্স ☺
অভিনব তায়াগি

4
ঠিক আছে, তাহলে আমার আপনাকে বলা উচিত যে আমি সম্পর্কে নিশ্চিত নই release। আমি পেয়েছি debugএবং default, কিন্তু কোনও releaseফোল্ডার নেই। আপনি প্লাগইনের কোন সংস্করণ ব্যবহার করছেন? আপনি কি জানেন যে এটি কোথাও নথিভুক্ত করা হয়েছে?
ক্যামেরন লোয়েল পামার

4
আমার releaseফোল্ডার নেই
কামরান বিগডেলি

4
কি কপি করার চেষ্টা করছেন ?? আমাদের কি এপিএইচ ফাইল যুক্ত ফোল্ডারগুলি লক্ষ্য করার কথা রয়েছে ?? আমি বলতে চাইছি ('বিল্ড / ইন্টারমিডিয়েটস / বান্ডেলস / ডিফল্ট') থেকে লাইনটিতে আপনার জন্য এই ডিরেক্টরিটি কী রয়েছে। নামের বান্ডিলগুলির সাথে আমার অ্যান্ড্রয়েড স্টুডিওতে কোনও ফোল্ডার নেই এবং আমি ক্রিয়েজার
টাস্কে কোনও উত্স পাচ্ছি না

12
অ্যান্ড্রয়েড স্টুডিও ৩.১.৩ এর জন্য ('বিল্ড / ইন্টারমিডিয়েটস / প্যাকেজড-ক্লাস / রিলিজ /') থেকে ('বিল্ড / ইন্টারমিডিয়েটস / বান্ডেলস / রিলিজ /') থেকে পরিবর্তন করুন এবং গ্রেড সংস্করণ 4.4
বৈশাখ

60

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

যে কোডটিও একটি জারে সংকলন করা দরকার সেগুলি নিন এবং এন্ড্রয়েড স্টুডিওতে এটি একটি পৃথক সরল জাভা মডিউলে স্থানান্তরিত করুন:

  1. ফাইল মেনু> নতুন মডিউল ... > জাভা লাইব্রেরি
  2. উইজার্ডটিতে লাইব্রেরি, জাভা প্যাকেজের নাম এবং শ্রেণীর নামগুলি সেট আপ করুন। (যদি আপনি এটি আপনার জন্য কোনও ক্লাস তৈরি করতে না চান তবে মডিউলটি তৈরি হয়ে গেলে আপনি কেবল এটি মুছতে পারেন)
  3. আপনার অ্যান্ড্রয়েড কোডে, নতুন মডিউলে একটি নির্ভরতা সেট আপ করুন যাতে এটি কোডটি আপনার নতুন লাইব্রেরিতে ব্যবহার করতে পারে:
  4. ফাইল > প্রকল্প গঠন > মডিউল > (আপনার অ্যান্ড্রয়েড মডিউল) > অধীনস্থ > + + > মডিউল নির্ভরতা । স্ক্রিনশটটি নীচে দেখুন: এখানে চিত্র বর্ণনা লিখুন
  5. যে সংলাপটি সামনে আসে তার তালিকা থেকে আপনার মডিউলটি চয়ন করুন: এখানে চিত্র বর্ণনা লিখুন

আশা করি আপনার প্রকল্পটি এখন সাধারণভাবে নির্মিত হবে। আপনি একটি বিল্ড করার পরে, আপনার জাভা লাইব্রেরির জন্য একটি জার ফাইলটি আপনার মডিউলের ডিরেক্টরিতে বিল্ড / libs ডিরেক্টরিতে স্থাপন করা হবে । আপনি যদি হাত দিয়ে জার ফাইলটি বানাতে চান তবে আপনি গ্রেডল উইন্ডো থেকে এর জার বিল্ড ফাইল টাস্কটি চালাতে পারেন : এখানে চিত্র বর্ণনা লিখুন


আপনাকে অনেক ধন্যবাদ! আপনার উত্তরটি সত্যিই সহায়ক ছিল, বেশিরভাগ শেষ স্ক্রিনশটে যা গ্রেডল কার্যগুলি দেখায়। আমি এটা জানতাম না। আমি আপনার পদক্ষেপগুলি অনুসরণ করতে পারি, তবে আমি এখনও org.apache.http.Header অনুপস্থিত। আমি কীভাবে এটিকে আমার লিবিতে আমদানি করতে পারি?
dum4ll3

আপনি যখন বলছেন যে আপনি এটি মিস করছেন তার অর্থ কী?
স্কট বার্তা

4
একই প্রকল্পের কাঠামো> নির্ভরতা প্রবাহের মধ্য দিয়ে যান তবে আপনার প্রকল্পের পরিবর্তে আপনার গ্রন্থাগার মডিউলটি চয়ন করুন এবং একইভাবে নির্ভরতা যুক্ত করুন। আমার উত্তরে আমি বলি যে এটি জার ফাইলটিকে মডিউল ডিরেক্টরিতে বিল্ড / লিবিস ডায়ারে রাখে।
স্কট বার্তা

4
আমি পেয়েছি: java.lang.NoClassDefFoundError: com.loopj.android.http.RequestParams। এটি আমার বাইরের গ্রন্থাগারটি আমি আমার সাথে সংকলন করছি।
dum4ll3

4
এটি কেবল জাভা গ্রন্থাগারের সাথে কাজ করে এবং অ্যান্ড্রয়েড লাইব্রেরিতে জার টাস্কটি বিদ্যমান নেই
cuasodayleo

27

অ্যান্ড্রয়েড স্টুডিও আইডিইতে, এর দ্বারা " চালিত যেকোনও বার " অ্যাক্সেস করুন :

CTRL+ CTRL+ gradle CreateFullJarRelease+ENTER

এর পরে আপনি আপনার প্রকল্পের এই ফোল্ডারে আপনার আর্টফ্যাক্টটি খুঁজে পাবেন
Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar


বা


গ্রেডলের ইতিমধ্যে ফোল্ডারের Taskনীচে গ্রেডল সাইড-মেনুতে এটির জন্য একটি রয়েছে other

গ্রেডেল টুলবার

তারপরে নীচে স্ক্রোল createFullJarReleaseকরুন এবং এটিতে ক্লিক করুন।

গ্রেডল টাস্ক

এর পরে আপনি আপনার প্রকল্পের এই ফোল্ডারে আপনার আর্টফ্যাক্টটি খুঁজে পাবেন

Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar


4
এই বিকল্পটি দেখতে পাচ্ছেন না। এটি কি সাম্প্রতিক স্টুডিও সংস্করণে যুক্ত করা হয়েছে?
ডিবিজমানিয়া

4
আমি তৈরি করি এবং যখন * .jar খুঁজে পাই তবে এর নাম: পূর্ণ.জার 30 মিনিট এটি সন্ধান করতে lol
nobjta_9x_tq

4
আমার ক্ষেত্রে, আমি এটি পেয়েছিbuild\intermediates\intermediate-jars\release
ইউস্রিল মৌলিদন রাজি

আমার একটা প্রশ্ন আছে. আমার ক্ষেত্রে এটি 3 জার ফাইল উত্পন্ন করে। classes.jar, full.jarএবং res.jar। আমি যখনই সব জার ফাইলগুলি ব্যবহার করতে চাই তখন আমদানি করা উচিত?
ইউস্রিল মৌলিদন রাজি

পুরো.জার ব্যবহার করুন
হারুন হাজেম

11

আপনার জাভা মডিউলের বিল্ড.gradle এ কেবল এটি যুক্ত করুন। এটি সংরক্ষণাগারে নির্ভরশীল গ্রন্থাগারগুলি অন্তর্ভুক্ত করবে।

mainClassName = "com.company.application.Main"

jar {
  manifest { 
    attributes "Main-Class": "$mainClassName"
  }  

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

এর ফলে [মডিউল_নাম] / বিল্ড / libs / [মডিউল_নাম] .jar ফাইলটি আসবে।


কিন্তু একটি। লাইব্রেরির একটি মেইন ক্লাস থাকবে? ওপি বলছে তারা একটি .jar ফাইল তৈরি করছে "যাতে আমি অন্য প্রকল্পগুলিতে ব্যবহার করতে পারি" (sic)। এটি লাইব্রেরির মতো শোনাচ্ছে।
স্টিভ হোয়াইট

কেবলমাত্র এই লোকটি বুঝতে পেরেছিল যে, কেবল জার তৈরির ফলে সমস্যা সমাধান হয় না। আমাদের যদি এটি চালানো দরকার what উপরের কোডটি "জার-ফাইলটি কার্যকর করতে পারে না:" কোনও প্রধান ম্যানিফেস্ট বৈশিষ্ট্য নয় "" ত্রুটি এড়িয়ে চলে।
মোবাইলএভেলজিস্ট

1

আপনি যখন নিজের অ্যাপ্লিকেশনটি সংকলন / চালাবেন তখন .jar ফাইলটি স্বয়ংক্রিয়ভাবে উত্পন্ন হবে।

আপনি root_folder / অ্যাপ / বিল্ড / ইন্টারমিডিয়েটস / বান্ডেল / ডিবাগ থেকে আপনার ক্লাস.জার ফাইলটি সন্ধান করতে পারেন

জার ফাইল অবস্থান


1
  1. অ্যান্ড্রয়েড স্টুডিওতে গ্রেডল ট্যাবে যান, তারপরে লাইব্রেরি প্রকল্পটি নির্বাচন করুন।

  2. তারপরে টাস্কগুলিতে যান

  3. তারপরে অন্য যান

  4. বান্ডেলরিলেসার উপর ডাবল ক্লিক করুন

আপনি নিজের .aarফাইলগুলি এর অধীনে খুঁজে পেতে পারেনyour_module/build/outputs/aar/your-release.aar

এখানে চিত্র


আমি কোথাও কোনও "গ্রেডল ট্যাব" দেখতে পাচ্ছি না। পরিশেষে আমি সহায়তা সন্ধানে "গ্রেডল" টাইপ করেছি এবং আপনার গ্রেডল ভিউয়ের মতো কিছু পেয়েছি। তবে ভিতরে থাকা তালিকাটি খুব আলাদা, আপনার চেয়ে ছোট। টাস্ক-> অন্যান্য এর অধীনে কোনও বান্ডিলিলিজার নেই। এখানে একটি "ক্রিয়েজার" রয়েছে, তবে আমি যখন এটি ক্লিক করি তখন আমি "টাস্ক 'ক্রিয়েট জার' পাই যা মূল প্রকল্পে পাওয়া যায় না ..." আমি আটকে আছি। এবং ... আমরা .আর ফাইলগুলি কেন চাই? ওপি একটি .jar ফাইল চেয়েছিল। এটি কি একই জিনিস>
স্টিভ হোয়াইট

তবে প্রশ্নটি কীভাবে করবেন .jarনা.aar
আলেক্সে টিমোশচেঙ্কো

0

আমি যেভাবে খুঁজে পেয়েছি তা হ'ল প্রকল্প সংকলক আউটপুট (প্রকল্পের কাঠামো> প্রকল্প)। তারপরে আপনি যে মডিউলটি কোনও জারে ঘুরে দেখতে চান তা জিপ দিয়ে সংকুচিত করুন এবং আউটপুটটির জিপ থেকে জারে পরিবর্তন করুন wish


0
task deleteJar(type: Delete) {
    delete 'libs/mylibrary.jar'
}           

task exportjar(type: Copy) {
    from('build/intermediates/compile_library_classes/release/')
    into('libs/')
    include('classes.jar')
    rename('classes.jar', 'mylibrary.jar')
}

exportjar.dependsOn(deleteJar, build)

0

যদি আপনি অ্যান্ড্রয়েডস্টুডিও থেকে গ্রেড টাস্ক চালান [আরও]

assembleRelease 
//or
bundleReleaseAar

বা টার্মিনাল মাধ্যমে

./gradlew <moduleName>:assembleRelease
//or
./gradlew <moduleName>:bundleReleaseAar

তারপর আপনি খুঁজে পেতে সক্ষম হবে .aar

<project_path>/build/outputs/aar/<module_name>.aar
//if you do not see it try to remove this folder and repeat the command

.aar(অ্যান্ড্রয়েড লাইব্রেরি) ফাইলটিতে .jar(জাভা লাইব্রেরি) ফাইল এবং অতিরিক্ত অ্যান্ড্রয়েড সংস্থান রয়েছে। .aarফাইল যে কেন আপনি প্রতিস্থাপন করতে পারেন Aar এক্সটেনশানের সঙ্গে একটি জিপ ফাইল .aarসঙ্গে .zipবা রান

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