Saya telah men-download beberapa perpustakaan sumber dan ingin mengekspornya sebagai file Jar menggunakan Android Studio. Apakah ada cara untuk mengekspor ke file jar menggunakan Android studio ?
edit:
Perpustakaan saya ingin ekspor sebagai jar adalah aplikasi Android perpustakaan. It's disebut "Menonjol" dan dapat didownload dari GitHub. https://github.com/pingpongboss/StandOut
Hal ini tidak mungkin untuk mengekspor aplikasi Android perpustakaan sebagai file jar. Hal ini dimungkinkan, namun, untuk ekspor sebagai aar
file. Aar
file yang baru format biner untuk Android perpustakaan. Ada's info tentang mereka di Google I/O, New Membangun Sistem video.
Pertama, membangun perpustakaan di Android Studio atau dari baris perintah mengeluarkan gradle membangun
dari perpustakaan anda's direktori root.
Hal ini akan mengakibatkan <yourlibroot>/libs/membangun/yourlib.aar
file.
Ini aar file adalah representasi biner dari perpustakaan anda dan dapat ditambahkan ke proyek anda, bukan perpustakaan sebagai ketergantungan proyek.
Untuk menambahkan aar file sebagai ketergantungan anda harus mempublikasikannya ke maven central atau ke local repository maven, dan kemudian merujuk aar file dalam proyek anda's gradle.membangun
file.
Namun, langkah ini agak berbelit-belit. I've ditemukan penjelasan yang baik cara melakukannya di sini:
http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds
Saya bisa membangun sebuah perpustakaan kode sumber untuk menyusun .jar
file, menggunakan pendekatan dari solusi ini:
https://stackoverflow.com/a/19037807/1002054
Berikut adalah rincian dari apa yang saya lakukan:
Pada bulan mei kasus itu Volley library
Saya menggunakan Android Studio 0.3.7. I've mengalami beberapa masalah selama langkah itu, yaitu aku harus salin gradle
folder dari android baru proyek sebelum saya mampu untuk mengimpor Voli perpustakaan source code, hal ini dapat bervariasi tergantung pada source code yang anda gunakan.
membangun.gradle
file// If your module is a library project, this is needed
//to properly recognize 'android-library' plugin
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.3'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 17
buildToolsVersion = 17
sourceSets {
main {
// Here is the path to your source code
java {
srcDir 'src'
}
}
}
}
// This is the actual solution, as in https://stackoverflow.com/a/19037807/1002054
task clearJar(type: Delete) {
delete 'build/libs/myCompiledLibrary.jar'
}
task makeJar(type: Copy) {
from('build/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'myCompiledLibrary.jar')
}
makeJar.dependsOn(clearJar, build)
gradlew makeJar
perintah dari proyek anda root.Saya kasus saya, saya harus salin gradlew.bat
dan gradle
file dari android baru proyek ke proyek perpustakaan akar.
Anda harus menemukan disusun file library myCompiledLibrary.jar
dalam membangun\libs
direktori.
Saya berharap seseorang menemukan ini berguna.
Edit:
Walaupun ini bekerja, anda akan menemukan duplikat perpustakaan pengecualian saat menyusun sebuah proyek dengan beberapa modul, di mana lebih dari satu modul (termasuk modul aplikasi) tergantung pada yang sama jar
file (misalnya. modul memiliki perpustakaan sendiri direktori, yang dirujuk dalam membangun.gradle
diberikan modul).
Dalam kasus di mana anda perlu untuk menggunakan satu perpustakaan di lebih dari satu modul, saya akan merekomendasikan menggunakan pendekatan ini: https://stackoverflow.com/questions/16746558/android-gradle-build-and-the-support-library/17153240#17153240
Sejak Android Studio V1.0 file jar tersedia dalam proyek berikut link:
debug ver: "your_app"\build\intermediates\bundles\debug\classes.jar
rilis ver: "your_app"\build\intermediates\bundles\release\classes.jar
File JAR ini dibuat pada membangun prosedur, Di Android Studio GUI itu's dari Build->Membuat Proyek dan dari CMD line itu's "gradlew membangun".
Termasuk yang berikut dalam membangun.gradle:
android.libraryVariants.all { variant ->
task("generate${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for $variant.name."
source = variant.javaCompile.source
ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
}
task("javadoc${variant.name}", type: Jar) {
classifier = "javadoc"
description "Bundles Javadoc into a JAR file for $variant.name."
from tasks["generate${variant.name}Javadoc"]
}
task("jar${variant.name}", type: Jar) {
description "Bundles compiled .class files into a JAR file for $variant.name."
dependsOn variant.javaCompile
from variant.javaCompile.destinationDir
exclude '**/R.class', '**/R$*.class', '**/R.html', '**/R.*.html'
}
}
Anda kemudian dapat menjalankan gradle dengan: ./gradlew bersih javadocRelease jarRelease
yang akan membangun anda Jar anda dan juga javadoc jar ke dalam membangun/libs/
folder.
EDIT: Dengan android gradle alat 1.10.+ mendapatkan android SDK dir berbeda dari sebelumnya. Anda harus mengubah berikut (terima kasih Vishal!):
android.sdkDirectory
bukan
android.plugin.sdkDirectory
Saya mampu untuk mengekspor file jar di Android Studio menggunakan tutorial ini:
"Bagaimana Untuk Mengekspor Jar Dari Android Studio "Aku diperbarui jawaban saya untuk mencakup semua langkah-langkah untuk mengekspor JAR di Android Studio:
Membuat Android application project, pergi ke app ->membangun.gradle
Perubahan berikut dalam file ini:
memodifikasi menerapkan plugin: 'com.android.aplikasi' untuk menerapkan plugin: 'com.android.perpustakaan'
menghapus sebagai berikut: applicationId, versionCode dan versionName
Tambahkan kode berikut:
// Tugas untuk menghapus tua jar tugas deleteOldJar(jenis: Hapus){ hapus 'rilis/AndroidPlugin2.jar' }
// task to export contents as jar
task exportJar(type: Copy) {
from ('build/intermediates/bundles/release/')
into ('release/')
include ('classes.jar')
rename('classes.jar', 'AndroidPlugin2.jar')
}
exportJar.dependsOn(deleteOldJar, build)
Don't lupa untuk klik sinkronisasi sekarang di file ini (kanan atas atau menggunakan tombol sync).
Klik pada Gradle tab (biasanya tengah kanan) dan gulir ke bawah exportjar
Setelah anda melihat membangun sukses pesan di jendela run, menggunakan file explorer pergi ke diekspor jar menggunakan path: C:\Users\name\AndroidStudioProjects\ProjectName\app\release anda harus melihat di direktori ini anda file jar.
Good Luck :)
Berikut ini's lagi, sedikit jawaban yang berbeda dengan beberapa perangkat tambahan.
Kode ini mengambil .jar langsung dari .aar. Secara pribadi, itu memberi saya sedikit lebih percaya diri bahwa bit yang dikirim melalui .jar yang sama seperti orang-orang yang dikirim via .aar. Ini juga berarti bahwa jika anda're menggunakan ProGuard, output jar akan dikaburkan seperti yang diinginkan.
Saya juga menambahkan super "makeJar" tugas, yang membuat stoples untuk semua membangun varian.
task(makeJar) << {
// Empty. We'll add dependencies for this task below
}
// Generate jar creation tasks for all build variants
android.libraryVariants.all { variant ->
String taskName = "makeJar${variant.name.capitalize()}"
// Create a jar by extracting it from the assembled .aar
// This ensures that products distributed via .aar and .jar exactly the same bits
task (taskName, type: Copy) {
String archiveName = "${project.name}-${variant.name}"
String outputDir = "${buildDir.getPath()}/outputs"
dependsOn "assemble${variant.name.capitalize()}"
from(zipTree("${outputDir}/aar/${archiveName}.aar"))
into("${outputDir}/jar/")
include('classes.jar')
rename ('classes.jar', "${archiveName}-${variant.mergedFlavor.versionName}.jar")
}
makeJar.dependsOn tasks[taskName]
}
Untuk pembaca penasaran, aku berjuang untuk menentukan variabel dan parameter yang com.android.perpustakaan menggunakan plugin untuk nama .aar file. Akhirnya aku menemukan mereka dalam Android Open Source Project di sini.
Kita dapat mengekspor file jar untuk Android library project tanpa sumber file dengan Android studio. Hal ini juga persyaratan apa yang saya temui baru-baru ini.
1. Config anda membangun.gradle
// Task to delete old jar
task clearJar(type: Delete){
delete 'release/lunademo.jar'
}
// task to export contents as jar
task makeJar(type: Copy) {
from ('build/intermediates/bundles/release/')
into ('build/libs/')
include ('classes.jar')
rename('classes.jar', 'lunademo.jar')
}
makeJar.dependsOn(clearJar, build)
2. Menjalankan gradlew makeJar di bawah proyek anda root
Anda akan melihat anda libs di bawah dir seperti membangun/libs/ jika anda beruntung.
============================================================
Jika anda bertemu masalah seperti "Soket batas waktu terkecuali" pada baris perintah seperti di bawah ini,
Anda dapat mengikuti langkah-langkah ini untuk membuka Gradle jendela di bagian kanan dan klik "makeJar" pada Android studio seperti ini,
Kemudian pergi untuk membangun/libs dir, anda akan melihat file jar.
Semoga informasi ini bermanfaat untuk anda.
Good Luck @.@
Luna