首页 文章 精选 留言 我的

精选列表

搜索[安全修复],共10010篇文章
优秀的个人博客,低调大师

Android VirtualApk热修复

1. VirtualApk项目地址 下载并解压后的目录结构如下,其中PluginDemo是官方写的一个示例 图1.png 2. 使用Android Studio直接打开VirtualAPK-master项目 运行项目将其安装至手机上。安装成功之后,在VirtualAPK-master/app/build/VAHost/文件夹下生成如下文件 图2.png 3. 打开PluginDemo工程 在Android Studio中使用Terminal命令行工具,执行gradlew clean assemblePlugin 执行后如果报如下错误: * What went wrong: A problem occurred configuring project ':app'. > The directory of host application doesn't exist! Dir: F:\source\Program\VirtualAPK-master\VirtualAPK-master\PluginDemo\..\..\VirtualAPK\app 解决方法为: 进入/app/build.gradle中,找到virtualApk节点 图2.png 将其中的targetHost的值更改为"../app",更改后如下图: 图3.png gradle同步后,再次使用Terminal工具执行 gradlew clean assemblePlugin,执行成功后,在/app/build/outputs/plugin文件夹下生成如下文件 图4.png 4. 导入SDCard 将beijingRelease或者shanghaiRelease文件夹下的apk复制到手机的/sdcard/路径下,并命名为Test.apk。 使用adb push命令推入 adb push F:\source\Program\VirtualAPK-master\VirtualAPK-master\PluginDemo\app\build\outputs\plugin\beijingRelease\com.didi.virtualapk.demo_20180102163314.apk \sdcard\Test.apk 5. 测试 打开VirtualAPK,点击加载插件,如果成功跳转到一个新的Activity,则说明加载插件成功。 图5.png

优秀的个人博客,低调大师

Android Tinker热修复

1. tinker项目地址 下载并解压后的目录结构如下,其中tinker-sample-android是官方写的一个示例 图1.png 2. 使用Android Studio直接打开此示例 打开后Gradle依赖会出现问题,将其注释后继续同步,直到出现如下错误: Error:Execution failed for task ':app:tinkerProcessDebugManifest'. > tinkerId is not set!!! 图2.png 3. 解决tinkerId is not set!!! 打开/tinker-master/tinker-sample-android/app/的build.gradle文件,找到gitSha()方法,将gitRev变量的值设置为一个常量,修改后如图4. 图3.png 图4.png 4. 打debug包 使用gradlew assembleDebug命令打一个debug的包,成功运行后在/app/build/目录下生成一个bakApk文件夹,并在bakApk文件夹下生成形如app-debug-时间.apk与app-debug-时间-R.txt文件,可能会更多,但我这里就只有两个,如下图: 图5.png 5. 文件内容修改 将app-debug-1228-17-15-24.apk的文件名中的时间1228-17-15-24复制,找到/tinker-master/tinker-sample-android/app/的build.gradle的ext函数块(如图6),并将图6中的红色框中的时间全部替换为刚刚所复制的时间,修改后同步工程。 图6.png 6. 生成patch包 使用gradlew tinkerPatchDebug命令生成patch包,此包的路径为/app/build/outputs/tinkerPatch/debug/目录。 图7.png 7. 将上一步生成的patch_signed_7zip.apk包放在手机的内存卡目录下(/sdcard/) 使用命令直接推送 adb push ./app/build/outputs/tinkerPatch/debug/patch_signed_7zip.apk /storage/sdcard0/ 8. 测试 打开示例后,点击LOAD PATCH,显示出Toast的内容为"patch success, please restart process", 即代表加载成功,此时需要重启app,点击KILL SELF,然后再次打开app,点击SHOW INFO即可显示如下内容 图8.png

优秀的个人博客,低调大师

Android热修复技术

更新版本一直以来是移动端的一大痛点,各大公司也推出了相应的解决方案。 1)AndFix(阿里巴巴):兼容性不太好,亲试过,上线反馈崩溃问题特别严重。 2)Tinker(微信):集成起来是相当的麻烦 看完http://blog.csdn.net/u010983881/article/details/53196574这个链接,基本就能接入了。 但是还有一些需要补充的 1》Android的一些编译打包命令:http://blog.csdn.net/dakaring/article/details/44944139 2》怎么保留自己的Application:http://blog.csdn.net/cao126197103/article/details/54693760 3》Tinker id is not set错误:(将tinker id写死,如果没有使用git管理代码就会出现此问题) 4》加载补丁包失败,通过tinker过滤日志,查看失败原因。有时也要结合源码 5》Tinker多渠道打包:https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97#%E5%A4%9Aflavor%E6%89%93%E5%8C%85 6》常见问题:http://blog.csdn.net/tyk9999tyk/article/details/53391519 7》TinkerInstaller.install(this) Tinker instance is already set的问题 http://www.jianshu.com/p/9680a58e67fe 8》使用了Tinker的项目,在运行的时候无法使用Instant-Run。 线上应用的问题: 1)app如果打了一次补丁,再从市场上更新app,点击桌面应用图标,app启动不起来。(巨坑!!) 后来给Tinker项目提了个issue,才得知我把tinkerid写死了。tinkerid应该每个版本都不一样 比如3.3.7更新了补丁,到了3.3.8版本,然后从市场更新到了3.3.9版本。这3个版本的tinkerid要两两互不一样。否则就会出现以上问题。 2) 本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1929242,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册