Tinker接入记录(一)

    热更新是一个非常常用的功能,我们在开发的时候很常用,其实相较于各个平台,我对RePlugin是比较钟意的,不过限于目前公司业务方面SDK的需求来说,还是得先从Tinker入手,因为,Thinker可以脱离Gradle即可实现,首先是Tinker的地址:

https://github.com/Tencent/tinker

然后,Thinker本身有两种接入方式,一种Gradle方式,一种命令行接入,Gradle接入方式我就不详细介绍了,其实官方文档都有,但是独立的命令行接入本身其实我个人觉得不是很清晰,所以现在来记录一下

命令行接入方式:

由于我是在AndroidStudio中演示的,所以截图都是AndroidStudio的

1、首先添加Thinker的依赖

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

//    //可选,用于生成application类
//    provided('com.tencent.tinker:tinker-android-anno:1.9.1')
    //tinker的核心库
    compile('com.tencent.tinker:tinker-android-lib:1.9.1')
}
因为我不准备让Gradle自动生成Application,而是自定义Application,所以第一个依赖我们是不需要的

2、自定义一个类,继承ApplicationLike

public class SimpleApplicationLike extends ApplicationLike {

    public SimpleApplicationLike(Application application, int tinkerFlags, boolean tinkerLoadVerifyFlag,
                                 long applicationStartElapsedTime, long applicationStartMillisTime, Intent tinkerResultIntent) {
        super(application, tinkerFlags, tinkerLoadVerifyFlag, applicationStartElapsedTime, applicationStartMillisTime, tinkerResultIntent);
    }

    @Override
    public void onBaseContextAttached(Context base) {
        super.onBaseContextAttached(base);

    }
    @Override
    public void onCreate() {
        super.onCreate();
        TinkerInstaller.install(this);
    }

    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) {
        getApplication().registerActivityLifecycleCallbacks(callback);
    }
}

3、自定义一个Application

public class SimpleApplication extends TinkerApplication {
    public SimpleApplication() {
        super(
                ShareConstants.TINKER_ENABLE_ALL,
                "com.morningtec.developtool.hotfix.SimpleApplicationLike");//填写上面继承了ApplicationLike的类
    }
}

4、在Manifest中注册我们写的Application

5、首先把目前的项目打成apk,命名为old.apk

6、修改一下代码,再打成apk,命名为new.apk

5、下载Thinker的项目


6、在控制台输入:./gradlew buildTinkerSdk


7、在指定路径看到生成的文件之后,将刚才生成的old.apk和new.apk拷贝进去


8、修改tinker_config.xml

首先修改Application


然后修改签名


9、把自己的签名放进去


然后在这个目录执行命令

java -jar tinker-patch-cli-1.9.8.jar -old old.apk -new new.apk -config tinker_config.xml -out output

得到结果:


图中框出来的文件就是差分好的文件

然后,我来放一下MainActivity的代码

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onCLick();
            }
        });
        findViewById(R.id.text2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loadFix();
            }
        });
    }


    public void onCLick(){
        Toast.makeText(this, "33333333", Toast.LENGTH_SHORT).show();
    }


    public void loadFix(){
        TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(),
                Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed.apk");
    }

老得代码是弹一排1,新代码是弹一排3,这里调用loadFix()之后,应用被关闭,再次打开,测试,得到想要的结果

这样就行了


注:接入编译时可能会报错,需要针对运行时生成进行一个兼容处理


这样即可,之后的深入的使用,之后继续更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值