با ارائه سیستم Gradle در Android Studio، پیشرفتهای زیادی در روش build پروژه ها بوجود آمده که تا حد زیادی در زمان مورد نیاز صرفه جویی میشود. از جمله این موارد میتوان به Build Flavor ها اشاره کرد که در آینده مطالبی در مورد آنها خواهم نوشت.

اما، موضوع این پست استفاده از کتابخانه های AAR است.

gradle

با توجه به محدودیتهای متعددی که در استفاده از منابع مرتبط با گوگل برای برنامه نویسان ایرانی وجود دارد (و خصوصا Android Studio)، یکی عادات برنامه نویسان ایرانی، استفاده از کتابخانه ها به صورت محلی یا local است.

به این صورت که معمولا هر برنامه نویس مجموعه ای از انواع فایلهای JAR و AAR را در اختیار دارد که با توجه به مصرف آنها در پروژه، به آن الحاق مینماید.

خصوصا با توجه به محدودیتهایی که گهگاه در دسترسی به Repository معروف JCenter بوجود می آید، بنده ترجیه میدهم به جای استفاده از انواع پراکسیها، از نسخه local فایلهای کتابخانه ای استفاده کنم.

در هر پروژه پیشفرض Android Studio، در فایل build.gradle پوشه libs به صورت یک شاخه کتابخانه معرفی شده است:

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

بنابر این برای اضافه کردن فایلهای Jar تنها کافی است که آنها را در این پوشه اضافه نمایید، یا اینکه به صورت جداگانه با دستور compile نام آنها را ذکر نمایید. مثلا در کدهای زیر، مورد اول از repository پیشفرض (maven یا JCenter) و دومی به صورت محلی، بارگذاری خواهند شد:

compile 'com.android.support:appcompat-v7:23.1.1'
compile files('libs/appcompat-v7.jar')

اما برای فایلهای AAR نمیتوان از این راه استفاده کرد.

فایلهای AAR حاوی مجموعه ای از منابع (Resources) به همراه فایل کامپایل شده Jar یا کد کتابخانه هستند. به همین دلیل معمولا کامپاننتهای بصری که از تصاویر یا هر نوع فایل جانبی استفاده میکنند، به صورت AAR توزیع میگردند.

قالب فایل AAR صرفا یک آرشیو Zip از موارد زیر است:

  • AndroidManifest.xml (الزامی)
  • classes.jar (الزامی)
  • res/ (الزامی)
  • R.txt (الزامی)
  • assets/ (اختیاری)
  • libs/*.jar (اختیاری)
  • jni/<abi>/*.so (اختیاری)
  • proguard.txt (اختیاری)
  • lint.jar (اختیاری)

واضح است که در صورت عدم استفاده از منابع، میتوان با استخراج classes.jar از آن به عنوان کتابخانه JAR استفاده نمود.

برای الحاق فایلهای AAR ابتدا باید یک Repository محلی ایجاد شود. برای اینکار از دستور flatDir جهت معرفی مسیر یک پوشه به عنوان Repo استفاده میکنیم:

repositories {
    flatDir {
        dirs 'libs'
    }
}

 

سپس فایل کتابخانه را با ذکر پسوند آن الحاق مینماییم:

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

 

البته به خاطر داشته باشید که برای استفاده از repo های آنلاین صرفا ذکر @aar در انتهای آدرس کتابخانه کفایت مینماید. به عنوان مثال:

compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
Print this pageEmail this to someoneShare on Google+Share on FacebookShare on LinkedInTweet about this on TwitterShare on RedditShare on TumblrShare on StumbleUponPin on Pinterest