w***@sina.com
w***@sina.com
  • 发布:2023-05-30 11:19
  • 更新:2023-06-01 15:03
  • 阅读:736

原生插件使用了UniAppHookProxy,打包自定义基座可以执行oncreate方法初始化sdk,打正式包就不能执行

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.8.3

手机系统: Android

手机系统版本号: Android 13

手机厂商: 小米

手机机型: 小米11

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://mp-8b749506-8b0a-458b-9df6-28d9c7d1a77d.cdn.bspapp.com/cloudstorage/c08dedee-06f8-46f2-81f8-b0c80ccf9f04.apk

示例代码:

public class TspAppProxy implements UniAppHookProxy{

@Override  
public void onSubProcessCreate(Application application) {  
    // 子进程初始化回调  
      try {            
        GetLatLngListener getLatLngListener = () -> new LatLng(41.5, 120.521);  
        TSP.start(getLatLngListener, application.getApplicationContext());  
        System.out.println("--initSdk--初始化完成--TspAppProxy--"+application.getApplicationContext().toString());  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}  

@Override  
public void onCreate(Application application) {  
    // 可写初始化触发逻辑  
    try {  
        GetLatLngListener getLatLngListener = () -> new LatLng(41.5, 120.521);  
        TSP.start(getLatLngListener, application.getApplicationContext());  
        System.out.println("--initSdk--初始化完成--TspAppProxy--"+application.getApplicationContext().toString());  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}  

}

操作步骤:

本地调试的时候使用自定义基座打包,onCreate、onSubProcessCreate正常执行,云打包发布时,两个方法都不执行,导致方法内逻辑不执行

预期结果:

云打包发布时,执行onCreate、onSubProcessCreate

实际结果:

由于onCreate、onSubProcessCreate两个方法都没执行,导致使用sdk未初始化抛出异常exception:java.lang.reflect.InvocationTargetException

bug描述:

原生插件使用了UniAppHookProxy,打包自定义基座可以执行oncreate方法初始化sdk,打正式包就不能执行,是什么原因

2023-05-30 11:19 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

临时解决:
可以把初始化,放在module里搞,然后写在onLaunch,一样的效果

  • w***@sina.com (作者)

    你好,这种方式也没能解决问题,这种自定义基座可以而正式打包不可以的问题,能推断是什么引起的吗?

    2023-05-30 16:22

  • w***@sina.com (作者)

    UniAppHookProxy内的方法不执行是缺少什么配置吗?

    2023-05-30 17:09

  • FullStack

    回复 w***@sina.com: 那就是你执行sdk里的方法有问题,跟onCreate、onSubProcessCreate不执行无关

    2023-05-30 17:15

  • w***@sina.com (作者)

    回复 FullStack: 但打包自定义基座是没有问题的,编译打包资源在studio上运行也没有问题,唯独正式包有问题,这个解释不通吧,两种打包方式是否存在某种差异?

    2023-05-30 18:10

w***@sina.com

w***@sina.com (作者)

问题解决了,对比之前成功的apk包,解压后发现,云打包和基座打包相比少了kotlin模块。
在插件依赖中添加 embed 'org.jetbrains.kotlin:kotlin-stdlib:1.5.20' 制作aar插件,再HB云打包,

  • w***@sina.com (作者)

    这种方式打基座的时候会报错checkReleaseDuplicateClasses,改为在package.json里配置

    {

    "name": "tspsdk",

    "id": "tspsdk",

    "version": "1.0.0",

    "description": "车联网tspsdk",

    "_dp_type":"nativeplugin",

    "_dp_nativeplugin":{

    "android": {

    "plugins": [

    {

    "type": "module",

    "name": "",

    "class": ""

    }

    ],

    "hooksClass": "",

    "integrateType":"aar",

    "dependencies":[

    "org.jetbrains.kotlin:kotlin-stdlib:1.8.10"

    ]

    }

    }

    }

    2023-06-01 15:44

要回复问题请先登录注册