0

    【原创文章】Ecmobile修改进阶篇一

    2023.07.23 | admin | 123次围观

    今天,对广州来说是一个风和日丽的日子,有阳光,温度适中,没有雾霾。这几天折腾ecmobile,遇到一些很有意思的东西,想写下来,算是一个见证。转眼间在蔬菜种子电商这行业已经摸爬滚打很多年,很多很多年前,花了3个月的时间修改pc端的ecshop程序,添加产品,这么多年来修修补补,升级更新。经过这么多年的准备,在内容、资料、产品、货源、物流等各方面的准备已经成熟,最近重新升级了ecshop pc端,同时也做了wap端和app端。最近弄这个app端比较曲折有意思,记录下来,以备后用,也和朋友们分享。

    最开始并不知道还有这种开源的针对ecshop的开源APP源码,一直在网上搜索资料,本来还准备自己试试的,没想到还有这种开源项目,在看到的那一刻,我也是惊呆了。立马下载,着手研究这个代码。首先介绍下这个ecmobile,从官方资料及他们微博来看手机网站错误代码101,技术骨干就是从ecshop团队出来的技术人员,难怪做了这么一个app开源项目,ecshop使用量这么大,他们的这个开源是非常有前瞻性的。ecshop,ectouch,ecmobile,现在全部都是开源代码。源码可以在他们的官网,或者下载。源码包总共有4个部分,包括Android端,苹果端及php端代码。

    ECMobile_Universal-master:这是基本框架,ECMobile_iOS-master:苹果端源代码,ECMobile_PHP-master:php端源代码,也就是需要放到你ecshop网站的代码,ECMobile_Android-master:Android端app源代码。

    下载这个源代码之后,那么就需要一个环境来修改代码、编译代码,生成APP,这里我使用的eclipse来编译的,至于这个,有一个详细教程,,说明的非常清楚,怎样架设的过程就不一一赘述了,但是有两个地方要注意,就是eclipse的两个设置问题,不弄好可能编译不成功。第一个是“打开eclipse 后,菜单【window】-【Preferences】-【General】-【Workspace】-【Text file encoding】-【Other】选择UTF-8 ”,第二个是“继续上一步操作菜单【window】-【Preferences】-【Android】-【LInt Error Checking】-【Correctness Messages】-【MissingTranslatior】右下【Severity】-【Warning】“。我是中文版的eclipse,那么位置就是菜单中的”窗口“-”首选项“-”常规“-”工作空间“,第二个是”首选项”是android。

    导入项目的时候先导入框架ECMobile_Universal-master,再导入ECMobile_Android-master。项目弄好后,他这个需要“构建路径”,原始项目文件中的android-support-v4.jar的路径是错误的,他不是windows路径,需要修改为正确的路径,这个jar在它自带的alipay_lib\libs下面 就有,重新定位就好了。

    之后就可以噼噼啪啪的生成APK文件了。

    拖到android手机测试了一下,结果如下

    首页只是显示动画的三个照片和促销产品,没有目录信息。点击“搜索”,总是弹出“网络错误,请检查网络设置”的提示。于是由此开始我一个星期查找原因的道路。

    由于对这种架构模式不是很熟悉,刚刚开始还不知道从何开始,他既不是纯粹的php语言,也不是c++类似的语言。刚刚一开始不知道从哪里下手。由于ecmobile可能刚刚开始网上的资料基本为零,项目本身的文档就是一个简单的介绍,就像ecmobile本身宣传所说:由 Web 站生成一个原生移动商城需要几步?ECMobile 的回答是:“我只需要一个文件夹”,确实放一段代码,就可以生成一个相应的APP。然而离真真使用还是有相当一个距离的。于是我在官方论坛及Q交流群咨询,官方论坛是一片死寂,没有一个人回复,没有任何交流与讨论。QQ群有人热心帮忙,可以我仔细查看之后,并不是原因,所在。于是自己开始一遍一遍的摸索ecmobile的运行原理,查看代码,想追踪到原因。要找到原因,首先要知道APP是怎样和pc端的php代码交互的,可是这并不容易。从直观思维来看,app首页不正常,那么我首先是检查app代码的首页相关代码,翻了几遍官方的ECMobile_Android_UI.pdf,和首页有关的java及xml是:B0_IndexFragment.java,B0_IndexAdapter.java,b0_index.xml,b0_index_banner.xml,b0_index_banner_cell.xml,b0_index_hot_cell.xml,b0_index_category_cell.xml,这些地方没有动过,迷茫不知从何下手。

    app是怎样post信息的没有搞明白,于是想去看看php端是怎get信息的。偶然发现了ecmobile的接口测试工具/ecmobile/test/,我测试每一个接口,在这里发现了问题。

    当提交/home/data时返回数据正常

    当提交/home/category时返回了首页的数据,明显错误

    从这个接口工具,经过检查对比代码和app首页的产品,搞明白APP post过来的数据是在

    ecmobile\controller\home\data.php

    ecmobile\controller\home\category.php

    这两个程序处理的,只是data.php返回了正确的数据,而category.php则返回了错误。由于代码没有动过,基本无从下手。由于category.php的编码是gbk,开始还以为是编码的问题,可是编码改为utf之后问题依旧。

    经过无数次测试和检查代码,也从这个错误返回信息意识到,他这个post的信息首先是交给了ecmobile/index.php,然后再派给了home来处理,

    经过n天的测试,在这里发现ecmobile/test/index.php传给ecmobile/index.php?url=的数据是错误的。

    index.php中get新的代码为

    $url = _GET(‘url’);

    当post home/data.php时,ecmobile/index.php接受的是home/data,所以这里地址正确,在这里地址拼接为controller/home/data.php

    但是当post home/category时,接受的url为home/index.php,他的地址就变为了controller/home/index.php.php

    这样肯定是没有数据的,路径错误。当时非常奇怪,为什么其他所有的数据都接受正常,只有是home/category的时候就成了index.php。

    首先是检查了 _GET函数,以为这个函数做了什么错误处理手机网站错误代码101,在这个函数中发现$ _GET接受过来的数据也是index.php。

    一阵阵的崩溃,既然这里接受的数据是错误的,那么按理说就应当是发送时出问题了,从test/index.php发送过来的值就已经是index.php。

    于是开始一遍一遍研究test下面的文件 ecmobile.json和index.php,json是java的脚本文件,研究了整个脚本的结构和数据,home/category与其他接口在结构和数据上没有任何差别。

    于是研究index.php,通过各种测试,发现在ajax的error函数处总是被激活。

    在error处的url数据是正确的,在整个index.php中所有的url截获过来的值都是home/category。在某一天稍微休息好的情况下,猛然想起,要看这个index.php post的值是不是正确,抓包不就可以了吗?

    post的数据是home/categery,没问题的。经过了差不多一周的糊弄,也许是那天比较清醒。我直接ecmobile/index.php?url=home/category测试,从index.php中截获url的值,竟然也是index.php!!!!!!

    这个时候才搞明白这个问题与ecmobile没有关系,多么痛的领悟啊!!

    不是ecmobile的问题,那是什么问题?这个时候我才猛然想起那个ISAPI_Rewrite,马上翻开httpd.ini

    RewriteRule ^(.*)/category$ $1/index\.php

    问题就在这里了,# 掉这个规则,世界马上美好了,真是成也伪静态,败也伪静态!!!!APP端也正常了。

    在这里简单记录下怎样截获变量值

    $logofile =’log.html’;

    file_put_contents($logofile, $data.”

    ”,FILE_APPEND);

    其他的log’函数测试了好多个都不成功,这个还是相当好用滴。把“file_put_contents($logofile, $data.”

    ”,FILE_APPEND);”插入任何一个想截获变量的地方,就可以获取想要的值了。

    好吧,一个痛苦的5天,记录下来,也算搞明白了ecmobile一个简单的post,get数据的流程,或许可以让您少一个不眠的5天呢。

    转载请注明:百蔬君 » 【原创文章】Ecmobile修改进阶篇一-详解追踪ecmobile app首页不显示分类、搜索提示网络错误的原因及分享剖析思路

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    标签: ecmobileurl
    发表评论