Jadi, saya BERUSAHA untuk merilis beberapa perangkat lunak tetapi Proguard membuat saya sakit kepala.
Ketika saya mencoba untuk mengekspor menggunakan proguard saya mendapat banyak peringatan yaitu "tidak dapat menemukan kelas referensi"
Sebagai contoh:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
Peringatan tampaknya terkait dengan pekerjaan sederhana, jadi dalam file konfigurasi proguard saya, saya telah menambahkan yang berikut:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
Di mana pathtoprojecttolibs
jalur ke toples yang dirujuk oleh proyek saya.
Ini membuat TIDAK ada perbedaan.
Jika referensi simpleframework javax dapatkah saya katakan proguard untuk mengabaikan ini juga ??
Ada ide?
Jawaban:
org.simpleframework.xml.stream.StreamReader
mengacu pada kode Andajavax.xml.stream.events.XMLEvent
. Kelas yang terakhir adalah bagian dari runtime Java (rt.jar
) tetapi bukan bagian dari runtime Android (android.jar
), jadi ProGuard memperingatkan bahwa ada sesuatu yang mungkin rusak. Jika Anda yakin aplikasi Anda berfungsi, Anda dapat menentukanNeraka ProGuard?
sumber
-dontwarn javax.xml.**
-libraryjars <java.home>/lib/rt.jar
memperbaiki masalah untuk saya.-dontwarn javax.xml.stream.**
-dontwarn
bernyanyi GUI?Dalam kasus saya, akar masalahnya ada di sini . Peringatan itu bisa Anda lewati dengan:
The jawaban asli di sini
sumber
Kesalahan ini terjadi karena lib yang Anda gunakan bergantung pada lib lain yang tidak benar-benar digunakan, tetapi Proguard mencari mereka.
Tambahkan baris -dontwarn Anda ke file proguard-rules.pro Anda di proyek Android Anda untuk menonaktifkan peringatan ini.
Anda dapat menemukan dependensi mana yang perlu Anda tambahkan ke proguard-rules.pro Anda di stacktrace kesalahan Anda.
sumber
Anda harus memasukkan ini dalam konfigurasi Proguard Anda:
sumber
Kunci Ajaib saya yang memecahkan jam pencarian saya: Tambahkan ini ke progruard-android.txt
sumber
Hmm. Membaca peringatan itu tampaknya perpustakaan yang Anda coba gunakan memiliki ketergantungan pada javax.xml.stream.events. Saya tidak berpikir bahwa namespace sebenarnya termasuk dalam android sama sekali. (Lihat Indeks Paket ).
Coba gunakan untuk emulator tanpa menggunakan proguard dan lihat apakah itu berfungsi. Dugaan saya akan menjadi tidak jika peringatan itu akurat.
sumber
Saya pikir ini adalah kasus tepi tetapi dalam kasus saya, saya harus benar-benar menghapus folder build pada proguard Jenkins saya mencoba untuk bekerja dengan kode lama yang tidak ada lagi - kalau-kalau ada yang memiliki masalah yang sama.
sumber
Dalam kasus saya, saya belum mengubah apa pun dan peringatan mulai muncul. Masalahnya adalah dengan cache gradle rusak. Periksa jawaban saya yang lain . Saya berbagi dengan ini karena butuh 2 jam saya untuk menemukan masalah:]
sumber
Tambahkan baris ini ke
proguard-rules.pro
file Anda di direktori skrip gradle:di mana
package.class.name
nama paket dengan nama kelas dari file jar ditambahkan.Sebagai contoh:
sumber