安卓手機(jī)打開.so文件需要下載Native Libs Monitor這個(gè)app,這個(gè)應(yīng)用可以幫助我們理解手機(jī)上安裝的APK用到了哪些.so文件,以及.so文件來源于哪些函數(shù)庫或者框架。我們也可以自己對(duì)app反編譯來獲取這些信息。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,先為格爾木等服務(wù)建站,格爾木等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為格爾木企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在項(xiàng)目根目錄下建立文件夾libs/armeabi文件夾。將so庫放入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ù)庫依賴到j(luò)niLibs目錄的Android插件,這樣在APK構(gòu)建過程中可以自動(dòng)包含這些函數(shù)庫。
程序運(yùn)行過程中,libBMapApiEngine_v1_3_so被放在/data/data/yourAppPackage/lib/下,加載動(dòng)態(tài)庫時(shí)系統(tǒng)會(huì)從程序的該lib/目錄下查找.so庫。
我們需要的就是所有庫中的每個(gè)庫的依賴項(xiàng) so,如果我們拿到所有庫的podspec,從中獲取dependency 內(nèi)容,就解決了該問題。
只要我們編譯默認(rèn)對(duì)應(yīng)的APP和SO庫(32bit+64bit)即可。此種場(chǎng)景最為普通,本文不做詳細(xì)講解。對(duì)于場(chǎng)景B:如果APK需要加載的庫里面有64bit的,則需要全部的庫都使用64bit。
在64位設(shè)備上,如果app的 lib 目錄下 存在armeabi,則以32位兼容方式運(yùn)行。如果存在arm64-v8a 則已64位運(yùn)行。如果沒有任何 so,則 primaryCpuAbi 為空,按照系統(tǒng)的默認(rèn)配置決定,也就是64位運(yùn)行。
重裝系統(tǒng)吧,雖說64位的可以兼容32位,單實(shí)際情況是不行的需要安裝32位運(yùn)行的支持環(huán)境。才能運(yùn)行32位程序。
一般來說,32位軟件可以在64位系統(tǒng)上運(yùn)行,但需要一個(gè)名為“WOW64”的中間層來運(yùn)行。這個(gè)中間層可以在64位系統(tǒng)上模擬32位環(huán)境,將32位應(yīng)用程序運(yùn)行在64位系統(tǒng)上。因此,用戶可以使用32位軟件而無需切換到32位系統(tǒng)。
在64位的系統(tǒng)中安裝32位軟件的步驟如下:我們想要安裝32位軟件的時(shí)候,我們先右鍵安裝程序,首先對(duì)其配置設(shè)置一下。右鍵后,我們會(huì)看到很多選項(xiàng),我們向下找到屬性選項(xiàng),點(diǎn)擊進(jìn)去。
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 文件有沒有更新,有則下載SO,然后加載,這樣就可以避免用戶安裝新的應(yīng)用,要知道重新安裝應(yīng)用的用戶體驗(yàn)是很差的,要讓用戶無感知的更新他。
首先,在我們的Module的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下:然后就是編寫我們的build.gradle文件。
XXX_XXX_XXX格式的是就可以,你可以自己寫一個(gè)配套的JAVA文件,注意一下SO函數(shù)名和JAVA函數(shù)名的轉(zhuǎn)換規(guī)則,或者向SO提供方索要;不是的話就選第二種方案吧。
在使用第三方的.so庫做android開發(fā),發(fā)現(xiàn)僅僅放到AndroidProject/libs/armeabi/libminivenus.so這個(gè)位置,使用System.loadLibrary加載起來可以正常使用。庫的名字必須是libminivenus.so,不可以改名字。
沒有加LOCAL_AIDL_INCLUDES += xxx ,所以找不到我的parcelable aidl文件。
當(dāng)前題目:android使用so android使用so庫時(shí)指定c++版本
URL分享:http://jinyejixie.com/article23/dgigpjs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、營銷型網(wǎng)站建設(shè)、服務(wù)器托管、Google、定制開發(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í)需注明來源: 創(chuàng)新互聯(lián)