Skip to content

master分支的android java代码跟c++代码不匹配,能否更新下对应的java代码? #1360

@TrumpDony

Description

@TrumpDony

比如Java代码StnLogic里面的: /** * 停止并清除所有未完成任务并重新初始化, 重新设置encoder version */ public static native void resetAndInitEncoderVersion(int packerEncoderVersion);

/*
 * Class:     com_tencent_mars_stn_StnLogic_Java2C
 * Method:    resetAndInitEncoderVersion
 * Signature: (I)V
 */
DEFINE_FIND_STATIC_METHOD(KJava2C_resetAndInitEncoderVersion, KNetJava2C, "resetAndInitEncoderVersion", "(ILjava/lang/String;)V")
JNIEXPORT void JNICALL Java_com_tencent_mars_stn_StnLogic_resetAndInitEncoderVersion(JNIEnv* _env,
                                                                                     jclass clz,
                                                                                     jint _packer_encoder_version,
                                                                                     jstring _packer_encoder_name) {
    std::string packer_encoder_name = (NULL == _packer_encoder_name ? "" : ScopedJstring(_env, _packer_encoder_name).GetChar());
    ResetAndInitEncoderVersion(_packer_encoder_version, packer_encoder_name);
}

方法签名对不上

还有java里面Task类没有clientSequenceId,对应的c++代码会去拿这个字段,导致运行crash

static void JniStartTask(JNIEnv* env, jobject instance, jobject _task) {
        xverbose_function();
        auto stn_manager_cpp = jnicat::JniObjectWrapper<StnManager>::object(env, instance);
        // get the field value of the netcmd
        jint taskid = JNU_GetField(env, _task, "taskID", "I").i;
        jint cmdid = JNU_GetField(env, _task, "cmdID", "I").i;
        jint channel_select = JNU_GetField(env, _task, "channelSelect", "I").i;
        jobject hostlist = JNU_GetField(env, _task, "shortLinkHostList", "Ljava/util/ArrayList;").l;
        jstring cgi = (jstring)JNU_GetField(env, _task, "cgi", "Ljava/lang/String;").l;

        jboolean send_only = JNU_GetField(env, _task, "sendOnly", "Z").z;
        jboolean need_authed = JNU_GetField(env, _task, "needAuthed", "Z").z;
        jboolean limit_flow = JNU_GetField(env, _task, "limitFlow", "Z").z;
        jboolean limit_frequency = JNU_GetField(env, _task, "limitFrequency", "Z").z;

        jint channel_strategy = JNU_GetField(env, _task, "channelStrategy", "I").i;
        jboolean network_status_sensitive = JNU_GetField(env, _task, "networkStatusSensitive", "Z").z;
        jint priority = JNU_GetField(env, _task, "priority", "I").i;

        jint retrycount = JNU_GetField(env, _task, "retryCount", "I").i;
        jint server_process_cost = JNU_GetField(env, _task, "serverProcessCost", "I").i;
        jint total_timetout = JNU_GetField(env, _task, "totalTimeout", "I").i;
        jstring report_arg = (jstring)JNU_GetField(env, _task, "reportArg", "Ljava/lang/String;").l;

        jboolean long_polling = JNU_GetField(env, _task, "longPolling", "Z").z;
        jint long_polling_timeout = JNU_GetField(env, _task, "longPollingTimeout", "I").i;

        jobject oHeaders = JNU_GetField(env, _task, "headers", "Ljava/util/Map;").l;
        std::map<std::string, std::string> headers = JNU_JObject2Map(env, oHeaders);
        jint client_sequence_id = JNU_GetField(env, _task, "clientSequenceId", "I").i;

        jobject extraInfo = JNU_GetField(env, _task, "extraInfo", "Ljava/util/Map;").l;
        std::map<std::string, std::string> extra_info = JNU_JObject2Map(env, extraInfo);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions