1. 程式人生 > >整個多個第三方的so庫

整個多個第三方的so庫

本來做了個objectbox的demo,執行正常;還有一個圖片文字掃描識別,也執行正常。

但是識別模組所用的so檔案是armeabi的,objectbox專案的不需要自己去匯入。問題來了,識別模組自能是armeabli的cpu架構,其他的不可以,所以demo是直接固定了安裝需要的cpu 。

ndk {
   abiFilters 'armeabi'}
但現在是要把這兩者合在一起,第一波問題不大,只要在對應的armeabi資料夾加上objectbox的so庫上去就好了,因為加了這句話後,當系統要找so檔案時就會去找對應目錄,但objectbox的so都整合到jar包裡面了,怎麼引用就不知道了,反正加了ndk限制後就找不到so庫了,要自己補上去,怎麼找整個so檔案呢,可以在可以允許的demo中直接搜尋,因為已經生成在build/intermediates,自己對應的來拿。


第二波問題來了,我們普通的手機的cpu架構大概都是arm的,而我們開發的模擬器卻基本都用x86的(不是沒有,而是太慢了),所以我們指定了arm架構,模擬器就用不了,而且還有部分手機是x86的,這樣會有部分影響,所以把x86加上去。

ndk {
    //選擇要新增的對應cpu型別的.so庫。
abiFilters 'armeabi','x86'
// 還可以新增 'x86', 'x86_64', 'mips', 'mips64'
}

我模擬器用的是x86_64的,我一開始把這個加上去,但是問題來了

這個問題原因是說,我們一開始有地方使用了64架構了,但後面有其他地方使用了32架構的so,系統是不支援這種操作。

因為armeabi是屬於32的,而x86_64是64位的,當兩個都使用的時候,就會報錯,所以,當你某些so庫只支援某種架構時就要注意了,那時候最後同時只支援一個,要不都32位,要不都64位。

相關推薦

整個第三方so

本來做了個objectbox的demo,執行正常;還有一個圖片文字掃描識別,也執行正常。 但是識別模組所用的so檔案是armeabi的,objectbox專案的不需要自己去匯入。問題來了,識別模組自能是armeabli的cpu架構,其他的不可以,所以demo是直接固定了安裝

關於Android的.so檔案---第三方載入到工程讀取不到.so的解決辦法

原文連結 早期的Android系統幾乎只支援ARMv5的CPU架構,你知道現在它支援多少種嗎?7種! Android系統目前支援以下七種不同的CPU架構:ARMv5,ARMv7 (從2010年起),x86 (從2011年起),MIPS (從2012年起),ARMv8,MIPS64和x86_64 (從

iOS將第三方sdk打包成靜態

前段時間做了個sdk打包成動態庫,發現使用非常方便各種好處也特別多,然後在最後將APP打包時出問題了,打包時候動態庫打不進去,想了很多辦法還是沒有解決,又因為趕時間所以只能重新打成靜態庫了。 在打成靜

iOS專案中引用第三方引發衝突的解決方法

這個真蛋疼~~~~ 解決方法如下: iOS程式開發過程中引用多個第三方庫時會出現類名重疊,導致衝突,具體的衝突錯誤提示如下: duplicate symbol OBJC_IVAR$_AFHTTPSessionManager._requestSerializer in:

如何編譯靜態及將.a靜態合併成一個.a靜態

所使用的命令為ar 1 將所有的.a庫解壓成.o檔案ar x xx.a 2 將所有的.o 檔案合併成.aar rcs xx.b *.o 3 編譯.a 靜態庫 1)生成對應的.o 檔案 gcc -c a.c b.c 2)使用ar命令合成靜態庫 ar crs libjson.a *.o 3) 檢視編譯庫

Android Studio配置CMakeLists.txt來載入第三方SO

要使用第三方庫首先當然是載入第三方庫的標頭檔案 使用include_directories來包含第三方標頭檔案,多個路徑用空格隔開,新增在cmake_minimum_required的下面 include_directories(xxx/include ../xxx)  例如

引入第三方so

