1. 程式人生 > >關於Android Studio .so檔案打包不到APK中的原因

關於Android Studio .so檔案打包不到APK中的原因

         鬱悶和困惑我了好幾天的問題終於解決了,感覺像心裡一塊石頭落地了,沒解決之前,都想著是不是AS工具出現問題了,系統出現問題了,還是電腦有問題?各種原因都找了,功夫不負有心人,最後沒辦法,只能一行一行程式碼去看,最終找到了原因。

1,需要在build中新增如下配置,這是必備的

android {
   sourceSets {
       main {
           jniLibs.srcDirs = ['libs']
       }
   }
}

2,如果添加了該項配置出現了問題可能原因是引用了第三方包引起

比如我這邊引用了xutils這個包,因為該包中也有一個.so的檔案libwebpbackport.so,所以該包中配置了打包的命令導致上述(第一條1原因)配置失效,不過經過測試,也有打包成功的時候,不過大多數時候都是失敗的,具體原因還有待研究。

compile 'org.xutils:xutils:3.3.36'

最後把該包去掉,自己的.so檔案就被打包到APK中了,具體檢視如下:

[email protected]:/data/data/com.wizarpos.company # ls
cache
files
lib
shared_prefs
[email protected]:/data/data/com.wizarpos.company # cd lib/
[email protected]:/data/data/com.wizarpos.company/lib # ls
libwebpbackport.so
[email protected]

:/data/data/com.wizarpos.person/lib # ls
libjni_cloudpos_rfcard.so
libjni_wizarpos_hsm.so
[email protected]:/data/data/com.wizarpos.person/lib #

3,如何解決該問題

要解決這個問題可以不是用gradle引用,改為jar包引用,步驟如下

首先找到該包的地址如:http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/3.3.36/

下載對應的xutils-3.3.36.aar,之後解壓該檔案,提取其中的.so和class.jar檔案,其中.so在jni資料夾中

class.jar在根目錄中,修改一下class.jar的名字xutils3.3.36.jar,這樣方便檢視版本。

這樣就解決了.so不能被打包的問題了。。。。。

相關推薦

關於Android Studio .so檔案打包APK原因

         鬱悶和困惑我了好幾天的問題終於解決了,感覺像心裡一塊石頭落地了,沒解決之前,都想著是不是AS工具出現問題了,系統出現問題了,還是電腦有問題?各種原因都找了,功夫不負有心人,最後沒辦法,只能一行一行程式碼去看,最終找到了原因。 1,需要在build中新增如下

android studio.so檔案匯入了的原因

java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.example.xsq.carddemo-1/lib/arm/libwlt2bmp.so: has text relocations 原因:androi

Android如何將大檔案打包APK

開發程式時一般會將視訊音訊等檔案放在assets、或raw下,但在2.3以前會有檔案大小的限制,最大不能超過1M。如果在2.2的系統裡想放超大檔案該怎麼辦呢,,,我這有個方法(我也是在搜遍了整個網際網路,啥也沒找到的情況下自己摸索出來的)。可以將超大檔案比如100M,放在s

android studio so檔案衝突問題解決方案

1、只配置lib/armeabi目錄, 所有用到的so都需要完整。(或者再加一個lib/armeabi-v7a目錄,一樣需要所有完整的so) 2、配置完整的所有的jniLibs資料夾,檢查gradle是ndk配置是否正確,資源設定是否配置正確

android studio 自定義打包apk)名稱

在你的build.gradle中的android{}下加入如下程式碼 //配置自定義打包名稱 applicationVariants.all { variant -> variant.outputs.all { def fileN

Android studio so庫找到問題

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ zip file "/dat

android studio R檔案

[size=medium][color=gray] 最近在參加一個比賽,比賽要求需要開發一個Android專案。開發就開發吧,前兩天寫的程式碼好好的,執行也非常prefect,今天再新增新的內容時突然報錯R檔案找不到...[/color][/size][img]http:

如何將c程式執行檔案打包APK,兩種方法

