Gradle mengecualikan lib arm64

Saya memiliki aplikasi yang menyertakan dua perpustakaan, yang keduanya memiliki ketergantungan pada perpustakaan asli. Keduanya disertakan menggunakan gradle sehingga strukturnya terlihat seperti ini:

Aplikasi Saya

- Libary1
-- x86, armeabi native libs
- Library2
-- Library3
--- x86, armeabi, arm64-v8a

Saya ingin menghapus dukungan arm64 karena saya juga memerlukan *.so untuk Library1, yang tidak saya miliki. (jadi saat ini saya mendapatkan UnsatisfiedLinkError di perangkat arm64)

Saya sudah mencoba ini: (dengan abiFilters "armeabi", "x86") https://stackoverflow.com/a/30799825/3325222

Tetapi saya masih mendapatkan folder arm64 dan file *.so di apk saya... apakah ada yang hilang? Hal-hal abiFilter itu seharusnya berfungsi jika lib asli berada lebih dalam dalam hierarki ketergantungan, bukan?

Terima kasih sebelumnya atas dukungan apa pun :)


person yekretsaM    schedule 07.09.2015    source sumber


Jawaban (2)


Saya menemukan solusi dengan mengecualikan file *.so tertentu yang baru saja ditambahkan di dalam arsitektur yang tidak ingin saya dukung:

packagingOptions {
  exclude 'lib/arm64-v8a/lib.so'
  exclude 'lib/mips/lib.so'
}
person yekretsaM    schedule 08.09.2015
comment
Pahlawan! Terima kasih! Saya mengecualikan semua jnis menggunakan pengecualian 'lib/**' (2 tanda bintang). Lihat: google. github.io/android-gradle-dsl/current/ - person qwlice; 23.01.2019

https://stackoverflow.com/a/30799825/3325222 berfungsi untuk saya dalam situasi serupa. Namun, solusi tersebut sebenarnya sudah tidak digunakan lagi.

Terdapat dukungan SDK baru di Gradle 2.5 eksperimental yang mendukung filter arsitektur: http://tools.android.com/tech-docs/new-build-system/tips

person kos    schedule 20.10.2015