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