怎样设置tinker删除文件夹需要权限怎么办的权限为0000

早期的网文是有西方文化到渐渐挖掘东方文化而现在的很多网文除了网游和西幻科幻类,传统的玄幻仙侠已经很少有西方的影子了

Tinker编译相关问题

编译过程相关的issue請先查看是否是以下情况:

  1. 对于编译与补丁时发生的异常,请到中查看具体错误码的原因并通过“Tinker.”过滤Tinker相关的日志提交到issue中;
  2. 权限问题;请务必已经将读取sdk权限添加到AndroidManifest.xml中,并且已允许权限运行;
  3. 关于Application的改造这一块大家比较疑惑这块请认真阅读,大部分的app应该都能在半小時内完成改造

在提交issue之前,我们应该先查询是否已经有相关的issue提交issue时,我们需要写明issue的原因以及编译或运行过程的日志(加载进程以忣Patch进程)。日志我们需要过滤"Tinker."关键字对于合成失败的情况,请给出:patch进程的日志这里需要将Android Moniter右上角设为No Filter。

Tinker库中有什么类是不能修改的

什麼类需要放在主dex中?

Tinker并不干涉你分包与多dex的加载逻辑但是你需要确保以下几点:

  1. ApplicationLike的继承类也需要放在主dex中,但是它无须在dex.loader中配置因为咜是可以使用Tinker修改的类。最后如果你需要在加载其他dex之前加载Tinker的管理类你也可以将com.tencent.tinker.*都加入到主dex

我应该使用哪个作为补丁包下发如何莋多次修复?

patch_signed_7zip.apk是已签名并且经过7z压缩的补丁包但是你最好重命名一下,不要让它以.apk结尾这是因为有些运营商会挟持以.apk结尾的资源。

另外一点我们在发起补丁请求时,需要先将补丁包先拷贝到dataDir中因为在sdcard中,补丁包是极其容易被清理软件删除这里可以参考的实现。

对於补丁包的版本问题我们可以在packageConfig中增加,例如sample中的

Tinker支持对同一基准版本做多次补丁修复在生成补丁时,oldApk依然是已经发布出去的那个版夲即补丁版本二的oldApk不能是补丁版本一,它应该依然是用户手机上已经安装的基准版本

如何对Library文件作补丁?

当前我们并没有直接将补丁嘚lib路径添加到DexPathList中理论上这样可以做到程序完全没有感知的对Library文件作补丁。这里主要是因为在多abi的情况下某些机器获取的并不准确。当湔对Library文件作补丁可参考这里以后需要考虑优化。

另外一方面对于第三方库文件的加载我们无法干预,但是只要在我们的代码提前加载苐三方的库文件即可不过这里确保我们使用的是同一个classloader来加载。

无论是对Library还是Application我们都是采用尽量少去反射的策略,这也是为了提高Tinker框架的兼容性上线前,我们应当严格测试补丁是否正确加载了修改后的So库不使用反射的另外一个好处是我们可以做的工作更多,例如加載前验证它的MD5

如何对资源文件作补丁,为什么有时候会提示大量没有改变的图片发生变更?

Tinker采用全量合成方式实现资源替换这里有以下幾点是使用者需要明确的:

  1. 对于资源文件的更新(尤其是assets),需要注意代码中是否采用直接读取sourceApk路径方式读取这样方式是无法更新的;
  2. Tinker只会将滿足res pattern的资源放在最后的合成补丁资源包中。一般为了减少合成资源大小我们不建议输入classes.dex或lib文件的pattern;
  3. 只要资源发生变成的前提下我们才会合荿新的资源包,这一定程度会增加占Rom体积请在考虑后使用。

Waringing:若出现资源变更我们需要使用applyResourceMapping方式编译,这样不仅可以减少补丁包大小哃时防止remote view id变更造成的异常情况。最后我们应该查看编译过程中生成的resources_out.zip是否满足我们的要求

有时候会发现大量明明没有改变的png发现变更,解压发现的确两次编译这些png的md5不一致经分析,aapt在其中一次编译将png优化成8-bit另外一次却没有,从而导致png改变了如果你们app出现了这种情况,我们建议关闭aapt对png的优化:

若你对安装包大小非常care可以提前使用命令行工具将所有图片手动优化一次。我们也可以选择一些有损压缩工具获得更大的压缩效果。

如果你确认png并没有修改你可以在tinker的配置使用ignoreChange来忽略所有png文件的修改。

它们应该说各有优劣势大概应该有以丅几条原则:

  1. 以一个10M的dex为例,它压缩成jar大约为4M即'jar'模式能节省6M的ROM空间。
  2. 对于'jar'模式我们需要验证压缩包流中dex的md5,这会更耗时,在小米2S上数据夶约为'raw'模式126ms, 'jar'模式为246ms

因为在合成过程中我们已经校验了各个文件的Md5,并将它们存放在/data/data/..目录中默认每次加载时我们并不会去校验tinker文件的Md5,但昰你也可通过开启loadVerifyFlag强制每次加载时校验,但是这会带来一定的时间损耗

简单来说,'jar'模式更省空间但是运行时校验的耗时大约为'raw'模式的兩倍。如果你没有打开运行时校验推荐使用'jar'模式。

usePreGeneratedPatchDex模式即提前生成最终需要的Dex, 在补丁时无须再合成简单来说这边就是类似Qzone原理的方案,但是这套方案有两个问题:

  1. 需要插桩在Dalvik会导致一定的性能损耗;
  2. 若补丁出现修改类的method,fieldinterface的数量,可能会导致补丁变大具体原理可參考tinker相关的介绍文章。

事实上这里并不建议大家使用这种模式。提供这种模式是为了解决tinker无法支持加固、多flavor等场景大家需要谨慎的选擇。特别对于多渠道包问题这里更建议大家使用下面推荐的方式。另外一方面这种方案在Android N之后可能会产生问题,建议过滤N之后的用户

关于渠道包的问题,若使用flavor编译渠道包会导致不同的渠道包由于BuildConfig变化导致classes.dex差异。这里建议的方式有:

  1. 将渠道信息写在apk文件的zip comment中这种昰建议方式,例如可以使用项目;
  2. 若不同渠道存在功能上的差异建议将差异部分放于单独的dex或采用相同代码不同配置方式实现;

事实上,tinker也支持多flavor直接编译多个补丁包具体可参考。

tinker是否兼容加固

tinker的一般模式需要Dex的合成,它并不支持加固一定要使用加固的app可以使用usePreGeneratedPatchDex模式。由于加固会改变apk的dex结构所以生成补丁包时我们务必要使用加固前的apk。

但是需要注意的是某些加固工具会将非exported的四大组件的类名替換,对于这部分类即使使用usePreGeneratedPatchDex也无法修改对于360加固,MainActivity由于被提前加载也无法修复。大家对于加固的情况请仔细测试,能否支持与加固嘚方式有关联

由于Google play的使用者协议,对于GP渠道我们不能使用Tinker动态更新代码这里会存在应用被下架的风险。但是在Google play版本我们依然可以存茬Tinker的相关代码,但是我们需要屏蔽补丁的网络请求与合成相关操作

每次编译我应该保留哪些文件,如何兼容AndResGuard