1.生成so庫 2.把生成的so庫複製到專案libs目錄資料夾 3.修改專案build.gradle檔案 android { compileSdkVersion 26 buildToolsVersion "26.0.1" defaul

Android平臺下JNI呼叫第三方so

 首先說一下在網上查詢資料時,對於呼叫第三方so庫,有人說有兩種方法: 1.    對於so庫的API符合JNI格式(即使用javah指令生成的標頭檔案中那種格式),可以在Java程式碼中宣告它對應的native方法,直接調  用。 &

thinkphp常用的10第三方下載

{     "name": "topthink/think",      //專案名字     "description": "the new thinkphp framework",    //專案簡介     "type": "project",          //專

android studio中使用第三方so(終結版)

    安卓開發中,經常會用到第三方C++庫,然後不知道是我對系統不熟悉的原因,還是安卓支援C++開發本來就比較弱,反正其中踩了很多坑。     android studio 版本 3.0.1,  在PC上安裝android studio3.1.2,就是配置不成功,後面再筆

AndroidStudio環境下應用程式匯入第三方so的方法

通過網上查詢資料,以及自己的嘗試,總結下AndroidStudio環境下,匯入第三方so庫的方法,以及常見的一些問題。 一.步驟 1. 新建Anodroid工程, File->New Project; 2.在彈出介面上選中Include C++ support 3.一

JIN學習一、Android使用已有C/C++程式碼、第三方SO的方法

1.配置好NDk編譯環境(這個Google一下,:)) 2.將已有C/C++程式碼,編譯成SO檔案 3.Eclipse中新建Android工程,建立一個jni目錄。如下所示 4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式 5.建立Androi

Android使用已有C/C++程式碼、第三方SO的方法(JIN學習)

1.配置好NDk編譯環境(這個Google一下,:)) 2.將已有C/C++程式碼,編譯成SO檔案 3.Eclipse中新建Android工程,建立一個jni目錄。如下所示 4.在jni目錄建立C/C++檔案,裡面呼叫步驟2函式,或者第三方SO的函式 5.建

android原始碼編譯apk整合第三方so

一般編譯android應用,生成apk,有以下幾個方法:     1.傳統的在eclipse平臺下編譯生成apk,這種情況下,需要指定android sdk,通過eclipse編譯生成apk,編譯的apk擁有較低級別的使用者級別許可權,可能有些底層操作沒有許可權實現,比如部

Android如何呼叫第三方SO

Android中可能會用到第三方的軟體包,這包括Java包.jar和Native包.so。jar包既可通過Eclipse開發環境整合,也可通過編譯原始碼整合,看你的工作環境。 假定自己開發的程式為MyMaps,需要用到BaiduMaps的庫,包括baidumapapi.jar和libBMapApiEn

Android 第三方混淆過的jar 類名衝突

背景:目前大多數第三方的jar都是混淆過了的,多個jar組合使用則可能會出現類重複問題。 那友盟統計的jar來說: 第一行是原始jar的路徑,第二行是修改完jar輸出路徑 先建立個txt,寫混淆規則。 1.下面的keep class 就根據jar裡面沒有混淆的,進行配置,

.net 用EF開發專案,你不得不再引用的幾第三方擴充套件

EntityFramework 非常好用,結構優美.. 但是美中有不足. 1.對動態查詢條件支援的不是很好 2.批量操作支援的不是很好. 下面就是幾個第三方庫,對EntityFramework 的擴充套件.具體如何使用請百度吧.. /*********

android開發ndk呼叫第三方so

1.0 功能概述 1.0.1 概述 在android開發中,java呼叫C/C++函式庫是經常遇到的,我們的android開發中使用JNI開發技術,有下面幾種情況: 已經使用C/C++發了某些函式庫,如果再使用java封裝相應的函式庫的話,可能會話費

android 呼叫第三方so

首先要知道這個第三方的so庫是不是按jni標準寫的,如果是那就簡單了,直接寫個native呼叫就行了。如果不是那就比較麻煩了,必須要把這個so庫裡面的函式封裝一下在呼叫,下面進入正題。假設這個庫放在/system/vendor/lib下面,名字為libtest.so,我們要呼

## Android Studio 下載依賴 ##

有時候需要從不同地方下載遠端庫 需要為maven設定多個Url: allprojects { repositories { jcenter() maven { url 'http://****' } m