2014-02-08 456 views
0

我使用Android NDK爲Android編譯了一個應用程序。我有兩個項目。首先 - 是一個帶有ndk libs和jni文件夾的庫。其次 - 我的工作應用程序包括作爲圖書館的第一個項目。我的應用程序的尺寸太大了(30Mb)。我想減少它。我閱讀教程,但他們告訴做基本的選擇,如刪除日誌和未使用的代碼等,但這並不能幫助我。我可以用我所有的.c文件刪除jni文件夾(如果我在最終版本中是正確的,它們是不必要的,因爲它們被編譯爲 .so libs),或者這不會減小apk的大小?或者可能是我應該做點別的?感謝您對我的問題感興趣!Android NDK。減小APK的大小

+1

標準的android版本只複製.so文件。它不會複製任何.c源文件或頭文件。您可能需要調查其他資源的大小,例如藝術品。你可以用'7zip'等工具打開apk文件,並調查哪些文件佔用的空間最大。如果這沒有幫助,您可能需要調查OBB文件的用法,您可以在其中存儲其他數據。 http://developer.android.com/google/play/expansion-files.html – tillaert

+0

謝謝,tillaert。我會嘗試這些解決方案。 –

回答

1

您也可以檢查任何使用的第三方庫,並查看是否可以禁用任何不必要的擴展。

有一次,我用assimp完全支持所有的裝載機,它增加了超過10MB到我的應用程序。 通過從其中刪除不必要的模塊,結果是少得多的膨脹。

+0

謝謝你的回答。我會檢查這些擴展 –

1

如果您Application.mk有行

APP_ABIS = all 

或類似,考慮運費單獨的APK爲不同的平臺(armeabi,armeabi-V7A,X86,MIPS)。

技術細節在長度Android - build separate APKs for different processor architectures

+0

這似乎是非常有趣的鏈接,因爲每個平臺的每個lib都有很大的大小。我會檢查鏈接! –

2

討論您可以啓用的build.gradle文件中像這樣ABI分裂:

android { 
    // Some other configuration here... 

    splits { 
     abi { 
      enable true 
      reset() 
      include 'x86', 'armeabi', 'armeabi-v7a', 'mips' 
      universalApk false 
     } 
    } 
} 

這將通過更大的減少您的應用程序大小程度。

原因是現在Gradle會在每個CPU上生成一個APK,進一步縮小尺寸!

在我的情況下,它將我的apk文件大小從5.4mb減少到了3.2mb。