Android使用第三方已經生成的(de)動态SO庫(解決銀聯崩潰)
發表時(shí)間:2021-1-10
發布人(rén):融晨科技
浏覽次數:83
在(zài)遊戲接入第三方RgSDK的(de)時(shí)候,遊戲支付出(chū)了(le/liǎo)問題,在(zài)點擊銀聯标志的(de)時(shí)候,遊戲崩潰。
通過詢問RgSDK的(de)技術人(rén)員。發現在(zài)我根據文檔拷貝的(de)所給的(de)SDK的(de)Demo裏的(de)文件時(shí)少拷貝了(le/liǎo)一個(gè)libentryex.so.他(tā)們說(shuō)這(zhè)個(gè)就(jiù)是(shì)銀聯的(de)so庫。
于(yú)是(shì) 我就(jiù)把它拷貝過來(lái),拷貝到(dào)了(le/liǎo)libs/armeabi文件夾下,結果在(zài)生成apk的(de)時(shí)候,這(zhè)個(gè)so庫被清除了(le/liǎo)。
于(yú)是(shì)網上(shàng)找資料 發現 so庫的(de)位置雖然是(shì)libs/armeabi,但是(shì)并不(bù)是(shì)手動拷貝的(de)。而(ér)是(shì)系統給他(tā)它設置過去的(de)。
而(ér)且so庫 可以(yǐ)作爲(wéi / wèi)src文件。于(yú)是(shì)新建一個(gè)文件夾jni/unionpay。把so庫放入,就(jiù)像一個(gè)c++文件一樣。(注意是(shì)從Windows資源管理拷貝過去)。
[img]http://img.blog.csdn.net/20150108180255744?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTGlnaHRVcEhlYXZlbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
然後改寫Android.mk
添加:
LOCAL_MODULE := entryex
LOCAL_MODULE_FILENAME := libentryex
LOCAL_SRC_FILES := unionpay/libentryex.so //注意這(zhè)裏的(de)相對,必須能被找到(dào)。
include $(PREBUILT_SHARED_LIBRARY) //注意這(zhè)裏的(de)形式
LOCAL_MODULE := cocos2dlua_shared
LOCAL_SHARED_LIBRARIES := libentryex //這(zhè)句話是(shì)關鍵。
LOCAL_MODULE_FILENAME := libcocos2dlua
然後 主線程裏:
static {
System.loadLibrary("entryex");
System.loadLibrary("cocos2dlua");
}
注意庫前面不(bù)要(yào / yāo)加lib,不(bù)然找不(bù)到(dào) ,要(yào / yāo)和(hé / huò)LOCAL_MODULE定義的(de)一緻。然後 就(jiù)可以(yǐ)使用這(zhè)個(gè)庫了(le/liǎo)。
我之(zhī)前就(jiù)加了(le/liǎo)lib所以(yǐ)浪費了(le/liǎo)不(bù)少時(shí)間。
希望對大(dà)家有些幫助。