Situasi :
Saya bermaksud menggunakan perpustakaan Java dan saya hanya memiliki file AAR dari repositori Maven tetapi saya memerlukan file JAR .
Cerita latar belakang:
Saya mencoba mengompilasi perpustakaan, tetapi struktur Gradle-nya tidak stabil. Jadi saya meminta file jar yang telah dikompilasi, dan pengembangnya memberikan saya file aar dari beberapa repositori Maven (pengembang tidak dapat mengkompilasi proyeknya sendiri). Konfigurasi Gradle berantakan, itu bergantung pada banyak pustaka dan Gradle telah membuat beberapa pengecualian.
Saya mencoba menggunakannya di IDEA IDE saya, tetapi tidak dapat melihatnya. Sebuah proyek perpustakaan harus dapat dikompilasi menjadi file jar, bukan?
Pertanyaan :
Apa yang harus saya lakukan untuk mengonversi file AAR itu menjadi file JAR?
Jawaban:
File AAR terdiri dari file JAR dan beberapa file sumber daya (pada dasarnya ini adalah file zip standar dengan ekstensi file khusus). Berikut langkah-langkah untuk mengonversi:
sumber
.aar adalah arsip zip standar, yang sama digunakan dalam .jar. Ubah saja ekstensinya dan, dengan asumsi itu tidak rusak atau apa pun, itu akan baik-baik saja.
Jika perlu, Anda dapat mengekstraknya ke sistem file Anda dan mengemasnya kembali sebagai jar.
1) Rename it to .jar 2) Extract: jar xf filename.jar 3) Repackage: jar cf output.jar input-file(s)
sumber
Seperti yang ditunjukkan banyak orang lain, hanya mengekstrak .jar dari file .aar tidak cukup memotongnya karena sumber daya mungkin hilang.
Berikut adalah langkah-langkah yang berhasil untuk saya (konteks Android, jarak tempuh Anda mungkin berbeda jika Anda memiliki tujuan lain):
sumber
Bagi mereka, yang ingin melakukannya secara otomatis, saya telah menulis skrip bash dua baris kecil yang melakukan dua hal berikut:
Ubah nama class.jar yang diekstrak menjadi seperti aar tetapi dengan ekstensi baru
find . -name '*.aar' -exec sh -c 'unzip -d `dirname {}` {} classes.jar' \; find . -name '*.aar' -exec sh -c 'mv `dirname {}`/classes.jar `echo {} | sed s/aar/jar/g`' \;
Itu dia!
sumber
aar=jar+res+manifest+libs
. Biarkanrest=res+manifest+libs
, darijar(aar)=aar-rest
.Android Studio (versi: 1.3.2) memungkinkan Anda mengakses .jar di dalam .aar.
Bonus: secara otomatis mendekompilasi kelas!
Cukup ikuti langkah-langkah berikut:
File > New > New Module > Import .JAR/.AAR Package
untuk mengimpor Anda .aar sebagai modulTambahkan modul yang baru dibuat sebagai dependensi ke proyek utama Anda (tidak yakin jika diperlukan)
Klik kanan pada "class.jar" seperti yang ditunjukkan pada gambar di bawah ini, dan klik "Show in explorer". Ini .jar Anda.
sumber
The 'aar' bundle is the binary distribution of an Android Library Project. .aar file consists a JAR file and some resource files. You can convert it as .jar file using this steps 1) Copy the .aar file in a separate folder and Rename the .aar file to .zip file using any winrar or zip Extractor software. 2) Now you will get a .zip file. Right click on the .zip file and select "Extract files". Will get a folder which contains "classes.jar, resource, manifest, R.java, proguard(optional), libs(optional), assets(optional)". 3) Rename the classes.jar file as yourjarfilename.jar and use this in your project.
sumber
Proyek .aar berbasis sumber daya
Menemukan file class.jar di dalam file .aar cukup sepele. Namun, pendekatan itu tidak berhasil, jika proyek .aar menentukan beberapa sumber daya (contoh: R.layout.xyz)
Oleh karena itu deaar dari CommonsGuy membantu saya mendapatkan proyek ramah-ADT yang valid dari file .aar. Dalam kasus saya, saya mengonversi tampilan-skala-gambar-subsampling . Saya membutuhkan waktu sekitar satu jam untuk memasang ruby di PC saya.
Pendekatan lain adalah menggunakan android-maven-plugin untuk Eclipse / ADT seperti yang ditulis CommonsGuy di blognya .
Namun pendekatan lain bisa jadi, cukup kloning seluruh proyek yang diinginkan sebagai sumber dari git dan impor sebagai "Proyek Android yang ada"
sumber
Jika Anda menggunakan Gradle untuk build Anda - ada plugin Gradle yang memungkinkan Anda menambahkan dependensi aar ke modul java | kotlin | scala | ... Anda.
https://github.com/stepango/aar2jar
plugins { id 'java' id 'com.stepango.aar2jar' version “0.6” // <- this one } dependencies { compileOnlyAar "com.android.support:support-annotations:28.0.0" // <- Use any AAR dependencies }
sumber