สร้างไฟล์ aar ใน Android Studio


173

ฉันต้องการสร้างไฟล์ aar สำหรับห้องสมุดของฉันใน Android Studio ฉันจะใช้ตัวเลือก jar แต่ห้องสมุดของฉันมีทรัพยากร

มีความคิดวิธีสร้างไฟล์ aar จากห้องสมุดบ้างไหม?

คำตอบ:


225

หากห้องสมุดของคุณตั้งค่าเป็นห้องสมุด Android (เช่นใช้apply plugin: 'com.android.library'คำสั่งในไฟล์ build.gradle) มันจะส่งออก. aar เมื่อสร้างขึ้น มันจะปรากฏขึ้นในไดเรกทอรีการสร้าง / เอาท์พุท / aar /ในไดเรกทอรีของโมดูลของคุณ

คุณสามารถเลือกประเภท "ห้องสมุด Android" ในไฟล์> โมดูลใหม่เพื่อสร้างห้องสมุด Android ใหม่


3
การกำหนดเวอร์ชันเป็นสิ่งภายนอกสำหรับ AAR จริงๆ โดยทั่วไปคุณจะตั้งค่าไฟล์ Maven pom ที่มีข้อมูลรุ่น
Scott Barta

1
ฉันมีไฟล์ aar ในโฟลเดอร์ libs ของไลบรารีดังนั้นจึงไม่รวมอยู่ในบิลด์ / เอาท์พุต / aar / โดยตรง
Ganesh Jogam

4
ไฟล์ aar ปรากฏใน app / build / outputs / aar / และไม่อยู่ในโฟลเดอร์ / build / ในระดับโปรเจ็กต์! ในกรณีที่คุณไม่พบมัน ...
peresis ผู้ใช้

29
โปรดทราบว่าในการสร้างของaarฉันฉันต้องทำBuild > Rebuild Projectใน Android Studio เพียงแค่เรียกใช้ดีบักหรือสร้าง APK ไม่ได้สร้างaarสำหรับฉัน
Adam Johns

8
@AdamJohns วิธีที่เร็วกว่าอยู่./gradlew moduleName:assembleReleaseในแท็บเทอร์มินัล
Sameer J

159

ดึงไฟล์. aar ที่ส่งออกจากบิลด์โลคัล

หากคุณมีโมดูลที่กำหนดเป็นโครงการห้องสมุด android คุณจะได้รับไฟล์. aar สำหรับการสร้างรสชาติทั้งหมด (ดีบั๊กและปล่อยตามค่าเริ่มต้น) ในbuild/outputs/aar/ไดเรกทอรีของโครงการนั้น

your-library-project
    |- build
        |- outputs
            |- aar
                |- appframework-debug.aar
                 - appframework-release.aar

หากไฟล์เหล่านี้ไม่มีอยู่ให้เริ่ม build ด้วย

gradlew assemble

สำหรับผู้ใช้ macOS

./gradlew assemble

รายละเอียดโครงการห้องสมุด

โครงการห้องสมุดมีไฟล์ที่มีbuild.gradle apply plugin: com.android.libraryสำหรับการอ้างอิงของไลบรารีนี้ที่รวมเป็น.aarไฟล์คุณจะต้องกำหนดคุณสมบัติบางอย่างเช่นแพ็คเกจและรุ่น

build.gradleไฟล์ตัวอย่างสำหรับไลบรารี (ตัวอย่างนี้รวมถึง obfuscation ในรีลีส):

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "0.1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

อ้างอิงไฟล์. aar ในโครงการของคุณ

ในโครงการแอพของคุณคุณสามารถวาง.aarไฟล์นี้ในlibsโฟลเดอร์และอัปเดตbuild.gradleไฟล์เพื่ออ้างอิงไลบรารีนี้โดยใช้ตัวอย่างด้านล่าง:

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.0"

    defaultConfig {

        minSdkVersion 14
        targetSdkVersion 20
        versionCode 4
        versionName "0.4.0"

        applicationId "yourdomain.yourpackage"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
        }
    }
}

dependencies {
    compile 'be.hcpl.android.appframework:appframework:0.1.0@aar'
}

