2015-07-14 11 views
5

Tôi có APK android sử dụng thư viện gốc (snappydb). Các thư viện gốc mất rất nhiều không gian, vì vậy tôi chỉ muốn giữ snappydb cho kiến ​​trúc armeabi-v7a?Có an toàn để chỉ giữ armeabi-v7a cho một apk Android

Tôi biết không an toàn 100% khi xóa snappydb cho các kiến ​​trúc khác, vì vậy câu hỏi của tôi là: làm thế nào không an toàn? (Tôi sẽ mất bao nhiêu thiết bị/người dùng?)

Chỉ để tham khảo, phiên bản sdk tối thiểu mà hỗ trợ ứng dụng của tôi là 16 (JELLY_BEAN).

+0

Câu hỏi của bạn không thực sự rõ ràng — từ ngữ của bạn không chính xác và không rõ ràng. Bạn có nghĩa là bạn chỉ muốn biên dịch và đóng gói 'snappydb' cho armeabi-v7a, và không bao gồm cùng một lib cho các kiến ​​trúc khác? Bạn có ý nghĩa gì 'loại bỏ các libs gốc khác' - những gì khác libs? – Laogeodritt

+0

Xin lỗi vì sự bất tiện này, ý tôi là không bao gồm 'snappydb' cho các kiến ​​trúc khác. – huangcd

+0

Tôi sẽ để lại nhận xét này vì tôi không thể đưa ra câu trả lời được hỗ trợ tốt. Theo hiểu biết của tôi, hầu hết các thiết bị Android đều là ARMv5 hoặc ARMv7 (không biết có bao nhiêu là v5). Có một vài máy tính bảng x86 (Intel) vào năm ngoái, và tôi nghĩ rằng một vài thiết bị MIPS đã bắt đầu cách đây nhiều năm, nhưng tôi không nghe nhiều về chúng và kiến ​​thức của tôi không phổ biến. Tôi sẽ ngạc nhiên nếu phi ARM chiếm hơn 5-10% thị phần (nhưng một lần nữa, đây là giai thoại, tôi không có bất kỳ dữ liệu nào ngay bây giờ). Tuy nhiên, lưu ý rằng một số thiết bị x86 là thiết bị Samsung. – Laogeodritt

Trả lời

0

Bạn có thể sẽ không đạt được quá nhiều từ tối ưu hóa cánh tay-v7a, và hiện không có lý do thuyết phục để bao gồm 64-bit build . Nhưng MIPS và X86 chủ sở hữu sẽ cảm ơn bạn nếu bạn giữ cho các thiết bị của họ được bảo hiểm.

+0

Xin chào Alex, ý bạn là gì 'không đạt được quá nhiều từ việc tối ưu hóa cánh tay-v7a'? – huangcd

+0

Thông thường, mã gốc được biên dịch cho ** armeabi ** sẽ chạy tốt trên các thiết bị hỗ trợ ** armeabi-v7a **, nhưng không phải khác. Thuật toán crunching số có thể hiệu quả hơn nhiều khi biên dịch cho ** armeabi-v7a **, nhưng điều này ít liên quan hơn đến thư viện cơ sở dữ liệu. –

+0

Cảm ơn @ alex-cohn – huangcd

2

tôi đề nghị sử dụng Gradle của productFlavors để sản xuất gói ứng dụng khác nhau cho mỗi ABI, như một số ABI có thể bao gồm một số tối ưu hóa mã lắp ráp (SSE4, SSE5, Arm Neon vv,)

android { 
    ... 

    flavorDimensions "abi", "version" 

    productFlavors { 
     freeapp { 
      flavorDimension "version" 
      ... 
     } 

     x86 { 
      flavorDimension "abi" 
      ... 
     } 
    } 
} 

Hoặc nếu bạn đang sử dụng các Gradle Plugin nghiệm 'com.android.tools.build:gradle-experimental:0.1.0'

android.productFlavors { 
     create ("arm7") { 
      ndk.abiFilters += "armeabi-v7a" 
     } 
     create ("arm8") { 
      ndk.abiFilters += "arm64-v8a" 
     } 
     create ("x86-32") { 
      ndk.abiFilters += "x86" 
     } 
     // for detailed abiFilter descriptions, refer to "Supported ABIs" @ 
     // https://developer.android.com/ndk/guides/abis.html#sa 
     // build one including all productFlavors 
     create("fat") 
    } 
+0

Rất đúng. Chi phí của jiggling với vài kiến ​​trúc là tối thiểu, nhưng nếu không đối với một số người dùng không có cách nào để sử dụng ứng dụng. –

+0

@ nabil-hachicha APK khác nhau cho mỗi ABI thực sự là một giải pháp tốt cho Google Play. Tuy nhiên đối với các thị trường khác không hỗ trợ nhiều apk, có vẻ khó để tìm ra cách phân phối ứng dụng của tôi một cách chính xác. Và cập nhật cũng là vấn đề khó khăn – huangcd

Các vấn đề liên quan