নতুন গ্রেডল অ্যান্ড্রয়েড বিল্ড সিস্টেম ব্যবহার করে কীভাবে ম্যানুয়ালি বাহ্যিক আয়ার প্যাকেজ অন্তর্ভুক্ত করা যায়


406

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

তবে আমার সমস্যাটি হ'ল আমি আআর ফাইল প্যাকেজ হিসাবে সেই নির্ভরতাটি ম্যানুয়ালি সরবরাহ করতে চাই কেবল যদি আমি একটি জআর করতাম তবে আমি কীভাবে এটি সঠিকভাবে আমার প্রকল্পে অন্তর্ভুক্ত করব তা অনুভব করতে পারি না। আমি সংকলন কনফিগারেশন ব্যবহার করার চেষ্টা করেছি কিন্তু এটি কাজ করে বলে মনে হচ্ছে না। সংকলনের সময় আমি প্রতীক খুঁজে পাচ্ছি না যা আমাকে বলে যে আর প্যাকেজ থেকে ক্লাস.জার ক্লাসপথে অন্তর্ভুক্ত হচ্ছে না।

আআর প্যাকেজটিকে ফাইল হিসাবে ম্যানুয়ালি অন্তর্ভুক্ত করার জন্য সিনট্যাক্সটির কথা কি কেউ জানেন?

build.gradle

buildscript {

 repositories {
     mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:0.4'
  }
}
apply plugin: 'android'

repositories {
   mavenCentral()
}
dependencies {
    compile files('libs/actionbarsherlock.aar')
}

android {
    compileSdkVersion 15
    buildToolsVersion "17.0"
}

সম্পাদনা: সুতরাং উত্তরটি হ'ল এটি বর্তমানে সমর্থিত নয়, আপনি যদি এটি ট্র্যাক করতে চান তবে এখানে সমস্যা

সম্পাদনা: বর্তমানে এটি সরাসরি সমর্থিত না হওয়ায় সেরা বিকল্পটি @ রানওয়াকলাকের প্রস্তাবিত সমাধান বলে মনে হচ্ছে

সম্পাদনা: @ বিপুলশাহ প্রস্তাবিত বাক্য গঠন ব্যবহার করে আরও সহজ


বিপুল শাহের প্রতিক্রিয়া বিবেচনা করুন: অবশেষে এটি অ্যান্ড্রয়েড স্টুডিও ০.০.৮ হিসাবে স্থানীয় মভেন রিপোজিটরি ছাড়াই আমার পক্ষে কাজ করেছিল।
shkschneider

আমার প্রশ্ন কটাক্ষপাত এবং এখানে উত্তর stackoverflow.com/a/31662782/746347
mixel

: আপনি Gradle 3.0.0 বা উচ্চতর ব্যবহার করে থাকেন, এই সহজ Gradle সেটআপ আমার জন্য কাজ stackoverflow.com/questions/29081429/...
user1506104

উত্তর:


670

এটি কাজ করার জন্য দয়া করে নীচের পদক্ষেপগুলি অনুসরণ করুন (আমি এটি অ্যান্ড্রয়েড স্টুডিও ২.২ পর্যন্ত পরীক্ষা করেছি)

আসুন আপনাকে বলি যে আপনি আর ফাইলটি লিবস ফোল্ডারে রেখেছেন। (ধরুন ফাইলের নামটি cards.aar)

তারপরে অ্যাপটিতে build.gradleনিম্নলিখিতগুলি উল্লেখ করুন এবং গ্রেডল ফাইলগুলির সাথে সিঙ্ক প্রকল্পটি ক্লিক করুন। প্রকল্প স্তরের বিল্ড.gradle খুলুন এবং flatDir{dirs 'libs'}নীচের মতো করে যুক্ত করুন

allprojects {
   repositories {
      jcenter()
      flatDir {
        dirs 'libs'
      }
   }
}

এবং এখন অ্যাপ্লিকেশন স্তরের build.grdle ফাইলটি খুলুন এবং .aarফাইল যুক্ত করুন

    dependencies {
       compile(name:'cards', ext:'aar')
}

সবকিছু ঠিকঠাক থাকলে আপনি দেখতে পাবেন লাইব্রেরি এন্ট্রিটি বিল্ড -> বিস্ফোরিত-আরে তৈরি করা হয়েছে

এছাড়াও মনে রাখবেন যে আপনি যদি অন্য প্রকল্প থেকে একটি .আর ফাইল আমদানি করে থাকেন যা নির্ভরতা রাখে তবে আপনার এগুলিও আপনার বিল্ডড্র্যাডলে অন্তর্ভুক্ত করতে হবে।


5
@ বিপুলশাহ লিবস ডিরেক্টরিটি কোথায় অবস্থিত?
স্টুস্ট্রিলিং

2
সম্ভবত এটি অ্যাপল মডিউল 'বিল্ড.gradle' এ পরিবর্তনগুলি রাখার পরামর্শ দেওয়া উচিত এবং শীর্ষস্থানীয় ফোল্ডার 'বিল্ড.gradle' তে নয়।
loloof64

3
উপরে আমার প্রশ্নের উত্তর খুঁজে পেয়েছি: compileনির্ভরতার পরিবর্তে দুটি নির্ভরতা যুক্ত করুন debugCompile(name:'cards-debug', ext:'aar')এবংreleaseCompile(name:'cards-release', ext:'aar')
ইফতাঃ

2
নমুনা কোড নিয়ে বিভ্রান্ত হবেন না। প্রথম ব্লকটি allprojects {...}"প্রকল্প" স্তরের গ্রেডল ফাইলগুলিতে যায় এবং দ্বিতীয় অংশটি dependencies {...}"অ্যাপ" স্তরের গ্রেডল ফাইলটিতে যেতে হবে।
কিরিল কারমাজিন

8
দয়া করে আপনার উত্তরটি আপডেট করুন: সতর্কতা: কনফিগারেশন 'সংকলন' অপ্রচলিত এবং 'বাস্তবায়ন' এবং 'এপিআই' দিয়ে প্রতিস্থাপন করা হয়েছে। এটি 2018 এর শেষে মুছে ফেলা হবে more আরও তথ্যের জন্য দেখুন: d.android.com/r/tools/update-d dependency
-configurations.html

248
  1. আপনার প্রকল্পে ডান ক্লিক করুন এবং "ওপেন মডিউল সেটিংস" নির্বাচন করুন ।

মডিউল সেটিংস খুলুন

  1. ক্লিক করুন , "+" একটি নতুন মডিউল যোগ করার জন্য উইন্ডোর উপরে বাম কোণায় বোতাম।

নতুন মডিউল যুক্ত করুন

  1. "আমদানি। জার বা .আর প্যাকেজ" নির্বাচন করুন এবং "পরবর্তী" বোতামটি ক্লিক করুন।

আমদানি AAR

  1. "ফাইলের নাম" ক্ষেত্রের পাশে এলিপিসিস বোতাম "..." ব্যবহার করে আরএআর ফাইলটি সন্ধান করুন ।

এআর ফাইলটি সন্ধান করুন

  1. অ্যাপ্লিকেশনটির মডিউলটি নির্বাচিত রাখুন এবং নির্ভরতা হিসাবে নতুন মডিউল যুক্ত করতে নির্ভরতা প্যানে ক্লিক করুন ।

নির্ভরতা ফলক

  1. নির্ভরতা পর্দার "+" বোতামটি ব্যবহার করুন এবং "মডিউল নির্ভরতা" নির্বাচন করুন ।

মডিউল নির্ভরতা যুক্ত করুন

  1. মডিউলটি নির্বাচন করুন এবং "ওকে" ক্লিক করুন ।

মডিউল চয়ন করুন


4
সেরা উত্তর, এর পরে>> Alt+Bপরিষ্কার এবং পুনর্নির্মাণ প্রকল্পটি মনে রাখবেন। অ্যান্ড্রয়েড স্টুডিও কেন আপনি বেদনাদায়ক!
নেটবিনস

@ অলিভার আপনি দুর্দান্ত!
অঙ্কিত পূর্ব

তুমিই শ্রেষ্ঠ!
কোডজম্বি

2
আপনি যখনই কেবল aarআপনার প্রকল্পে কিছুটা বিদ্যুৎ যোগ করতে চান প্রতিবার নতুন মডিউল তৈরি করা ভাল ধারণা নয়
কিরিল কারমাজিন

তুমি দারুণ আমার বন্ধু। !! এই চিয়ার্স।
তীমথিয় মাচারিয়া

111

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

    repositories {
      mavenCentral()
      flatDir {
        dirs 'libs'
      }
    }

তারপরে নির্ভরতা বিভাগে গ্রন্থাগারটি উল্লেখ করুন:

  dependencies {
        implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

আপনি আরও তথ্যের জন্য Min'an ব্লগ পোস্ট চেক আউট করতে পারেন ।


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

@ অজপোল্ট সম্ভবত পরিবর্তে (মালিকানা বিভাগের জন্য) একটি রেপো সার্ভার সেট আপ করার জন্য সুপারিশ করা হবে যাতে আপনাকে এটি ডেভ মেশিনে বা আপনার প্রকল্পের লিব ফোল্ডারে রাখতে না হয়। আপনার যদি কেবলমাত্র একটি নির্ভরতা থাকে তবে এটি কোনও মভেন স্ট্রাকচার্ড গুগল কোড ভাণ্ডারে ফেলে দিন (টেম্পো রেপো হিসাবে)
লো-টান

4
এই উত্তরের লক্ষণীয় সবচেয়ে গুরুত্বপূর্ণ বিষয়টি নির্ভরতা শেষে '@আর' উল্লেখ করা।
অথর্ব

: আমি এই সর্বশেষ gradle প্লাগইন আর কাজ করবে না অনুমান করা stackoverflow.com/questions/60878599/...
ডেভিড

এটি হ'ল একমাত্র এবং একমাত্র উত্তর যার মধ্যে সহজতম ফর্মটি অন্তর্ভুক্ত রয়েছে including implementationইত্যাদি সহ সমস্ত আধুনিক বাক্য গঠন, এটি সমাধানটির অনুলিপি-পেস্ট করুন। আগত প্রচুর নতুন আপোগোড আসন্ন কারণ অ্যান্ড্রয়েড বিল্ড গ্র্যাডল প্লাগইন 4.0.০.০ এখন ভাঙা .আর পাথগুলিকে উপেক্ষা করার পরিবর্তে একটি ত্রুটি ছুড়ে ফেলেছে
প্যাট্রিক

51

নীচের পদ্ধতিটি সর্বশেষতম অ্যান্ড্রয়েড স্টুডিও (> v0.8.x) এর সাথে কাজ করে:

  • aarঅ্যাপ্লিকেশন মডিউলটির libsফোল্ডারের অধীনে ফাইলটি সংরক্ষণ করুন (যেমন <project>/<app>/libs/myaar.aar:)

  • আপনার "অ্যাপ্লিকেশন" মডিউল ফোল্ডারের (আপনার প্রকল্পের মূল বিল্ড.gradle নয়) এর build.gradle করতে নীচে যুক্ত করুন। সংকলন লাইনে নামটি নোট করুন, এটি মায়ার @ আআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআড়াল নন

    dependencies {
        compile 'package.name.of.your.aar:myaar@aar'
    }
    
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
  • ক্লিক Tools -> Android -> Sync Project with Gradle Files


3
এএস 1.0-এ পুরোপুরি কাজ করে
পাবলো জনসন

1
যদি কারও এটির প্রয়োজন হয় তবে গ্রেড ঠিকঠাক কাজ করে তবে আপনি এখনও ক্লাস দেখতে পাচ্ছেন না, অ্যান্ড্রয়েড স্টুডিও পুনরায় চালু করুন ...
htafoya

1
এই দ্রষ্টব্যটি AS2.2 এ দুর্দান্ত কাজ করে - গ্রেডটি আআআআআর ফাইলগুলির বাক্য গঠনতে আশ্চর্যরূপে পিক।
জিম আন্দ্রেয়াস

দয়া করে আপডেট করুন বা মুছুন, সংকলন হ্রাস করা হয়েছে এবং এই সমস্যাটিও রয়েছে: stackoverflow.com/questions/60878599/…
ডেভিড

48

সামনে (ডিফল্ট)

implementation fileTree(include: ['*.jar'], dir: 'libs')

শুধু যোগ '*.aar'মধ্যে includeঅ্যারে।

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

এটি অ্যান্ড্রয়েড স্টুডিও 3.x এ ভাল কাজ করে।

আপনি যদি কিছু লাইব্রেরী উপেক্ষা করতে চান? এভাবে কর

implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')

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

1
সূক্ষ্মভাবে কাজ করা, পাঠাগারটি সহজ হলে এই উপায় go তবে এগুলি এখানে একটি সমস্যা: আপনার আরআর ফাইলটিতে আমদানি করা সমস্ত লাইব্রেরি এটির কাজ করতে আপনাকে আমদানি করতে হবে। আরআর ফাইল থেকে আমদানি এই পদ্ধতিটি ব্যবহার করে প্রচার করা হয় না।
টব্লিউগ

বা, এমনকি সহজ:implementation fileTree(include: ['*.?ar'], dir: 'libs')
ফ্রেডের্ব্লিউমলে

@ ফ্রাইডার্ব্লিউমলে আরও সহজ বলার চেয়ে আমি সংক্ষিপ্ত এবং একই সাথে তাত্ত্বিকভাবে বলব না।
ডেভিড

21

আমি সবেমাত্র সফল!

  1. মাইলিব -১.০.এআর ফাইলটি লিবস / ফোল্ডারে কপি করুন

  2. বিল্ড . gradle এর নীচে এই লাইনগুলি যুক্ত করুন (অ্যাপ্লিকেশন হওয়া উচিত, প্রকল্প নয়):

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:0.1@aar'
    }
  3. এ পর্যন্ত সব ঠিকই. এখানে সবচেয়ে গুরুত্বপূর্ণ পয়েন্ট আসে:

