com.tinkerpatch.sdk.TinkerPatch Java Examples

The following examples show how to use com.tinkerpatch.sdk.TinkerPatch. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: tinkerApplication.java    From Tinker_APP with MIT License 6 votes vote down vote up
/**
     * 我们需要确保至少对主进程跟patch进程初始化 TinkerPatch
     */
    private void initTinkerPatch() {
        // 我们可以从这里获得Tinker加载过程的信息
        if (BuildConfig.TINKER_ENABLE) {
            tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();
            // 初始化TinkerPatch SDK
            TinkerPatch.init(
                    tinkerApplicationLike
//                new TinkerPatch.Builder(tinkerApplicationLike)
//                    .requestLoader(new OkHttp3Loader())
//                    .build()
            )
                    .reflectPatchLibrary()
                    .setPatchRollbackOnScreenOff(true)
                    .setPatchRestartOnSrceenOff(true)
                    .setFetchPatchIntervalByHours(3)
            ;
            // 获取当前的补丁版本
            Log.d("wang", "当前获取补丁:Current patch version is " + TinkerPatch.with().getPatchVersion());

            // fetchPatchUpdateAndPollWithInterval 与 fetchPatchUpdate(false)
            // 不同的是,会通过handler的方式去轮询
            TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
        }
    }
 
Example #2
Source File: SampleApplication.java    From tinkerpatch-andresguard-sample with MIT License 6 votes vote down vote up
/**
 * 我们需要确保至少在主进程和patch进程中初始化 TinkerPatch
 */
private void initTinker() {
    if (BuildConfig.TINKER_ENABLE) {
        tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();

        // 初始化TinkerPatch SDK
        TinkerPatch.init(tinkerApplicationLike)
            .reflectPatchLibrary()
            .setPatchRollbackOnScreenOff(true)
            .setPatchRestartOnSrceenOff(true)
            .setFetchPatchIntervalByHours(3);

        // 获取当前的补丁版本
        Log.d(TAG, "current patch version is " + TinkerPatch.with().getPatchVersion());

        // 每隔3个小时(通过setFetchPatchIntervalByHours设置)去访问后台时候有更新,通过handler实现轮训的效果
        TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
    }
}
 
Example #3
Source File: SampleApplicationLike.java    From tinkerpatch-sample with MIT License 6 votes vote down vote up
private void initTinker() {
    if (BuildConfig.TINKER_ENABLE) {
        //开始检查是否有补丁,这里配置的是每隔访问3小时服务器是否有更新。
        TinkerPatch.init(this)
            .reflectPatchLibrary()
            .setPatchRollbackOnScreenOff(true)
            .setPatchRestartOnSrceenOff(true)
            .setFetchPatchIntervalByHours(3);

        // 获取当前的补丁版本
        Log.d(TAG, "current patch version is " + TinkerPatch.with().getPatchVersion());

        //每隔3个小时去访问后台时候有更新,通过handler实现轮训的效果
        TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
    }
}
 
Example #4
Source File: SampleApplication.java    From tinkerpatch-andresguard-sample with MIT License 5 votes vote down vote up
/**
 * 自定义Tinker类的高级用法, 一般不推荐使用
 * 更详细的解释请参考:http://tinkerpatch.com/Docs/api
 */
private void complexSample() {
    TinkerPatch.Builder builder = new TinkerPatch.Builder(tinkerApplicationLike);
    //修改tinker的构造函数,自定义类
    builder.listener(new DefaultPatchListener(this))
        .loadReporter(new DefaultLoadReporter(this))
        .patchReporter(new DefaultPatchReporter(this))
        .resultServiceClass(TinkerServerResultService.class)
        .upgradePatch(new UpgradePatch())
        .patchRequestCallback(new TinkerPatchRequestCallback());

    TinkerPatch.init(builder.build());
}
 
Example #5
Source File: FetchPatchHandler.java    From POCenter with MIT License 5 votes vote down vote up
/**
 * 通过handler, 达到按照时间间隔轮训的效果
 * @param hour
 */
public void fetchPatchWithInterval(int hour) {
    //设置TinkerPatch的时间间隔
    TinkerPatch.with().setFetchPatchIntervalByHours(hour);
    checkInterval = hour * HOUR_INTERVAL;
    //立刻尝试去访问,检查是否有更新
    sendEmptyMessage(0);
}
 
Example #6
Source File: FetchPatchHandler.java    From POCenter with MIT License 5 votes vote down vote up
@Override
public void handleMessage(Message msg) {
    super.handleMessage(msg);

    //这里使用false即可
    TinkerPatch.with().fetchPatchUpdate(false);
    //每隔一段时间都去访问后台, 增加10分钟的buffer时间
    sendEmptyMessageDelayed(0, checkInterval + 10 * 60 * 1000);
}
 
Example #7
Source File: BaseApplication.java    From POCenter with MIT License 5 votes vote down vote up
private void tinkerPatchConfig() {
    // 我们可以从这里获得Tinker加载过程的信息
    if (BuildConfig.TINKER_ENABLE) {
        tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();

        // 初始化TinkerPatch SDK
        TinkerPatch.init(tinkerApplicationLike)
                .reflectPatchLibrary()
                .setPatchRollbackOnScreenOff(true)
                .setPatchRestartOnSrceenOff(true);

        // 每隔3个小时去访问后台时候有更新,通过handler实现轮训的效果
        new FetchPatchHandler().fetchPatchWithInterval(3);
    }
}
 
Example #8
Source File: SampleApplicationLike.java    From tinkerpatch-sample with MIT License 5 votes vote down vote up
/**
 * 自定义Tinker类的高级用法,一般不推荐使用
 * 更详细的解释请参考:http://tinkerpatch.com/Docs/api
 */