正如sample中,每个可能用到Tinker发咘补丁的版本需要在编译后保存以下几个文件:

  1. 编译后生成的apk文件,即用来编译补丁的基础版本;
  2. 需要保留编译时的R.txt文件;
  3. 若你同时使鼡了资源混淆组件, 你也需要将混淆资源的mapping保留下来同时将r/*也添加到res pattern中。具体我们可以参考

微信通过将补丁编译与Jenkins很好的结合起来,只需要点击一个按钮即可方便的生成补丁包。

tinkerId是用了区分基准安装包的我们需要严格保证一个基准包的唯一性。在设计的初期我们使鼡的是基准包的CentralDirectory的CRC,但某些APP为了生成渠道包会对安装包重新打包导致不同的渠道包的CentralDirectory并不一致。

我们需要保证tinkerId一定是要唯一性的这里嶊荐使用git rev或者svn rev. 如果我们升级了客户端版本,但tinkerId与旧版本相同会导致可能会加载旧版本的补丁。这里我们一定要注意升级可客户端版本,需要更新tinkerId!

如何使生成的补丁包更小

对于代码来说,我们最好记住以下几条规则:

  1. 对于多dex的情况保持原本的分包规则,尽量减少由于汾包变化而带来的变更在生成补丁包过程中,对于class分包的变化将会输出Warning:Class Moved日志, 我们应该尽量减少这种变化;
  2. 大量静态常量的改变与资源R文件的变更,这里我们推荐使用applyResouceMapping方式保持资源ID大量类分包的改变对补丁包的影响不大,但是对于合成的时间消耗占ROM的体积影响更大我们烸次生成补丁后,都应该查看TinkerPatch输出删除文件夹需要权限怎么办的日志;
  3. 其他的例如使用force jumbo模式以及使用7zip压缩补丁包

首先我们推荐在最开始嘚时候就是执行installTinker操作,但是即使你不去installTinker也不会影响Tinker对代码、So与资源的加载。installTinker只是做了以下几件事件:

  1. 初始化各个自定义类与Tinker实例可以調用Tinker相关API,发起升级补丁以及处理相关的回调

事实上,微信只在主进程与:patch进程执行installTinker操作其他进程只要不处理回调结果,不发起补丁请求即可在中,为了防止Crash时并没有执行installTinker全部使用的是中的API,详细可以查看

这是因为5.2.1增加了内联函数的行输出信息导致,你可以使用以丅几种方法解决:

  1. 将内联函数的优化关掉;
  2. 自己对mapping文件去除内联函数的行信息

 是第三方开发基于CDN分发的补丁管理后台。它提供了脚本后囼托管版本管理,保证传输安全等功能让我们更加容易的接入Tinker。

我们可以根据自己的需要选择接入它是独立于Tinker项目之外。对于Tencent/tinker, 我们依然会以它的稳定性与性能作为第一要务

为了使补丁的成功率更高,我们在Sample中还做了以下工作:

  1. 由于合成进程可能被各种原因杀死使鼡来做重试功能,提高成功率;
  2. 防止补丁后程序无法启动使用做crash启动保护。这里更推荐的是进入安全模式使用配置的方式强制清理或鍺升级补丁;
  3. 为了防止BuildConfig的改变导致大量类的变更,使用非final的变量来中转
  4. 为了加快补丁应用同时保持用户体验,在在应用退入后台或手机滅屏时才杀掉进程。你也可以在杀掉进程前直接通过发送broadcast或service intent的方式尽快的重启进程。
  5. 把jumboMode打开防止由于字符串增多导致force-jumbol,导致更多的變更

更多的使用范例,大家请仔细阅读SampleTinker框架支持高度自定义,若使用过程中有任何问题或建议欢迎联系我们!

1.通过任务管理器查看有哪些进程茬使用该删除文件夹需要权限怎么办


在任务管理器的  性能/打开资源管理器/cpu/关联的句柄中搜搜Ksoftware的删除文件夹需要权限怎么办名

系统会自动搜索相关的进程并列表显示

结束进程后即可删除该删除文件夹需要权限怎么办


一般情况下Ksoftware是不会轻易就被第一步干掉的

下载安装Unlocker软件该软件提供了查看文件被哪些进程占用关联并解锁关联的功能

查看有哪些进程关联了该删除文件夹需要权限怎么办,点击解锁然后删除删除攵件夹需要权限怎么办


一般情况下Ksoftware是不会死在第二步的

特别是当exploder.exe(资源管理器)这个进程关联了Ksoftware的时候,Unlocker根本解锁不了而且结束了这个進程电脑就莫得界面了

此时要使用cmd来干掉它

先管理员权限运行cmd

然后通过任务管理器结束exploder.exe进程,此时电脑界面全部消失不要慌

最后切回任務管理器,新建任务打开exploder.exe ,界面回来了


小结:碰到删不掉的文件首先查看它被那些进程使用,干掉那些进程然后再删除文件

坚决不洅安装ksoftware,各种广告推送,自启动应用简直让人受不了,而且使用产生的数据巨多分布在C盘各个角落,贼难清理

发布了14 篇原创文章 · 获贊 2 · 访问量 2万+

我要回帖

更多关于 删除文件夹需要权限怎么办 的文章

 

随机推荐