অফলাইন মোড সক্ষম না করা থাকলে গ্রেডলকে নির্ভরতার জন্য নেটওয়ার্ক অ্যাক্সেস করা দরকার।

আপনি প্রকল্প কাঠামো / গ্রেডলে চেকবক্সের মাধ্যমে অফলাইন কাজ সক্রিয় করেছেন তা নিশ্চিত করুন

- বা -

প্রক্সি সেটিংস কনফিগার করুননেটওয়ার্ক অ্যাক্সেস ।

প্রক্সি সেটিংস কনফিগার করতে আপনাকে নীচের মত করে প্রকল্পের গ্রেড.প্রোপার্টি ফাইলটি, HTTP এবং https আলাদাভাবে কনফিগার করতে হবে:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>

systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>

আশা করি এটি কাজ করে।


দয়া করে আপডেট করুন বা মুছুন, সংকলন হ্রাস করা হয়েছে এবং এই সমস্যাটিও রয়েছে: stackoverflow.com/questions/60878599/…
ডেভিড

20

বর্তমানে একটি স্থানীয় .aar ফাইল উল্লেখ করা সমর্থনযোগ্য নয় (জ্যাভিয়ার ডুক্রোচেটের দ্বারা নিশ্চিত হিসাবে)

পরিবর্তে আপনি যা করতে পারেন তা একটি স্থানীয় মাভেন সংগ্রহশালা সেট করা হয়েছে (এটি শোনাবার চেয়ে অনেক বেশি সহজ) এবং সেখান থেকে .aar উল্লেখ করুন।

এটি এখানে কীভাবে কাজ করা যায় সে সম্পর্কে আমি একটি ব্লগপোস্ট লিখেছি:

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds


আমি যখন এটি আর্টিকটাক একটি স্ন্যাপশট হয় তখন এটি কাজ করতে পরিচালিত করি না কেন কোনও ধারণা কেন?
tbruyelle

আপনি কি এই গ্রহনটি কেবলমাত্র অ্যাল্রয়েড, বা অ্যান্ড্রয়েড স্টুডিওর সাহায্যে পেয়েছেন? গ্রহণের সাথে, "গ্রেডেল এক্সিলিপস" ক্লাসপথে আর ফাইল যুক্ত করে, তবে গ্রহপীটি এর মধ্যে শ্রেণিগুলি সনাক্ত করে না।
andrej_k

