Tinker接入简单实践
来源:互联网 发布:知乎分析鬼吹灯 编辑:程序博客网 时间:2024/06/05 21:52
1.添加依赖
在项目的build.gradle中,添加tinker-patch-gradle-plugin的依赖buildscript { dependencies { classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.9') }}然后在app的gradle文件app/build.gradle,我们需要添加tinker的库依赖以及apply tinker的gradle插件.dependencies { //可选,用于生成application类 provided('com.tencent.tinker:tinker-android-anno:1.7.9') //tinker的核心库 compile('com.tencent.tinker:tinker-android-lib:1.7.9') }......//apply tinker插件apply plugin: 'com.tencent.tinker.patch'
2.添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
3.app_bulid.gradle
拷贝sample中的
4.自定义application实现DefaultApplicationLike或者拷贝SampleApplicationLike到自己项目中
同时要在AndroidManifest.xml中修改appName为com.zhongchao.myhotfixtest4.SampleApplication即自己修改过得名字注意:此时application是没有的,会报红,但会在编译时生成,因此不用担心
5.初始化Tinker
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)@Overridepublic void onBaseContextAttached(Context base) { super.onBaseContextAttached(base); //you must install multiDex whatever tinker is installed! MultiDex.install(base); //installTinker after load multiDex //or you can put com.tencent.tinker.** to main dex TinkerInstaller.install(this); Tinker tinker = Tinker.with(getApplication());}此处做了修改,没有用实例中的,最重要的是这句TinkerInstaller.install(this);
6.加载补丁
注意:加载补丁要等生成补丁,并且推送到手机上以后,才能加载
loadPatchButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed_7zip.apk"); } });
7.签名打包apk
8.改动并配置路径
注意:原apk路径
def bakPath = file("${buildDir}/bakApk/")tinkerOldApkPath = "${bakPath}/app-release-0504-11-40-20.apk"//proguard mapping file to build patch apktinkerApplyMappingPath = "${bakPath}/app-release-0504-11-40-20-mapping.txt"//resource R.txt to build patch apk, must input if there is resource changedtinkerApplyResourcePath = "${bakPath}/app-release-0504-11-40-20-R.txt"
这些都要更改
9.生成补丁
studio右侧,点击gradle–>tinker–>tinkerPath…debug或release
生成之后推送即可
问题:tinkerId
自己修改一下即可
def getTinkerIdValue() { return hasProperty("TINKER_ID") ? TINKER_ID : "tinker_id_2333"}
tinker已知问题
由于原理与系统限制,Tinker有以下已知问题:
- Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件;
- 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
- 在Android N上,补丁对应用启动时间有轻微的影响;
- 不支持部分三星android-21机型,加载补丁时会主动抛出”TinkerRuntimeException:checkDexInstall failed”;
- 对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。
1 0
- Tinker接入简单实践
- Tinker的简单接入
- Tinker热修复简单接入
- 热修复Tinker简单接入
- Tinker热修复简单使用与接入
- Tinker接入
- tinker接入
- Tinker 接入指南
- 一键接入Tinker
- Tinker接入步骤
- Tinker接入快速上手
- Tinker接入详解
- Tinker 的接入
- 接入热修复框架TinKer
- 热修复,Tinker的接入
- Tinker接入及原理分析
- Tinker接入小白教程
- Tinker接入踩的坑
- 1098. Insertion or Heap Sort (25)
- 预处理,结构体
- iOS 极光推送开发环境可以收到,生产环境收不到推送
- phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
- win7 python3.5.2 安装tensorflow1.1.0
- Tinker接入简单实践
- 【开源】NodeJS仿WebApi路由
- WEAK入门(二):第 2 部分: 分类和群集
- 储存测试
- NIPS 2016 主题概览
- Android设计模式-迭代器模式
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- 在windows10 下搭建 visual studio 2015 驱动程序开发环境
- mysql 同表中一个字段根据“/”拆成两个字段,然后赋给其他两个字段