I tried to compile WebRTC with my customized function, but I always get the error like this:
In file included from ../../sdk/android/src/jni/pc/octon_frame_encryptor.cc:5:
gen/sdk/android/generated_peerconnection_jni/OctonFrameEncryptor_jni.h:41:14: error: function 'webrtc::jni::JNI_OctonFrameEncryptor_GetOctonFrameEncryptor' has internal linkage but is not defined [-Werror,-Wundefined-internal]
static jlong JNI_OctonFrameEncryptor_GetOctonFrameEncryptor(JNIEnv* env, const
^
gen/sdk/android/generated_peerconnection_jni/OctonFrameEncryptor_jni.h:48:10: note: used here
return JNI_OctonFrameEncryptor_GetOctonFrameEncryptor(env,
^
1 error generated.
I don't know what is wrong with my function, here is my octon_frame_encryptor.cc inside src/jni/pc. For JNI_OctonFrameEncryptor_SetKey it seems that it does not throw compiling error.
#include "api/crypto/octon_frame_encryptor.h"
#include <vector>
#include "sdk/android/generated_peerconnection_jni/OctonFrameEncryptor_jni.h"
#include "sdk/android/src/jni/jni_helpers.h"
namespace webrtc {
namespace jni {
static jlong JNI_OctonFrameEncryptor_GetOctonFrameEncryptor(
JNIEnv* jni,
const base::android::JavaParamRef<jobject>& thiz,
const base::android::JavaParamRef<jintArray>& key_bytes) {
jintArray key_bytes_array = key_bytes.obj();
jsize size = jni->GetArrayLength(key_bytes_array);
jint* key_bytes_ptr = jni->GetIntArrayElements(key_bytes_array, 0);
std::vector<uint8_t> key_bytes_vector(key_bytes_ptr, key_bytes_ptr + size);
return jlongFromPointer(new OctonFrameEncryptor(key_bytes_vector));
}
static void JNI_OctonFrameEncryptor_SetKey(
JNIEnv* jni,
const base::android::JavaParamRef<jobject>& thiz,
const base::android::JavaParamRef<jintArray>& key_bytes) {
jintArray key_bytes_array = key_bytes.obj();
jsize size = jni->GetArrayLength(key_bytes_array);
jint* key_bytes_ptr = jni->GetIntArrayElements(key_bytes_array, 0);
std::vector<uint8_t> key_bytes_vector(key_bytes_ptr, key_bytes_ptr + size);
OctonFrameEncryptor* encryptor =
reinterpret_cast<OctonFrameEncryptor*>(thiz.obj());
encryptor->SetKey(key_bytes_vector);
}
} // namespace jni
} // namespace webrtc