এই প্রশ্নের চেক করুন stackoverflow.com/questions/20911665/... যদি টিউটোরিয়াল আপনার স্থানীয় .aar ফাইলে নিম্নলিখিত পরে (Gradle 1.9 বা উপরে) পাওয়া যায় নি
Maragues

দয়া করে আপডেট বা মুছুন, এই উত্তরটি অপ্রচলিত।
ডেভিড

18

আপনি aarকোডের কয়েকটি লাইন দিয়ে একাধিক নির্ভরতা যুক্ত করতে পারেন ।

স্থানীয় flatDirসংগ্রহস্থল যুক্ত করুন:

repositories {
    flatDir {
        dirs 'libs'
    }
} 

প্রত্যেক যোগ করুন aarমধ্যে libsথেকে ডিরেক্টরির compileনির্ভরতা কনফিগারেশন:

fileTree(dir: 'libs', include: '**/*.aar')
        .each { File file ->
    dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}

এটি কাজ করেছে, তবে কীভাবে একটি চেক লাগানো যায়, যদি নির্ভরতা ইতিমধ্যে একটি ম্যাভেন নির্ভরতা হিসাবে যুক্ত করা হয় তবে আমি চাই না যে আর ফাইলটি যুক্ত করা দরকার, পিএস: আমি এটি একটি প্লাগইন লিখতে ব্যবহার করছি যা অ্যান্ড্রয়েড প্রকল্পে স্বয়ংক্রিয়ভাবে আমার আড় যোগ করে write এবং build.gradle এর মধ্যে নির্ভরতা যুক্ত করে
আদি

@ আডি আপনার যদি ইতিমধ্যে মাভেন নির্ভরতা থাকে তবে ফর্মুলার সাথে সম্পর্কিত আড়াল রাখবেন না libs
14-18 এ মিশ্রিত করুন

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

আমার এখনই উত্তর নেই। আমি মনে করি পৃথক প্রশ্ন তৈরি করা ভাল।
মিশ্রিত করুন

15

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


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

13

এখানে 2 টি উপায় রয়েছে:

প্রথম উপায়

  1. আপনার অ্যান্ড্রয়েড স্টুডিও খুলুন এবং এর মাধ্যমে Create New Moduleউইন্ডোতে নেভিগেট করুনFile -> New -> New Module

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

  1. Import .JAR/.AAR Packageআইটেমটি নির্বাচন করুন এবং Nextবোতামটি ক্লিক করুন

  2. build.gradleআপনার appমডিউলের অন্তর্ভুক্ত ফাইলটিতে নির্ভরতা যুক্ত করুন ।

    dependencies {
        ...
        implementation project(path: ':your aar lib name')
    }

এখানেই শেষ.

দ্বিতীয় উপায়

  1. libsডিরেক্টরিতে একটি ফোল্ডার তৈরি করুন aars

  2. আপনার আর লিবকে আর্স ফোল্ডারে রাখুন।

  3. কোড স্নিপেট যোগ করুন

repositories {
    flatDir {
        dirs 'libs/aars'
    }
}

আপনার build.gradleফাইল অ্যাপ্লিকেশন মডিউল অন্তর্গত।

  1. build.gradleআপনার appমডিউলের অন্তর্ভুক্ত ফাইলটিতে নির্ভরতা যুক্ত করুন ।
dependencies {
    ...
    implementation (name:'your aar lib name', ext:'aar')
}

এখানেই শেষ.

আপনি যদি চীনা পড়তে পারেন তবে আপনি 什么 是 আরএআর 以及 如何 如何 在 অ্যান্ড্রয়েড 在 中 blog ব্লগটি চেক করতে পারেন


এই উত্তরটি আমার পক্ষে সত্যিই সহায়ক ছিল
Csabi

যখন প্রথম উপায়ে অনুসরণ করা হয়, মূল প্রকল্পে আর ফাইলের অভ্যন্তরীণ ক্লাসগুলি সনাক্ত করা যায় না, আমাদের কী কোনও অতিরিক্ত কনফিগার যুক্ত করতে হবে?
কিরণ

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

12

অ্যান্ড্রয়েড স্টুডিও 3.4 এবং গ্রেডল 5 এর সাহায্যে আপনি এটিকে সহজেই এটি করতে পারেন

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}