如何將一個可執行的檔案打包到APK中,使用者在下載APK後直接使用,我現在想到了兩種方法:一種是將C程式直接打包到APK中,這種適合於獨立執行程式或者你手上沒有原始碼;另一種是將C程式作為庫然後使用JNI來呼叫C程式; 解壓縮即可看到APK如下目錄: |-Android

Android -- 出現.so檔案到時怎麼處理

一. 問題在專案中我們有時會遇到這樣的錯誤: cannot find “xxx.so”這其中有兩種原因導致的錯誤,這種錯誤可能會讓我們的應用程式產生閃退和ANR錯誤(應用程式無響應),我們的解決辦法也是從這兩個方面入手二. 解決(1).so檔案沒有被呼叫在model下的bui

android 依賴只編譯打包apk

幾種依賴方式 具體每個什麼意思,大家谷歌一下就知道了,這裡不在陳述 區別和使用 implementation和api是取代之前的compile的,其中api和compile是一樣的效果,implementation有所不同,通過imple

Android studio 自己定義打包APK名稱

nts 名稱 code apk conf androi 版本 ant each Android Studio打包應用默認生成的apk名稱是:app-release.apk 、假設我們要讓生成的apk名跟我們版本號包名有聯系的話。那我們就要自己定義生成的apk名了,要

Android studio 自定義打包apk

roi fault targe test 包名 如果 nts time css Android Studio打包應用默認生成的apk名稱是:app-release.apk 、如果我們要讓生成的apk名跟我們版本包名有聯系的話,那我們就要自定義生成的apk名了 需要在bui

Android Studio 2.3 以後給apk簽名打包後安裝失敗的問題

本人java小白,最近一直在學習java,然後接觸到AS,apk簽名打包完成並顯示打包成功(具體簽名步驟看Android Studio 程式簽名打包),在驗證簽名打包是否真的成功,發現結果顯示沒有簽名。如下圖: 谷歌搜尋了一些解決方法,發現 官網上的解釋: 標紅的地方已經提到

Android Studio 自定義打包apk名字

Android Studio打包的時候,我們想自定義自己的檔名,則可以使用 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = outpu

android studio分模組打包apk,多渠道打包,差異化打包

AS利用Gradle實現稍作修改(包名差異(需求如:測試機同時安裝測試版和釋出版)、功能較小差異、圖示應用名不同等較小差異化需求)打包多個不同apk的功能 實現方法 在APP的buid.gradle

iOS 把資料庫檔案打包到mainbundle,查詢到路徑的解決辦法;以及在刪除bundle檔案的可行性

在開發中有時我們需要把資料庫檔案打包到我們的專案中,一般我們都是在外部用工具生成資料庫檔案,然後拉入專案中,但是我們在程式中查詢改檔案時,返回的路徑總是nil 解決辦法: 原因我們拉入其他資原始檔(比如:圖片、程式碼檔案等)Xcode都會自動新增到target 的 "Bui

虹軟人臉識別在 linuxso檔案載入到的問題

                      其實是可以載入到的,不過是so檔案放的位置不一對,最簡單的方式是放在 /usr/lib64 目錄下,也可自己設定。 so檔案載入不到會報這個錯誤:

android studio關於真機除錯DDMS的data資料夾打開的解決方法

由於做開發的時候想開啟檢視資料庫存放的內容,在eclipse中資料庫檔案預設就在/data/data/應用包名/databases/資料庫名,而用android studio開啟DDMS下面找時發現點

Android Studio 一個工程打包多個不同包名的APK

公司最近有個特別的需求,同一套程式碼,稍做修改(如包名不一樣,圖示不一樣,應用名不一樣等),編譯出幾個不同的應用。剛好用AS重構完專案,在網上查閱了一些資料,終於搞定!!在這記錄一下。 AS主要是利用gradle來實現這個需求的,具體做法如下: 修改ap

android studio 3.0+打包apk的坑

7.0中引入了APK Signature Scheme v2,v1則是jar Signature來自JDKV1是通過ZIP條目進行驗證,這樣APK 簽署後可進行許多修改 - 可以移動甚至重新壓縮檔案。V2驗證壓縮檔案的所有位元組,而不是單個 ZIP 條目,因此,在簽名後無法再更改(包括 zipalign)。正