Unity3D接入移动MM支付SDK(强联网)的问题
因?yàn)橐苿?dòng)MM支付的SDK只提供android版本的,要自己寫過一個(gè)android項(xiàng)目再打包重新生成一個(gè)jar來供Unity3d引擎使用,這一部分我就不寫了,網(wǎng)上也提供很多的教程,主要是已經(jīng)成功調(diào)用之后,會(huì)發(fā)生以下的錯(cuò)誤:
1.failed to find resource file(mmiap.xml}
06-28 05:14:09.746: E/d(4709): failed to find resource file(mmiap.xml}06-28 05:14:09.776: D/AndroidRuntime(4709): Shutting down VM
06-28 05:14:09.776: W/dalvikvm(4709): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
06-28 05:14:09.786: E/AndroidRuntime(4709): FATAL EXCEPTION: main
06-28 05:14:09.786: E/AndroidRuntime(4709): java.lang.NullPointerException
06-28 05:14:09.786: E/AndroidRuntime(4709):?
at mm.purchasesdk.d.a.a(Unknown Source)
06-28 05:14:09.786: E/AndroidRuntime(4709):?
at mm.purchasesdk.f.a(Unknown Source)
06-28 05:14:09.786: E/AndroidRuntime(4709):?
at mm.purchasesdk.Purchase.init(Unknown Source)
這個(gè)是因?yàn)橹匦麓虬^JAR之后,APK程序已經(jīng)找不到原來的那幾個(gè)xml文件了,需要把它提到apk外面,但也不能直接簡單地解壓加進(jìn)去,一定要使用一定的工具。
工具有:apktool,aapt,jarsigner
但由于xda論壇的人在上幾個(gè)月已經(jīng)開發(fā)出新的apktool了,叫:AndroidMultitool,這個(gè)工具很好用,已經(jīng)集成了上面所有的功能了,大家可以使用這個(gè)工具。好,廢話不多說。
大概的流程是:
1,反編譯APK
2,重新編譯成APK
3,用aapt工具把CopyrightDeclaration.xml,mmiap.xml,VERSION這三個(gè)文件加到APK的根目錄下面
4,把APK重新簽名,成功!
下面就是對應(yīng)的步驟:
至于第三步,就是在AndroidMultitool文件夾下面的Program_Files下面的aapt程序:
紅色的就是我自己加進(jìn)去的文件,要把他們加到run0.apk這個(gè)程序里面
其他的三個(gè)步驟我就不多說了,主要說一下第3個(gè)步驟:aapt工具的使用。
我們主要用到兩個(gè)命令行(其他命令大家自己網(wǎng)上找吧,很強(qiáng)大的):
aapt.exe l run0.apk(這個(gè)命令是列出APK里面的資源文件目錄)
aapt.exe a run0.apk mmiap.xml(這個(gè)命令是把mmiap.xml文件加入到run0.apk中)
當(dāng)然,我們要加三個(gè)文件到里面,各個(gè)命令行就不詳寫了,大家自己寫也行了。
搞定后就可以重新簽名就成功了!
AndroidMultitool工具的下載,給一個(gè)鏈接給大家吧:http://forum.xda-developers.com/showthread.php?t=2326604。
由于有人說在那個(gè)英文網(wǎng)站下載不了,補(bǔ)個(gè)CSDN的下載吧~不用積分~
http://download.csdn.net/detail/lihandsome/6582863
另外,也可以直接使用我自己寫的批處理(懂的用就用批處理比較快):
del newtemp.apk
java -jar "apktool.jar" d -s -f temp.apk tmpAndroid
java -jar "apktool.jar" ?b -f tmpAndroid run1.apk
rd /s /q tmpAndroid
aapt.exe a run1.apk mmiap.xml CopyrightDeclaration.xml VERSION
java -jar signapk.jar testkey.x509.pem testkey.pk8 run1.apk run_signed.apk
del run1.apk
zipalign.exe -v 4 run_signed.apk newtemp.apk
del run_signed.apk
另外:有人說發(fā)現(xiàn)了另外一個(gè)錯(cuò)誤,就是讀取不了MM扣費(fèi)JAR包里面的圖片資源,這個(gè)問題是因?yàn)閁nity對APK打包的時(shí)候,把JAR包里面的資源封在里面了,解決辦法是:
1,先解壓JAR包,把里面的資源文件夾(mmiap這個(gè)文件夾)拿出來
2,在Unity項(xiàng)目的Assets文件夾的根目錄下面新建一個(gè)StreamingAssets文件夾
3,把mmiap這個(gè)文件夾復(fù)制到StreamingAssets文件夾下面就可以了。
目錄最后變成:\Assets\StreamingAssets\mmiap\image\vertical\下面的圖片
轉(zhuǎn)載請注明出處,謝謝。http://blog.csdn.net/lihandsome/article/details/11919113
總結(jié)
以上是生活随笔為你收集整理的Unity3D接入移动MM支付SDK(强联网)的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Coursera奖学金申请模板
- 下一篇: 偏微分方程离散化matlab,[数学]偏