1
এটি সেরা উত্তর। নির্ভরতা স্পষ্ট এবং খুব সহজ।
নিকমুন

1
এটি সেরা উত্তর হতে সম্মত। তাত্ক্ষণিকভাবে কাজ করা, একটি প্রতিক্রিয়া নেটিভ লাইব্রেরিতে .aar নির্ভরতা যুক্ত করার জন্য উপযুক্ত ছিল।
জোশ বাকের 23

1
এই gradle প্লাগইন 4 দিয়ে শুরু একটি ত্রুটি ছোঁড়া stackoverflow.com/questions/60878599/...
ডেভিড

@ ডেভিড এই প্রতিবেদনের জন্য ধন্যবাদ, আমি এটিকে যথাযথভাবে পরীক্ষা করার চেষ্টা করব।
m0skit0

10

অ্যান্ড্রয়েড স্টুডিও আপডেট করুন 3.4

  1. ফাইল -> প্রকল্পের কাঠামোতে যান

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

  1. মডিউল এবং এ ক্লিক করুন + +

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

  1. আমদানি .আর প্যাকেজ নির্বাচন করুন

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

  1. .আর রুটটি সন্ধান করুন

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

  1. সমাপ্ত এবং প্রয়োগ করুন , তারপরে প্যাকেজ যুক্ত হয়েছে কিনা তা যাচাই করুন

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

  1. এখন অ্যাপ্লিকেশন মডিউলে, + এবং মডিউল নির্ভরতাতে ক্লিক করুন

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

  1. লাইব্রেরির প্যাকেজটি পরীক্ষা করুন এবং ঠিক আছে

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

  1. যুক্ত নির্ভরতা যাচাই করুন

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

  1. এবং প্রকল্প কাঠামো এর মত

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


1
এটি 17 তম উত্তর যা আমি পড়েছি শেষ পর্যন্ত নির্ভরতা যুক্ত করেছে ..
এহ

6

আমারও এই সমস্যা ছিল এই ইস্যুটির প্রতিবেদন: https://code.google.com/p/android/issues/detail?id=55863 মনে হয় যে .AAR ফাইলটি সরাসরি উল্লেখ করা সমর্থিত নয়।

সম্ভবত এখন বিকল্প হ'ল আপনার প্রকল্পের অভিভাবক ডিরেক্টরি এবং সেই অনুযায়ী রেফারেন্সের অধীনে অ্যাকশনবার্লক গ্রন্থাগারটিকে গ্রেডল গ্রন্থাগার হিসাবে সংজ্ঞায়িত করা।

সিনট্যাক্স এখানে সংজ্ঞায়িত করা হয় http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library


সমস্যাটির রেফারেন্সের জন্য আপনাকে ধন্যবাদ। হ্যাঁ গ্র্যাডল অ্যান্ড্রয়েড লাইব্রেরি ব্যবহার করে কীভাবে এই কাজটি করা যায় সে সম্পর্কে আমি সচেতন তবে এই প্রকল্পটি আমি যে প্রকল্পে কাজ করছি তার পক্ষে সত্যিই অনুকূল নয় তবে থেক্স!
মিগুয়েল লেভিগেন

3

আমি অ্যান্ড্রয়েড ইস্যু ট্র্যাকারে এই কাজটি খুঁজে পেয়েছি: https://code.google.com/p/android/issues/detail?id=55863#c21

কৌতুকটি (কোনও স্থির নয়) হ'ল আপনার .aar ফাইলগুলিকে একটি সাবপ্রজেক্টে বিচ্ছিন্ন করা এবং আপনার লিবগুলি শিল্পকর্ম হিসাবে যুক্ত করা:

configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))

আরও তথ্য: হ্যান্ডলিং-ট্রান্সজিটিভ-নির্ভরতা-স্থানীয়-শিল্পকর্ম-জার-এবং-আয়ারের জন্য


এটি ঠিক, এবং এখানে উদাহরণটি রয়েছে: github.com/textilio/notes/commit/… এ , compile project(':mobile')Android / অ্যাপ / বিল্ড.gradle এ, configurations.maybeCreate("default")অ্যান্ড্রয়েড / মোবাইল / বিল্ড.gradle এ, include ':mobile'অ্যান্ড্রয়েড / সেটিংস. gradle এ
লি ঝেং

