色偷偷精品伊人,欧洲久久精品,欧美综合婷婷骚逼,国产AV主播,国产最新探花在线,九色在线视频一区,伊人大交九 欧美,1769亚洲,黄色成人av

240 發(fā)簡(jiǎn)信
IP屬地:四川
  • 120
    Android JNI學(xué)習(xí)(二)——實(shí)戰(zhàn)JNI之“hello world”

    本系列文章如下: Android JNI(一)——NDK與JNI基礎(chǔ)Android JNI學(xué)習(xí)(二)——實(shí)戰(zhàn)JNI之“hello world”Android JNI學(xué)習(xí)(三)...

  • native函數(shù)沒有指針數(shù)組哦,我看了一下android Q里邊的實(shí)現(xiàn),在注冊(cè)native函數(shù)的時(shí)候,通過反射獲取到j(luò)ava方法地址后,直接將native 函數(shù)的地址,寫入到 對(duì)應(yīng)java 方法地址開始往后的4個(gè)字節(jié)或8個(gè)字節(jié)的內(nèi)存空間里邊。
    具體實(shí)現(xiàn)在: android/art/runtime/art_method.h
    template<typename T>
    ALWAYS_INLINE void SetNativePointer(MemberOffset offset, T new_value, PointerSize pointer_size) {
    static_assert(std::is_pointer<T>::value, "T must be a pointer type");
    const auto addr = reinterpret_cast<uintptr_t>(this) + offset.Uint32Value();
    ///這邊將native函數(shù)地址進(jìn)行寫入哦
    if (pointer_size == PointerSize::k32) {
    uintptr_t ptr = reinterpret_cast<uintptr_t>(new_value);
    *reinterpret_cast<uint32_t*>(addr) = dchecked_integral_cast<uint32_t>(ptr);
    } else {
    *reinterpret_cast<uint64_t*>(addr) = reinterpret_cast<uintptr_t>(new_value);
    }
    }

    大致調(diào)用棧為:
    SetNativePointer()
    SetDataPtrSize()
    SetEntryPointFromJniPtrSize()
    SetEntryPointFromJni()
    RegisterNative()
    RegisterNatives()
    jniRegisterNativeMethods()
    registerNativeMethods()
    RegisterMethodsOrDie()

平和县| 东光县| 石门县| 尉犁县| 康保县| 桂林市| 托里县| 玉树县| 白银市| 龙游县| 双流县| 读书| 育儿| 且末县| 百色市| 东乡族自治县| 瓦房店市| 南汇区| 凤城市| 刚察县| 十堰市| 富裕县| 山丹县| 潞西市| 和林格尔县| 西乌珠穆沁旗| 嘉定区| 综艺| 荣成市| 南澳县| 北流市| 许昌市| 厦门市| 建宁县| 盈江县| 酉阳| 聂拉木县| 肃北| 仁布县| 正安县| 和平县|