Aplikasi Android yang dibuat di perpustakaan geotools tidak memiliki lib java asli

Saya ingin menggunakan perpustakaan geotools (saat ini 8.0-M3, bisa juga 2.7.3) di aplikasi Android, menggunakan gerhana. (win7 prof, ram 4gb) Tetapi proses pembuatannya macet, dan saya mendapatkan kesalahan berikut

Pengecualian loop peristiwa ruang heap Java yang tidak tertangani

Masalah ruang heap java seharusnya bisa diselesaikan, tetapi tampaknya masih ada lagi. (3gb seharusnya cukup, bukan?)

Target akhir saya adalah dapat meminta db postgres postgis di geoserver dengan "layanan fitur web" OGC dan "layanan peta web".

Saya sudah menyetel gerhana ini ke

--launcher.XXMaxPermUkuran 128m --launcher.defaultAction openFile -vmargs -Xms40m -Xmx3700m

Geotools membutuhkan lebih dari yang disediakan oleh lib Android (dibandingkan dengan jre6 (1.6.0_24)).

-> Jadi saya menyalin seluruh toples dari folder jre6 plus jts-1.8.jar plus toples geotools ke dalam folder terpisah (win). (Maven (tidak digunakan dalam kasus ini!) dengan sendirinya memuat jts-1.1.3 lib, apakah ada bedanya?) Seluruh folder jar memiliki ukuran hampir 80Mb.

-> Buat folder baru di struktur proyek Eclipse Android.

-> impor file jar dari folder win ke gerhana

-> tambahkan toples ke jalur pembangunan proyek (yang seharusnya mem-porting Java ke dx) (Setelah uji coba yang lama (berhari-hari), itulah satu-satunya cara yang saya tahu, untuk menyediakan semua kelas yang diperlukan ke aplikasi. Setidaknya gerhana tidak tandai apa pun yang hilang).

Setelah kompilasi menghentikan keluaran konsol Eclipse:

Peringatan Dx: Mengabaikan atribut InnerClasses untuk kelas dalam anonim.....

untuk beberapa kelas. Mungkin karena jre lib.

Apa opsi lain untuk menyediakan geotools lib java yang diperlukan di proyek Android saya yang saya miliki? Atau apakah Anda tahu tentang uji coba yang saya sebutkan di bawah ini?

PS: Buku Android merekomendasikan untuk menyalin hanya kelas yang hilang (dan dependensinya Haha) dari file jar..... (saya mungkin lebih baik menulisnya yang baru)

Saya sudah mencoba menggunakan plugin maven. Yang berfungsi dengan baik di proyek Java murni menggunakan geotools atau saat menangani proyek Android selama saya tidak menggunakan geotools. Jika maven menyertakan proyek Android menggunakan geotools, lib dimuat oleh maven tetapi kemudian Android mengatakan sesuatu seperti "kelas R dimodifikasi secara manual"... (yang tidak dapat saya kembalikan, atau buat ulang)

Apakah ada cara untuk menyalin perpustakaan ketergantungan maven (yang seharusnya berisi apa yang saya perlukan) dari proyek Eclipse. (Saya pikir saya bisa menyalin toples dari folder repositori win, tapi itu termasuk juga ke banyak toples lainnya).

Android menyediakan "Java Native Interface" yang memungkinkan untuk menggunakan C++ atau lib lainnya. Apakah ini merupakan pilihan untuk mengatasi masalah lib yang hilang/lintas (saya belum memiliki pengalaman tentang JNI)?

Kode aplikasinya cukup pendek, jika membantu Anda saya dapat menempelkannya.


person user972851    schedule 24.11.2011    source sumber


Jawaban (1)


Apa opsi lain untuk menyediakan geotools lib java yang diperlukan di proyek Android saya yang saya miliki?

Jika Anda memerlukan kelas-kelas yang merupakan bagian dari distribusi Java standar tetapi tidak ada di Android, Anda kurang beruntung, selain menulis ulang geotools untuk menghindari kebutuhan kelas-kelas tersebut.

Jika Anda memerlukan kelas yang merupakan bagian dari pustaka Java pihak ketiga lainnya, tambahkan pustaka Java pihak ketiga tersebut ke proyek Anda.

Dari pemeriksaan singkat tentang geotools, saya menduga geotools perlu ditulis ulang secara substansial agar dapat dijalankan di Android.

PS: Buku Android merekomendasikan untuk menyalin kelas yang hilang saja (dan dependensinya Haha) dari file jar

Buku-buku saya tidak. Penulis mana pun yang menyarankan hal ini perlu memeriksakan kepalanya.

person CommonsWare    schedule 24.11.2011