3

আমার ক্ষেত্রে আমার লাইব্রেরিতে আমার কিছু অবনতি রয়েছে এবং আমি যখন aarএটি থেকে একটি তৈরি করি তখন আমি ব্যর্থ হয়েছি, মিসড ডিপোরিটির কারণে, সুতরাং আমার সমাধানটি হ'ল আমার লাইব থেকে সমস্ত হতাশাকে একটি arrফাইল যুক্ত করা।

সুতরাং আমার প্রকল্প স্তরটি build.gradleদেখতে এমন:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
        //add it to be able to add depency to aar-files from libs folder in build.gradle(yoursAppModule)
        flatDir {
            dirs 'libs'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(modile app) তাই:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.sampleapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //your project depencies
    ...
    //add lib via aar-depency
    compile(name: 'aarLibFileNameHere', ext: 'aar')
    //add all its internal depencies, as arr don't have it
    ...
}

এবং গ্রন্থাগার build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //here goes library projects dependencies, which you must include
    //in yours build.gradle(modile app) too
    ...
}

3

আমি এখানে সমস্ত সমাধান চেষ্টা করেছিলাম কিন্তু কেউই কাজ করছে না, তখন আমি বুঝতে পারি যে আমি একটি ভুল করেছি, আমি .aarভুল ফোল্ডারে রেখেছি , আপনি নীচের মতো দেখতে পাচ্ছেন, আমি ভেবেছিলাম আমার রুট ফোল্ডারটি রাখা উচিত, তাই আমি libsসেখানে একটি ফোল্ডার তৈরি করেছি (ছবিতে 1 ) তবে অ্যাপ্লিকেশন ফোল্ডারের ভিতরে ইতিমধ্যে একটি রয়েছে libs, আপনার দ্বিতীয় হওয়া উচিত libs, আশা করি যাদের এই সমস্যাটি আমার মত একই সমস্যা রয়েছে:

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


3

কোনও অ্যাপ্লিকেশনটিতে এআর ফাইল আমদানির মানক উপায় দেওয়া হয়েছে https://developer.android.com/studio/projects/android-library.html#AddD

ফাইল> নতুন> নতুন মডিউল ক্লিক করুন। আমদানি .JAR / .AAR প্যাকেজ ক্লিক করুন তারপরে Next ক্লিক করুন। সংকলিত AAR বা JAR ফাইলের অবস্থান প্রবেশ করুন তারপরে সমাপ্তি ক্লিক করুন click

পরবর্তী পদক্ষেপের জন্য দয়া করে উপরের লিঙ্কটি উল্লেখ করুন।


2

উত্তরটি সহজ করার জন্য

.Aar ফাইলটি যদি স্থানীয়ভাবে উপস্থিত থাকে তবে
compile project(':project_directory')আপনার প্রকল্পের বিল্ড.gradle এর নির্ভরতা অন্তর্ভুক্ত করুন।

.Aar ফাইলটি যদি রিমোটে উপস্থিত থাকে তবে compile 'com.*********.sdk:project_directory:0.0.1@aar'আপনার প্রকল্পের বিল্ড.gradle এর নির্ভরতা অন্তর্ভুক্ত করুন।


0

আমার ক্ষেত্রে কেবল তখনই কাজ করুন যখন আমি সংকলনের জন্য "প্রকল্প" যুক্ত করব:

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}


dependencies {
   compile project('com.x.x:x:1.0.0')
}

0

আপনি এই জাতীয় কিছু করতে পারেন:

  1. আপনার স্থানীয় লাইব্রেরিগুলিকে (এক্সটেনশন সহ: .jar, .aar, ...) 'libs' ফোল্ডারে রাখুন (বা অন্য আপনি চাইলে)।

  2. বিল্ড.gradle (অ্যাপ্লিকেশন স্তর) এ, এই লাইনটিকে নির্ভরতার মধ্যে যুক্ত করুন

    বাস্তবায়ন ফাইলত্রী (অন্তর্ভুক্ত: ['* .jar', '* .আর'], দির: 'লিবস')

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