2016-05-31 19 views
0

定義ABI版本Android Studio我將我的Android應用程序的新版本上傳到Developer Console以運行Alpha測試。但是,我無法在我的測試設備上下載此測試版本,因爲Play商店沒有向我的測試用戶提供此類更新。兩週前使用SDK

我無法解決此問題here我直接聯繫了Google Developer Support。

我現在收到的答覆如下:

我看着你的問題,並發現您的應用程序的版本15不與Nexus 5兼容因您的應用程序的清單與以下原生衝突平臺:armeabi,armeabi-v7a。

有關平臺的更多信息,請訪問我們的開發者網站https://developer.android.com/ndk/guides/abis.html

這是相當混亂。據我瞭解鏈接頁面上的信息,只有使用NDK時,ABI設置纔可用/相關。不過我用最新版本SDK工作在Android Studio 2.1

它甚至可以設置/定義ABI版本的SDK工作時?

應用程序清單不包含任何與ABI版本相關的設置。

當我將APK手動複製到我的設備(運行Android 4.4.4的Nexus 5)並安裝它時,它運行時沒有任何問題。那麼,APK是否真的與我的設備不兼容?

編輯:通過user1056837

被評論的啓發,我發現this page,描述如何將NDK塊添加到build.gradle文件:

android { 
    ... 

    ndk { 
     // All configurations that can be changed in android.ndk. 
     ... 
    } 

    productFlavors { 
     create("arm") { 
      ndk { 
       // You can customize the NDK configurations for each 
       // productFlavors and buildTypes. 
       abiFilters.add("armeabi-v7a") 
      } 
     } 

     create("fat") { 
      // If ndk.abiFilters is not configured, the application 
      // compile and package all suppported ABI. 
     } 
    } 
} 

目前我build.gradle文件不不包括包括任何NDK配置。我不確定,我如何通過添加這樣的配置來解決Play商店的問題。

據我瞭解的鏈接頁面上的信息,一個胖二進制將創建沒有abiFilters被配置。那是對的嗎?

那麼下面的一個應該是正確的:

  1. 我的項目確實包含一些本地代碼我不知情的情況。在這種情況下,由於我的build.gradle文件不包含而不是包含任何NDK配置,因此創建了一個胖二進制文件。
  2. 我的項目不包含包含任何隱藏的本機代碼。在這種情況下,NDK配置根本沒有任何效果。

我在這裏錯過了什麼嗎?無論哪種情況是正確的,在這兩種情況下,我不知道什麼配置可以解決問題...

+0

應用程序清單並不提供ABI支持的信息,它只能通過檢查apk文件中存在的本機庫的類型來看到(在使用cygwin的窗口中,我這樣做一行代碼來檢查:'aapt l example .apk | grep .so') –

+0

我正在使用OS X,但我一直無法使用'appt'命令。我會盡力弄清楚這一點。但正如問題中所說,我不確定ABI版本是否真的成爲問題的根源。我發現的所有信息僅與使用'NDK'時相關,但我使用的是「Java SDK」。 Java創建平臺獨立的字節碼。爲什麼在這種情況下二進制版本應該是相關的? –

+0

也許某些第三方庫正在爲您的應用程序添加特定於體系結構的二進制文件。如果您找不到aapt,請將您的APK作爲zip文件打開,並在* lib *文件夾內查看是否存在帶有.so文件的子文件夾。 – ph0b

回答

0

也許是晚了,但不過: 我有同樣的問題。它在第三方庫中。當我的應用程序開始構建時,庫bitcoinj在/lib/x86_64/darwin/libscrypt.dylib folder中創建了一個本地腳本。我只是在build.gradle文件中排除了這個文件夾。

packagingOptions { 
    exclude 'lib/x86_64/darwin/libscrypt.dylib' 
} 

之後,所有開始工作正常。我的應用程序現在支持5900設備。