private void complexSample() {
    TinkerPatch.Builder builder = new TinkerPatch.Builder(this);
    //修改tinker的构造函数,自定义类
    builder.listener(new DefaultPatchListener(getApplication()))
            .loadReporter(new DefaultLoadReporter(getApplication()))
            .patchReporter(new DefaultPatchReporter(getApplication()))
            .resultServiceClass(TinkerServerResultService.class)
            .upgradePatch(new UpgradePatch())
            .patchRequestCallback(new TinkerPatchRequestCallback());

    TinkerPatch.init(builder.build());
}
 
Example #9
Source File: SampleApplication.java    From tinkerpatch-andresguard-sample with MIT License 4 votes vote down vote up
/**
 * 在这里给出TinkerPatch的所有接口解释
 * 更详细的解释请参考:http://tinkerpatch.com/Docs/api
 */
private void useSample() {
    TinkerPatch.init(tinkerApplicationLike)
        //是否自动反射Library路径,无须手动加载补丁中的So文件
        //注意,调用在反射接口之后才能生效,你也可以使用Tinker的方式加载Library
        .reflectPatchLibrary()
        //向后台获取是否有补丁包更新,默认的访问间隔为3个小时
        //若参数为true,即每次调用都会真正的访问后台配置
        .fetchPatchUpdate(false)
        //设置访问后台补丁包更新配置的时间间隔,默认为3个小时
        .setFetchPatchIntervalByHours(3)
        //向后台获得动态配置,默认的访问间隔为3个小时
        //若参数为true,即每次调用都会真正的访问后台配置
        .fetchDynamicConfig(new ConfigRequestCallback() {
            @Override
            public void onSuccess(HashMap<String, String> hashMap) {

            }

            @Override
            public void onFail(Exception e) {

            }
        }, false)
        //设置访问后台动态配置的时间间隔,默认为3个小时
        .setFetchDynamicConfigIntervalByHours(3)
        //设置当前渠道号,对于某些渠道我们可能会想屏蔽补丁功能
        //设置渠道后,我们就可以使用后台的条件控制渠道更新
        .setAppChannel("default")
        //屏蔽部分渠道的补丁功能
        .addIgnoreAppChannel("googleplay")
        //设置tinkerpatch平台的条件下发参数
        .setPatchCondition("test", "1")
        //设置补丁合成成功后,锁屏重启程序
        //默认是等应用自然重启
        .setPatchRestartOnSrceenOff(true)
        //我们可以通过ResultCallBack设置对合成后的回调
        //例如弹框什么
        .setPatchResultCallback(new ResultCallBack() {
            @Override
            public void onPatchResult(PatchResult patchResult) {
                Log.i(TAG, "onPatchResult callback here");
            }
        })
        //设置收到后台回退要求时,锁屏清除补丁
        //默认是等主进程重启时自动清除
        .setPatchRollbackOnScreenOff(true)
        //我们可以通过RollbackCallBack设置对回退时的回调
        .setPatchRollBackCallback(new RollbackCallBack() {
            @Override
            public void onPatchRollback() {
                Log.i(TAG, "onPatchRollback callback here");
            }
        });
}
 
Example #10
Source File: SampleApplicationLike.java    From tinkerpatch-sample with MIT License 4 votes vote down vote up
/**
 * 在这里给出TinkerPatch的所有接口解释
 * 更详细的解释请参考:http://tinkerpatch.com/Docs/api
 */
private void useSample() {
    TinkerPatch.init(this)
        //是否自动反射Library路径,无须手动加载补丁中的So文件
        //注意,调用在反射接口之后才能生效,你也可以使用Tinker的方式加载Library
        .reflectPatchLibrary()
        //向后台获取是否有补丁包更新,默认的访问间隔为3个小时
        //若参数为true,即每次调用都会真正的访问后台配置
        .fetchPatchUpdate(false)
        //设置访问后台补丁包更新配置的时间间隔,默认为3个小时
        .setFetchPatchIntervalByHours(3)
        //向后台获得动态配置,默认的访问间隔为3个小时
        //若参数为true,即每次调用都会真正的访问后台配置
        .fetchDynamicConfig(new ConfigRequestCallback() {
            @Override
            public void onSuccess(HashMap<String, String> hashMap) {

            }

            @Override
            public void onFail(Exception e) {

            }
        }, false)
        //设置访问后台动态配置的时间间隔,默认为3个小时
        .setFetchDynamicConfigIntervalByHours(3)
        //设置当前渠道号,对于某些渠道我们可能会想屏蔽补丁功能
        //设置渠道后,我们就可以使用后台的条件控制渠道更新
        .setAppChannel("default")
        //屏蔽部分渠道的补丁功能
        .addIgnoreAppChannel("googleplay")
        //设置tinkerpatch平台的条件下发参数
        .setPatchCondition("test", "1")
        //设置补丁合成成功后,锁屏重启程序
        //默认是等应用自然重启
        .setPatchRestartOnSrceenOff(true)
        //我们可以通过ResultCallBack设置对合成后的回调
        //例如弹框什么
        .setPatchResultCallback(new ResultCallBack() {
            @Override
            public void onPatchResult(PatchResult patchResult) {
                Log.i(TAG, "onPatchResult callback here");
            }
        })
        //设置收到后台回退要求时,锁屏清除补丁
        //默认是等主进程重启时自动清除
        .setPatchRollbackOnScreenOff(true)
        //我们可以通过RollbackCallBack设置对回退时的回调
        .setPatchRollBackCallback(new RollbackCallBack() {
            @Override
            public void onPatchRollback() {
                Log.i(TAG, "onPatchRollback callback here");
            }
        });
}