几天几夜,终解移动MM计费SDK接入bug
? 筆者在接入移動(dòng)MM計(jì)費(fèi)SDK的時(shí)候遇到了一個(gè)很嚴(yán)重的問題。
? 問題是這樣的,移動(dòng)MM提供的SDK包含jar和一堆so文件,按照說明文檔,只需要將jar和so文件拷入libs下對(duì)應(yīng)的文件夾即可。但筆者是Cocos2dx項(xiàng)目,Cocos2dx是C++和java混編移植的,也就是需要用到JNI,需要在jni目錄下編寫Android.mk文件。
? 一般在Android.mk引入第三方so的寫法如下:
? 的確一般這樣寫就可以讓Eclipse將so拷貝到libs目錄。
? 可是實(shí)際測(cè)試結(jié)果是,那些so文件被Eclipse拷貝過去后竟然都變成了1kb,實(shí)際執(zhí)行app的時(shí)候自然會(huì)報(bào)錯(cuò),提示找不到so。
?筆者由于不熟悉jni的原理,反復(fù)修改檢查so文件,甚至新建一個(gè)空項(xiàng)目去測(cè)試so,結(jié)果是,只要編譯,那些so都會(huì)變成1kb。
? 分析一下可以猜出,是因?yàn)镋clipse重新編譯了so,而我們不需要編譯,只需要它拷貝就行了。
? 筆者查遍百度也沒得到解決辦法,可惡的JNI硬是要給我重新編譯so,編譯成1kb...
? 筆者困擾了幾天幾夜,不吹牛,差點(diǎn)就放棄這個(gè)項(xiàng)目了。
?
? 編譯so吧,第三方so報(bào)錯(cuò),不編譯so吧,cocos2dx本身的so又沒了。
? 苦惱,糾結(jié),可能部分朋友不知道我在說什么,但是實(shí)用第三方sdk拷貝so文件的同學(xué)很可能會(huì)遇到同樣的問題。
? 最終,筆者想起了一個(gè)腦殘的辦法。
? 既然cocos2dx要生成so,其他so不需要編譯,那么能不能先生成cocos2dx的so,然后一起拷貝呢?
? 可以。
? 首先,Android.mk里不要寫那些第三方so,直接編譯cocos2dx的so。
? 編譯完成后,在項(xiàng)目設(shè)置中的builder中,去掉所有CDT、自定義builder,也就是不在進(jìn)行混編。
? 然后把你剛剛生成的so和第三方so,直接復(fù)制到libs目錄,這樣Eclipse就不會(huì)再去管jni,再次編譯,ok!大功告成!
? 哈哈,方法是腦殘了一點(diǎn),每次修改cocos2dx內(nèi)容都要重復(fù)一遍,但是這樣確實(shí)解決了困擾了筆者幾天幾夜的bug。
? 筆者愚鈍,不知其中原理,只是弄出了這么個(gè)笨辦法解決了問題,希望能給遇到相同問題的同學(xué)一些幫助。
? 哎,有時(shí)候獨(dú)立開發(fā),確實(shí)得用一些笨辦法。
? 何樂而不為呢?
總結(jié)
以上是生活随笔為你收集整理的几天几夜,终解移动MM计费SDK接入bug的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Recyclerview 特别好用的局部
- 下一篇: 适配器模式的三种形式