Gradle ไม่รวม arm64 libs

ฉันมีแอปพลิเคชันที่มีไลบรารีสองแห่ง ซึ่งทั้งสองไลบรารีต้องพึ่งพาไลบรารีเนทิฟ ทั้งสองรวมเข้าด้วยกันโดยใช้ gradle ดังนั้นโครงสร้างจึงเป็นดังนี้:

แอพของฉัน

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

ฉันต้องการลบการรองรับ arm64 เนื่องจากฉันต้องการ *.so สำหรับ Library1 ซึ่งฉันไม่มี (ดังนั้นขณะนี้ฉันได้รับ UnsatisfiedLinkError บนอุปกรณ์ arm64)

ฉันลองสิ่งนี้แล้ว: (ด้วย abiFilters "armeabi", "x86") https://stackoverflow.com/a/30799825/3325222< /ก>

แต่ฉันยังคงได้รับโฟลเดอร์ arm64 และ *.so ไฟล์ใน apk ของฉัน... มีอะไรหายไปบ้างไหม? สิ่งที่ abiFilter นั้นควรใช้งานได้หาก libs ดั้งเดิมอยู่ลึกกว่าในลำดับชั้นการพึ่งพาใช่ไหม

ขอบคุณล่วงหน้าสำหรับการสนับสนุนใด ๆ :)


person yekretsaM    schedule 07.09.2015    source แหล่งที่มา


คำตอบ (2)


ฉันพบวิธีแก้ไขโดยการยกเว้นไฟล์ *.so เฉพาะที่เพิ่งเพิ่มเข้าไปในสถาปัตยกรรมที่ฉันไม่ต้องการรองรับ:

packagingOptions {
  exclude 'lib/arm64-v8a/lib.so'
  exclude 'lib/mips/lib.so'
}
person yekretsaM    schedule 08.09.2015
comment
ฮีโร่! ขอบคุณ! ฉันยกเว้น jnis ทั้งหมดโดยใช้การยกเว้น 'lib/**' (เครื่องหมายดอกจัน 2 อัน) ดู: google github.io/android-gradle-dsl/current/ - person qwlice; 23.01.2019

https://stackoverflow.com/a/30799825/3325222 ได้ผลสำหรับฉันในสถานการณ์ที่คล้ายกัน อย่างไรก็ตาม โซลูชันดังกล่าวเลิกใช้แล้วจริงๆ

มีการสนับสนุน SDK ใหม่ใน Gradle 2.5 รุ่นทดลองซึ่งรองรับตัวกรองสถาปัตยกรรม: http://tools.android.com/tech-docs/new-build-system/tips

person kos    schedule 20.10.2015