ตัวเลือกทางเลือกสำหรับการอ้างอิงไฟล์อ้างอิงในเครื่องในระดับที่สามารถพบได้ที่: http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project

การแบ่งปันการพึ่งพาโดยใช้ maven

หากคุณต้องการแชร์.aarไฟล์เหล่านี้ภายในองค์กรของคุณลองใช้ maven สามารถเขียนบทความเกี่ยวกับหัวข้อนี้ได้ที่: https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive- ห้องสมุด AAR ข้าม

เกี่ยวกับรูปแบบไฟล์. aar

ไฟล์ aar เป็นเพียง.zipส่วนขยายอื่นและเนื้อหาที่เฉพาะเจาะจง สำหรับรายละเอียดการตรวจสอบการเชื่อมโยงนี้เกี่ยวกับรูปแบบ AAR


11
คำตอบที่ยอดเยี่ยมและมีรายละเอียด +1 สำหรับgradlew assemble- นั่นช่วยแก้ไขปัญหาที่ฉันมี
Farbod Salamat-Zadeh

@hcpl วิธีแปลงโครงการ android ของฉันเป็นไฟล์. aar
Ana

1
@NaveedAhmad คุณลอง. /gradlew
hcpl

@NaveedAhmad ดังนั้นคุณอาจกำลังเรียกใช้งานจากตำแหน่งที่ไม่ถูกต้องหรือการกำหนดระดับเสียงของคุณแตกต่างกัน คุณอาจจะลอง "ค้นหา gradlew" แต่จริงๆถ้าคุณกำลังมีการค้นพบปัญหาและดำเนินการ gradlew แล้วคำตอบสั้น ๆ นี้จะไม่ช่วยให้คุณ
hcpl

สำหรับลูกหลาน: gradlewเป็นสคริปต์ในส่วนไดเรกทอรีระดับบนสุดของโครงการ
CodeClown42

11

เช่นเดียวกับผู้ใช้ hcpl กล่าว แต่ถ้าคุณไม่ต้องการกังวลเกี่ยวกับเวอร์ชันของไลบรารี่คุณสามารถทำได้:

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

เป็นประเภทที่น่ารำคาญที่ต้องอัปเดตเวอร์ชันทุกครั้ง นอกจากนี้ยังทำให้ไม่ต้องกังวลเกี่ยวกับพื้นที่ชื่อได้ง่ายขึ้นด้วยวิธีนี้


5

หลังจากทำตามขั้นตอนแรกและขั้นตอนที่สองที่กล่าวถึงในคำตอบของ hcpl ในชุดข้อความเดียวกันเราได้เพิ่ม'* .aar'], dir: 'libs'ในโครงการ android-app ของเราบนพื้นฐานของการไล่ระดับ / แอพ / ไฟล์ build.gradle ที่แสดงด้านล่าง:

...

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

...

รุ่น gradle ของเราคือ com.android.tools.build:gradle:3.2.1


3

เพื่อสร้าง AAR

ในขณะที่สร้างตามขั้นตอนด้านล่าง

File->New->New Module->Android Library and create.

เพื่อสร้าง AAR

ไปที่ gradle ที่บานหน้าต่างด้านขวาใน android studio ทำตามขั้นตอนด้านล่าง

Gradle->Drop down library name -> tasks-> build-> assemble or assemble release

AAR จะถูกสร้างขึ้นในbuild / outputs / aar /

แต่ถ้าเราต้องการให้ AAR สร้างขึ้นในโฟลเดอร์เฉพาะในไดเรกทอรีโครงการที่มีชื่อที่คุณต้องการให้แก้ไขระดับแอปของคุณbuild.gradleเช่นด้านล่าง

defaultConfig {
    minSdkVersion 26
    targetSdkVersion 28
    versionCode System.getenv("BUILD_NUMBER") as Integer ?: 1
    versionName "0.0.${versionCode}"


    libraryVariants.all { variant ->

        variant.outputs.all { output ->
            outputFileName = "/../../../../release/" + ("your_recommended_name.aar")
        }
    }
}

ตอนนี้มันจะสร้างโฟลเดอร์ที่มีชื่อ "release" ในไดเรกทอรีโครงการซึ่งจะมี AAR


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.