进阶

So文件修复

对补丁中新增的 So,务必使用此接口加载。其余 So 加载场景优先使用此接口加载。(以下代码可直接拷贝至项目工程中使用)

import com.tencent.tinker.lib.tinker.TinkerApplicationHelper;
import com.tencent.tmf.hotpatch.api.BaseHotpatchApplication;

public class LibraryUtil {
    /**
     * 依是否有使用tinker而选择特定的加载方式
     * @param libName
     */
    public static void loadLibrary(String libName) {
        if (BaseHotpatchApplication.getTinkerApplication() != null) {
             // load lib/armeabi library
             TinkerApplicationHelper
        .loadArmLibrary(BaseHotpatchApplication.getTinkerApplication(), libName);
            // load lib/armeabi-v7a library
            // TinkerLoadLibrary.loadArmV7Library(TMFApplicationContext.sApplication, libName);
        } else {
            System.loadLibrary(libName);
        }
    }

}

使用示例

LibraryUtil.loadLibrary(libName);

main dex 配置

当方法数超过65535,需要使用 MultiDex,为使热修复组件正常工作,需确保加载补丁包所需要的类在 main dex 中。

创建 multidex-config.pro 文件(文件名可自定义),并增加自定义配置(以下内容可直接拷贝到工程中使用):

-keep class com.tencent.tinker.loader.** {*;}
-keep class * extends android.app.Application { *; }
-keep class * extends com.tencent.tinker.loader.TinkerLoader { *; }
-keep class com.tencent.tinker.entry.ApplicationLifeCycle { *; }
-keep class * implements com.tencent.tinker.entry.ApplicationLifeCycle { *; }

// 此处的包路径以实际项目为准,这里以Demo为例
-keep class com.tencent.tmf.demo.TmfDelegaleApplication {*; }

以 demo 工程为例,在 build.gradle 中添加以下配置。 hot_patch_main_dex

Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""