由银联开发包调试引出的Android Studio的一个八哥
由银联开发包调试引出的Android Studio的一个八哥
最近有段痛苦的经历,写出来让大家开心开心! 最近公司的flutter项目由于需要接入银联卡支付,我google了一下,看了一下银联开发的开发文档,不算复杂。就跟老板说,一周能搞定。 于是,下载开发包,申请开发者账号,不过,商户开户(海外)却不知道在那里?有问题?找客服,客服很客气的回答,需要我提供资料,然后她来转给 当地的收单机构跟我们联系。(结果现在都没人跟我联系...?) 项目开始,先弄iOS的,由于这个是需要C++/C混编,这个难不了我,很快,银联卡支付界面出来了,用测试卡测试了一般,搞定! 好顺利啊,心想! 接着开始Android,jar拷贝,lib拷贝,data.bin拷贝,于是,痛苦的事情就发生了。 点击支付按钮,程序一下就崩溃了,Android Studio 显示 java.lang.RuntimeException: Unable to start activity ComponentInfo{xxxxxxx/com.unionpay.uppay.PayActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.io.InputStream.skip(long)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2690) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2755) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1495) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6196) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.io.InputStream.skip(long)' on a null object reference at java.io.FilterInputStream.skip(FilterInputStream.java:151) at com.unionpay.mobile.android.resource.c.a(Unknown Source) at com.unionpay.mobile.android.widgets.m.<init>(Unknown Source) at com.unionpay.mobile.android.widgets.m.<init>(Unknown Source) at com.unionpay.mobile.android.plugin.BaseActivity.onCreate(Unknown Source) at com.unionpay.uppay.PayActivity.onCreate(Unknown Source) at android.app.Activity.performCreate(Activity.java:6698) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2643) 心想,不是吧!有问题,找谷哥! 于是,搜了一般,有人问过,不过回答是 data.bin要拷贝到工程的 assets目录,我查了下,没问题啊,接着用最愚蠢的办法, 把assets/data.bin拷贝到所有的目录下,再运行,还是同样的错误! 查了下银联开发包的反编译代码 if (var14 == null) { InputStream var16 = a.class.getClassLoader().getResourceAsStream("assets/data.bin"); DataInputStream var19 = new DataInputStream(var16); try { .... 心里不禁大骂那些家伙,大猿何苦为难小猿呢?世间的八哥已经是如此伤人! 不得不用各种招数. ......九阳神功.... ............ ....你师傅教了你三路剑法,上中你都没学.... .... ...我底裤外穿... 嘿,醒醒吧! 哎,我不是老总,我只是码工,我整天斗八哥,只是为生活! 看着小孩钢琴练累了,在沙发趴一下,接着起来练,练大提琴累了,往椅子靠一靠,接着练(我自己是把椅子,家里人依靠我,我还能依靠谁呢?) 嘿,醒醒吧!努力!努力! 于是,从一穷二白开始,建一个新的project,引入银联开发包,working.. 接着开始引入插件,二分法排除, ....... ....怎么银联没返回了?(估计我太频繁访问,银联把我拉黑了,)啊,银联大哥,我只是在调试,没力气黑你! ..... 总算找到原因了,原来google 的 crashlytics跟银联的冲突了.. 真正的问题是哪里呢? 接着努力!努力! 总算找到了,于是发邮件给google求助,过了10来分钟,google回复让我把Android Studio 3.4 downgrade 到 3.3.2, com.android.tools.build:gradle:3.4.0也降低版本,于是,我把AS 3.4卸载,重新下载了3.3.2,而且把 com.android.tools.build:gradle:3.4.0也改为com.android.tools.build:gradle:3.2.1, clean project --> rebuild--> run 于是,银联的支付界面总算在Android手机上出来了。 ...... 心里在骂银联的同时,不禁感叹,自己那是什么程序猿,码农,完全是个不折不扣的码奴! 尽管很努力,老板还是觉得这个App怎么老是有问题,而且还想让我当产品经理(PM+PM+ Full Stack+Dev OPs),我一台电脑开着Mysql workbench在建库表,调sql,写存储过程, 还开着Elipse写Spring boot代码,还开着Android Stuido 写java, XCode写OC, Swift,还要开着Visual Studio Code 来写flutter 和 PHP, 天啊,难道还要我开着Visio ?再开Photo Shop? 啊,这不是苹果电脑啊,这是鸭梨! |
谁让你说一个礼拜的,这种有第三方的,先说三个月看看。
|
所有时间均为格林尼治时间 -4。现在的时间是 15:17。 |
Copyright © 1999-2024 Chinasmile