android使用so android使用so庫(kù)時(shí)指定c++版本

Android下查看SO庫(kù)的依賴

安卓手機(jī)打開(kāi).so文件需要下載Native Libs Monitor這個(gè)app,這個(gè)應(yīng)用可以幫助我們理解手機(jī)上安裝的APK用到了哪些.so文件,以及.so文件來(lái)源于哪些函數(shù)庫(kù)或者框架。我們也可以自己對(duì)app反編譯來(lái)獲取這些信息。

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),先為格爾木等服務(wù)建站,格爾木等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為格爾木企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

在項(xiàng)目根目錄下建立文件夾libs/armeabi文件夾。將so庫(kù)放入libs/armeabi文件夾注意事項(xiàng):(1)如果采用靜態(tài)注冊(cè)的方式請(qǐng)注意C文件中嚴(yán)格按照命名規(guī)則Java_packageName_className_method()的方式命名。

android-native-dependencies是一個(gè)自動(dòng)處理查找&下載&拷貝原生函數(shù)庫(kù)依賴到j(luò)niLibs目錄的Android插件,這樣在APK構(gòu)建過(guò)程中可以自動(dòng)包含這些函數(shù)庫(kù)。

程序運(yùn)行過(guò)程中,libBMapApiEngine_v1_3_so被放在/data/data/yourAppPackage/lib/下,加載動(dòng)態(tài)庫(kù)時(shí)系統(tǒng)會(huì)從程序的該lib/目錄下查找.so庫(kù)。

我們需要的就是所有庫(kù)中的每個(gè)庫(kù)的依賴項(xiàng) so,如果我們拿到所有庫(kù)的podspec,從中獲取dependency 內(nèi)容,就解決了該問(wèn)題。

如何在64位安卓系統(tǒng)中使用32位SO庫(kù)

只要我們編譯默認(rèn)對(duì)應(yīng)的APP和SO庫(kù)(32bit+64bit)即可。此種場(chǎng)景最為普通,本文不做詳細(xì)講解。對(duì)于場(chǎng)景B:如果APK需要加載的庫(kù)里面有64bit的,則需要全部的庫(kù)都使用64bit。

在64位設(shè)備上,如果app的 lib 目錄下 存在armeabi,則以32位兼容方式運(yùn)行。如果存在arm64-v8a 則已64位運(yùn)行。如果沒(méi)有任何 so,則 primaryCpuAbi 為空,按照系統(tǒng)的默認(rèn)配置決定,也就是64位運(yùn)行。

重裝系統(tǒng)吧,雖說(shuō)64位的可以兼容32位,單實(shí)際情況是不行的需要安裝32位運(yùn)行的支持環(huán)境。才能運(yùn)行32位程序。

一般來(lái)說(shuō),32位軟件可以在64位系統(tǒng)上運(yùn)行,但需要一個(gè)名為“WOW64”的中間層來(lái)運(yùn)行。這個(gè)中間層可以在64位系統(tǒng)上模擬32位環(huán)境,將32位應(yīng)用程序運(yùn)行在64位系統(tǒng)上。因此,用戶可以使用32位軟件而無(wú)需切換到32位系統(tǒng)。

在64位的系統(tǒng)中安裝32位軟件的步驟如下:我們想要安裝32位軟件的時(shí)候,我們先右鍵安裝程序,首先對(duì)其配置設(shè)置一下。右鍵后,我們會(huì)看到很多選項(xiàng),我們向下找到屬性選項(xiàng),點(diǎn)擊進(jìn)去。

有沒(méi)有一個(gè)配置或一個(gè)函數(shù)可以強(qiáng)制讓android以32位加載動(dòng)態(tài)庫(kù)so文件

ndk { abiFilters armeabi, armeabi-v7a, x86, mips} } 這時(shí)會(huì)報(bào)錯(cuò),因?yàn)間radle的配置中,并不知道是否要做操作系統(tǒng)的兼容,這時(shí)只要在gradle.properties文件中加上 Android.useDeprecatedNdk=true 就可以了。

我們只需要架個(gè)服務(wù)器,每次啟動(dòng)時(shí)動(dòng)態(tài)監(jiān)測(cè) SO 文件有沒(méi)有更新,有則下載SO,然后加載,這樣就可以避免用戶安裝新的應(yīng)用,要知道重新安裝應(yīng)用的用戶體驗(yàn)是很差的,要讓用戶無(wú)感知的更新他。

首先,在我們的Module的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下:然后就是編寫(xiě)我們的build.gradle文件。

XXX_XXX_XXX格式的是就可以,你可以自己寫(xiě)一個(gè)配套的JAVA文件,注意一下SO函數(shù)名和JAVA函數(shù)名的轉(zhuǎn)換規(guī)則,或者向SO提供方索要;不是的話就選第二種方案吧。

在使用第三方的.so庫(kù)做android開(kāi)發(fā),發(fā)現(xiàn)僅僅放到AndroidProject/libs/armeabi/libminivenus.so這個(gè)位置,使用System.loadLibrary加載起來(lái)可以正常使用。庫(kù)的名字必須是libminivenus.so,不可以改名字。

沒(méi)有加LOCAL_AIDL_INCLUDES += xxx ,所以找不到我的parcelable aidl文件。

當(dāng)前題目:android使用so android使用so庫(kù)時(shí)指定c++版本
URL分享:http://bm7419.com/article23/dgigpjs.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、服務(wù)器托管Google、定制開(kāi)發(fā)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名