精华内容
下载资源
问答
  • 快速打造一个套壳APP

    千次阅读 2021-03-12 00:09:34
    作为一个前端coder,很少会涉及到需要自己动手打包一个APP的情况,更多的时候,我们都是在现有APP的基础上,以混合开发的模式,将H5页面内嵌到原生APP的webview中。不过,笔者所...

    作为一个前端coder,很少会涉及到需要自己动手打包一个APP的情况,更多的时候,我们都是在现有APP的基础上,以混合开发的模式,将H5页面内嵌到原生APP的webview中。不过,笔者所在的业务线,恰恰接到了一个需要打包一个套壳APP的需求。

    需求背景

    我司门店的大屏内置Android系统,希望在大屏上可以安装一个应用程序,将已有的业务功能页面内嵌进去。

    技术选型

    基于以上需求,技术方案选择采用 APP套壳+内嵌H5页面 的模式,这样,只需要开发个适用于大屏的APP安装包即可。方案确定以后,接下来要做的就是寻找适合的框架来开发App安装包了。

    在对比了业界主流的跨端框架后,对其特点和差异性,简单做了对比和分析:

    框架Android客户端打包方式系统级API
    Electron不支持本地具备
    Cordova支持本地打包具备
    Ionic支持本地打包具备
    Weex支持本地打包具备
    Hippy支持本地打包具备
    Flutter支持本地打包具备
    RN支持本地打包具备
    uniapp支持本地打包、云打包具备
    PWA类原生不需要打包不具备

    从上述调研可以看出,大多数的跨端框架都只支持本地打包。本地打包有以下几个弊端:

    • 本地环境搭建麻烦,一般步骤如下:

      • 安装Android Studio

      • 安装Android SDK并配置环境变量

      • 设置Android模拟器

      • 调试Android设备

    • 多人维护时,每人都需要搭建本地环境,成本较高

    在尝试搭建本地环境时,耗时一天,期间遇到了各种各样的环境问题,苦不堪言,最终只得放弃。而云打包就省去了本地打包的诸多麻烦,简单来说,云打包就是开发者不需要在本地搭建环境,通过共用云端搭建的环境来打包构建安装包。如此一来,开发者只负责写好代码即可,打包的事交给云服务,岂不完美?

    综上,框架自然选择了拥有云打包能力的 uniapp。它可以让我们以很小的代价完成App打包的工作,达到快速开发的目的。至于 PWA ,由于它缺少系统级API能力,也自然不能入选了。

    项目实践

    安装HBuilderX编辑器

    uniapp 的云打包功能,是集成在HBuilderX编辑器中的,因此我们需要先安装HBuilderX编辑器。

    App项目搭建

    新建APP项目

    首先,我们先通过HBuilderX新建个项目。由于我们只需要一个APP的壳,所以选择默认模板即可。

    使用Vue脚手架创建的项目也可以,但是需要手动创建 manifest.jsonpages.json 文件,HBuilderX新建项目时,会自动创建所需的配置文件。因此,建议直接在HBuilderX上创建项目。

    新建的项目目录结构如下:

    项目搭建好后,开始改造工作。

    原生页面改造

    就需求而言,一共需要两个原生页面:首页webview

    首页 只承担开屏海报页功能。webview 用来承载 H5 页面。

    首页:index.vue

    因此,我们一共需要创建两个页面。首先,我们来改造首页 index.vue

    首页只有一个交互,就是跳转到webview页。

    webview页面:webview.vue

    下面我们来新建个webview页面 webview.vue

    H5 页面链接配置到 webview 组件的 src 属性上即可。

    原生页面路由配置

    页面的改造已经完成,接下来我们改造路由配置 pages.json

    这里需要说明下:起初,webview页使用的不是 custom 模式,而选择使用默认导航栏。但是默认导航栏有个问题,它的高度是固定的 44px ,无法实现响应式,大屏设备的尺寸很大,导致在大屏上导航栏特别小,尤其返回按钮,点击时很难命中。期间,有尝试使用 uniapp 提供的自定义导航栏,奈何它在webview页面不会生效。最终,我们选择了 custom 模式,在 H5 页面上实现导航栏效果。

    另外,除了原生导航栏问题,对于客户端APP来说,还有个很重要的体验问题,就是界面顶部的状态栏。如何隐藏系统的状态栏呢?uniapp官方也给出了方案。由于我们是要全局隐藏,所以在 App.vueonLaunch 钩子函数中,添加 plus.navigator.setFullscreen(true) 即可,如下:

    <script>
     export default {
      onLaunch: function() {
       plus.navigator.setFullscreen(true)
      }
     }
    </script>
    

    路由配置完成后,接下来需要进行应用的相关配置 manifest.json

    应用配置

    基础配置

    首先来看 基础配置

    这里的 AppID 是在 uniapp开发者中心 创建应用时 DCloud 云端分配的,如果是多人合作的项目,记得进入应用,添加项目成员。

    App图标配置

    接下来进入到 App图标配置

    项目的图标都存放在 static 目录下,否则会找不到文件。

    以上,我们的项目改造和配置工作就完成了,接下来开始我们的打包之旅。

    云打包

    在HBuilderX编辑器中,点击 工具栏 - 发行 - 原生App-云打包

    弹出如下窗口,选择 Android(apk包) ,定义自己的 Android包名 ,选择 使用公共测试证书 ,接着选择 打正式包 ,最后点击 安心打包 即可,如下图:

    打包之后,会看到控制台的输出如下:

    如果打包完成,会在本地项目的 /unpackage/release/apk/ 文件夹下,生成本地的安装包。老版的HBuilderX会将安装包放到云上,打包完成后给出下载地址,而且这个下载地址是有下载次数限制的。v3版本更新后,直接打包在本地,免去了下载次数限制的烦恼。

    这里需要注意下,uniapp 的云打包虽然极大方便了我们生成安装包,但是因为是公用资源,每个账号每天的打包次数是有上限的,uniapp 官方并不建议频繁打包调试,建议大家在使用时,本地充分测试后,再进行打包。

    若同一时段内,使用云打包的人较多,控制台会显示 队列中 ,耐心等待即可。

    原有H5项目改造

    内嵌在webview中的H5页面,少不了要和首页交互,比如返回首页功能,因此还需要对H5页面进行改造。

    由于H5页面是多端复用,需要对大屏进行单独处理,所以先要根据 userAgent 判断终端。uniapp 官方是支持自定义 userAgent 内容并可选择追加模式,不过实践得知,并不生效。

    配置路径在 manifest.json源码视图 中配置。

    既然不能实现自定义,那就只能获取默认的 userAgent 来作为判断终端的依据了。好在目前只有这一个APP,倒也可用。

    判断终端的方法如下:

    window.navigator.userAgent.indexOf('uni-app Html5Plus') > -1
    

    若要与原生页面交互,还需引入 uniapp 的SDK uni.webview.1.5.2.js

    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
    

    如此,便可调用 uniapp 的方法了。比如:点击返回首页按钮,回到 index 海报页,可使用:

    uni.redirectTo({
      url: '/pages/index/index'
    })
    

    如此,项目打造的详细步骤已经全部完成,赶紧找个安卓手机,安装试试吧~

    遇到的问题

    整个项目打造的过程中,坑点不多,导航栏状态栏userAgent 的问题,前面已经介绍过,这里不再赘述。接下来主要说下打包遇到的问题:

    1. 运行环境版本和编译器版本不一致

    这个问题是由于uni-app添加了运行环境版本和编译环境版本的校验机制导致的,官方文档:uni-app运行环境版本和编译器版本不一致的问题有很详细的说明,具体请参照文档。

    1. 若代码中使用了scss/sass语言,而HBuilderX没有安装相应插件,预编译阶段会提示:

    点击控制台提示链接,跳转到指定页面,按提示安装插件后,再重新编译打包即可。

    1. 权限拦截

    打包过程中,如果遇到上述提示,请检查 manifest.jsonApp权限配置 中是否勾选了某权限,但是系统又不允许,若是且此权限不是必须,可取消勾选,再重新打包。

    总结

    有同学可能会问,本着专业的人做专业的事的原则,原生App的工作不是应该交给客户端同学来做吗?在这里说明下,之所以这个工作前端同学来做,原因有三:

    1. 当时这个安装包要的很急,门店开业在即,客户端同学资源有限,排期比较靠后

    2. 我司的客户端同学,属于业务支撑性质的部门,几乎所有的业务线需求都是H5实现的,所以注定了客户端同学不可能持续跟踪迭代版本更新,所以这个安装包如果能由前端同学来负责开发是最好的。

    3. 有最合适的框架做技术支撑,可能让我们很轻松地完成,理所当然承担起了这个工作。

    基于以上原因,并不是笔者心血来潮盲目就要做客户端,是做了充分考虑的,希望大家在对待需要开拓的领域或新的框架时,可以保持冷静,仔细端详。

    最后

    目前,该APP已经在我司直营门店的大屏上投入使用了将近一年的时间,体验良好,欢迎大家到门店参观体验。截止发稿,北京、青岛、郑州的小伙伴,可以去到当地的商场参考,今年会陆续在多个城市开设门店,期待大家的关注。具体地址可通过百度或者大众点评搜索关键字【转转Up | 手机回收】,上面有具体地址。

    附录效果视频

    感谢你的阅读,有任何问题,欢迎评论区留言讨论,互相学习。

    展开全文
  • 在手机或虚拟机上安装BlackDex32,在软件中选择你要去壳APP(ps:要先把apk安装上,不然找不到), 在软件中可以指定去壳后的文件存储路径,到对应位置下找到apk的包名即可找到去壳后的dex文件 3.回到MT管理器,...

    1.拿到apk包时,第一步先判断是否加壳,加的是什么壳

    在手机上或者虚拟机上用MT管理器找到对应的apk包
    在这里插入图片描述
    可以看的这个包虽然说是未加固,但还有个伪百度加固,其实也就是加了百度的壳

    2.利用BlackDex32进行去壳

    在手机或虚拟机上安装BlackDex32,在软件中选择你要去壳的APP(ps:要先把apk安装上,不然找不到), 在软件中可以指定去壳后的文件存储路径,到对应位置下找到apk的包名即可找到去壳后的dex文件
    在这里插入图片描述
    在这里插入图片描述

    3.回到MT管理器,打开脱壳的后dex与未脱壳的dex进行比较

    未脱壳的:
    在这里插入图片描述
    脱壳后的:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    可以看到,第一个是一些测试用代码,第二个是百度的壳相关代码,第三个是真正隐藏起来的代码,第四个和暴露出来的代码一致。
    那么就简单了,保留第三个和第四个,其他的都不要了。

    4.还是用MT管理器修改你想破解的代码

    在这里插入图片描述
    可以看的源码跟java类似,但还是很难解读,这就需要预先了解一些smali语法了。

    5.修改原始apk包

    1. 将之前修改好的dex文件重命名为classes.dex,用MT管理器查看原始apk包,将原始的dex文件重命名为classes1.dex,将新的dex文件拖进去
    2. 打开assets文件夹,将里面带baidu字样的全都删掉,再打开lib下的armeabi文件夹,同样把带baidu字样的so文件全都删掉
    3. 打开AndroidManifest.xml文件,找到application标签里的android:name属性,这里的启动类是假,根据内容找到对应的代码文件去寻找真正的启动类
      在这里插入图片描述
      打开对应的AppInfo文件,找到真正启动类
      在这里插入图片描述
      在这里插入图片描述
    4. 将真正的启动类替换掉假的启动类,保存退出

    6.长按apk包,对apk进行签名,签名完后将之前的安装的删掉,重新安装破解的即可

    以上只是浅显的针对我的那个apk进行的简单破解,很大概率可能还是解决不了你的问题,具体问题还是得具体分析,当然如果能对你有所帮助,那我也很开心能帮上忙。

    展开全文
  • Android 如何利用WebView组件套壳APP

    千次阅读 2020-01-05 22:03:50
    有时候我们工作中很多项目并不会专门做一个APP端,但是,我们却又需要这么一个APP端。这个时候WebView就可以很方便的帮助我们快速套出一个APP程序

    序言

    有时候我们工作中很多项目并不会去专门做一个APP端,但是,我们却又需要这么一个APP端。这个时候WebView就可以很方便的帮助我们快速套壳出一个APP程序

     

    一.套壳APP

    1.新建一个项目,把新建项目的Activity的最外层布局改成WebView,删去自带的TextView,并给WebView布局加个id

     2.在MainActivity中声明一个WebView,并指向Activity中的id,

    3.在这里先声明让WebView组件跳转后支持JavaScript,默认情况下WebView组件跳转后是不支持JavaScript的

    //让跳转支持JavaScript
    wb.getSettings().setJavaScriptEnabled(true);

    4.加载该网站,这里还没完呢,继续往下看

    //加载该网站
    wb.loadUrl("http://www.baidu.com/");

    5.找到AndroidManifest

    6.在其中去注册我们的网络权限,否则WebView组件无法获取网络权限,无法联网加载我们的Web端网站

    //注册网络权限
    <uses-permission android:name="android.permission.INTERNET" />

     

    到这里,我们基本的就已经做好了,可以跑起来了


    二.常见问题

    我们发现已经套壳好的Android APP跑起来会调用起第三方的手机浏览器,而且你打开后台页面还能看到空白的Activity在后台,这样根本没达到我们所要的效果,我们需要的是在程序中跳转,不调用浏览器,无声无息的跳转,仿佛一个真的APP一样的那种

    我们只需要在加载网站代码“loadurl()“前调用一个方法

    //默认调用浏览器,不是自己变成该网站
    wb.setWebViewClient(new WebViewClient());

    必须要在加载网站前面去加,代码执行顺序基本原则是从上往下跑的,这么说你该懂了吧,像这样

    展开全文
  • 不好用别怨我,这是提取自目前里番新番动漫资源站好萌 nicemoe.com 的软件源码,给大家新人学习交流的,看看WebView怎么,话说这用的是advanceWebView这个项目
  • AndroidKiller破工具
  • 直接调用这个接口 api.closeWidget();

    使用H5打包的apicloud web app,需要退出App时,可以直接调用这个接口

    <div onclick='closeApp()'>直接退出!</div>
    <script>
        api.closeWidget({
          silent:true // 静默退出
        });
    </script>
    

    ApiCloud api接口可以直接在Web App里使用
    https://docs.apicloud.com/Client-API/api#14

    展开全文
  • 【Android组件化】app壳工程

    千次阅读 2020-04-09 14:55:03
    组件化中需要一个app壳工程,这个工程中不处理任何业务,就只是一个空壳,由它将所需要的各个组件模块组合起来,构成一个完整的应用。 直接new一个module 接着进入app的AndroidManifest文件将注册Activity...
  • 为uni-app电脑网页套个手机外壳问题解决思路解决思路一:改变原有样式适应PC浏览器解决思路二:让用户用F12查看解决思路三:套个手机,在手机内浏览难点解决方案 问题 在UniAPP发布过程中,你有没有遇到过这种...
  • iOS App

    2018-09-05 03:12:07
    总结2种方式: 1.dumpdecrypted ...2.连接已经越狱的手机打开要砸App执行命令 ps -e 复制代码如找到App信息 /var/containers/Bundle/Application/F7918A60-542F-4BE4-B999-C42A0181AC2A/Ledol...
  • App解固脱壳方式

    千次阅读 2020-10-30 11:41:12
    一、常见的 通常是看lib文件夹下so库特征,以下是市面上常见的不同厂商对APP的加固特征: 爱加密:libexec.so,libexecmain.so,ijiami.dat 梆梆: libsecexe.so,libsecmain.so , libDexHelper.so libSecShell....
  • iOS逆向工程之App脱壳

    2017-08-10 10:19:27
    "砸"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸”的过程就是一个解密的过程。未砸App是无法在Class-dump、Hopper等工具中使用的。所以...
  • iOS逆向之砸壳app

    千次阅读 2017-07-27 09:33:21
    1.准备工具 Cycript: ...dumpdecrypted:(砸) github地址:https://github.com/stefanesser/dumpdecrypted 下载之后终端操作生成dumpdecrypted.dylib Class-dump:(导出头文件) 地址:http
  • 最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三。于是,我在应用宝上下载了贝壳release apk。 点击此处下载贝壳找房Apk 点击此处下载反编译debug包 Apk存在的漏洞 下面进入正题,一文让...
  • Android App脱壳

    2020-10-29 15:56:16
    利用drizzleDumper去壳 工具下载链接 参看文章https://www.jianshu.com/p/e2850b03a1fd?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 下载链接 链接: ...
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    047 魔法方法:定制序列 048 魔法方法:迭代器 049 乱入:生成器 050 模块:模块就是程序 051 模块:__name__='__main__'、搜索路径和包 052 模块:像个极客一样思考 053 论一只爬虫的自我修养 054 论一只爬虫的...
  • 主要介绍了iOS逆向工程使用dumpdecrypted工具给App脱壳的相关资料,本文图文并茂给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
  • 从事渗透这个行业,我相信百分之九十的人都是安服仔,安服仔就是要什么都懂一点点但是又不精通,碰到了困难也没办法从底层的原理解决,但是为了能在这个社会混上一口饭,安服仔永远都是那种最拼命的人,那种干劲是...
  • APP爬虫技术总结

    万次阅读 多人点赞 2019-05-05 21:13:46
    APP常用抓包技术 - 工具 Charles,fiddler,burpsuite,Packet Capture等,具体操作可以查找百度 - 抓包方法 a.常规操作直接抓 b.使用Xposed+JustTrustMe关闭SSL证书验证抓包 关闭SSL证书校验之前抓包
  • native APP,hybrid APP和web APP

    万次阅读 多人点赞 2018-08-29 18:53:49
    native APP,hybrid APP和web APP三者的区别 随着智能手机的普及,移动端应用几乎成为每个互联网产品的标配。在快速迭代的互联网战场中高效开发、低成本上线产品,是每个应用开发团队追求的目标。此时,选择合适的...
  • IOS应用逆向工程之App:通过dumpdecrypted.dylib
  • 文章目录 背景 首先判断App二是否已经安装 跳转方式一(通过给intent设置data实现) 跳转方式二(通过给intent设置ComponentName实现... } 上面的三种方式均测试通过,同学们自己实践一下。 技术永不眠,我们下期见!
  • 中国平安财险科技中心,一个程序员把产品经理给打了,原因是产品经理提出一个需求:根据用户手机的颜色可以改变App的主题颜色.....然后他就被程序员给打了。 很多程序员看到这样的新闻,包括我,都会拍案叫好,...
  • 从移动端爬取-贝壳数据

    千次阅读 2019-09-19 10:53:11
    7我们用fiddle抓包,抓到贝壳连接,发现红框中的参数是变化的,我们要自动生成参数,所以我们反编译器jadx中查询该参数的生成方法 这样就能看到该方法的生成过程 至于获取端口 是为了 调试使用,...
  • 用Frida对APP脱壳

    千次阅读 2020-10-31 11:31:18
    加壳apk运行流程:app启动后-->dex先加载起来-->把源classes.dex读出来-->解密源classes.dex-->把源classes.dex给加载进内存-->源dex运行起来 下两篇文章都对dex进行了详解 Dex文件格式详解 ...
  • 大家应该都体验过有屏手持设备的语音交互,如Siri以及各种语音助手App,我们把这种采用单颗麦克风进行拾音及识别的场景叫做近场语音识别。 近场语音存在一些先天性的缺陷: 1)近距离讲话:1米以内交互效果较好,...
  • 贝壳赚app脚本代码 用autojs编写 不做利益他用,只供研究学习。 再者,这app够垃圾的,三天两头更改规则、更新,烦透了,就TM几毛钱而已,你改规则那么频繁,那么狠做什么,看那么多广告,还没给你赚死啊~~ 估计这...
  • 学习别人家的优秀app 越狱的过程: 1.先用un越狱ios13.5.1 各种折腾,失败;找了一台iOS 12.5.1爱思越狱,各种折腾,然后失败;某鱼花200买了台iOS10 iphone 5s,越狱失败(Cydia闪退且无法抹除数据);再买一台...
  • 目前主流应用程序大体分为三类:Web App、Hybrid App、 Native App
  • app 嵌套h5页面问题

    千次阅读 2020-01-09 19:12:44
    1.app与h5页面方法监听与参数传递 2.Android webview 如何打开本地存储,提供给JS调用 html5 的lwindow.localStorage功能,还有其他的权限 3.Android与Js交互之JSBridge的使用的坑 4.app内打开h5页面先显示一篇...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,922
精华内容 4,768
关键字:

去壳app