[發明專利]一種應用層接口的動態注冊方法及相關裝置有效
| 申請號: | 201910242280.X | 申請日: | 2019-03-28 |
| 公開(公告)號: | CN109960597B | 公開(公告)日: | 2023-08-08 |
| 發明(設計)人: | 周志剛 | 申請(專利權)人: | 深圳耐看科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 深圳市恒程創新知識產權代理有限公司 44542 | 代理人: | 趙愛蓉 |
| 地址: | 518000 廣東省深圳市南山區粵*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 應用 接口 動態 注冊 方法 相關 裝置 | ||
1.一種應用層接口的動態注冊方法,所述方法應用于Android系統,其特征在于,包括:
定義第一數組,所述第一數組用于列舉共享對象SO文件中所有對應用層提供的接口信息,所述接口信息包括所述應用層對應的接口名稱和接口函數;
在所述SO文件中編寫一個單件類,所述單件類用于管理所述第一數組中的接口函數;
遍歷所述SO文件中的所有接口函數,并確定是否存在目標接口函數在所述應用層中有對應的接口函數,所述目標接口函數包含于所述SO文件中的所有接口函數;
若存在,則將所述目標接口函數記錄在待注冊數組中,并注冊所述目標接口函數;
所述遍歷所述SO文件中的所有接口函數,并確定是否存在目標接口函數在所述應用層中有對應的接口函數包括:
獲取所述應用層的類;
基于循環函數,根據所述應用層的類和所述單件類遍歷所述SO文件中的所有接口函數,以確定是否存在目標接口函數在所述應用層中有對應的接口函數。
2.根據權利要求1所述的方法,其特征在于,所述定義第一數組包括:
調用所述Andriod系統中的存儲結構,所述存儲結構用于存儲所述SO文件中的所有接口函數,所述存儲結構包括變量name、變量signature和變量fnPtr,所述變量name用于表示所述應用層中函數的名稱,所述變量signature用于表示所述應用層中函數的參數和返回值類型,所述變量fnPtr用于表示指向所述SO文件中接口函數的函數指針;
根據所述存儲結構定義所述第一數組,所述第一數組包括第一變量至第三變量,所述第一變量用于表示第一函數的名稱,所述第一函數包含于所述應用層中函數,所述第二變量用于表示所述第一函數對應于所述SO文件中的接口名稱,所述第三變量用于表示所述接口名稱對應的接口函數的參數和返回值類型。
3.根據權利要求1所述的方法,其特征在于,所述獲取應用層的類包括:
通過JAVA本地接口JNI的函數FindClass獲取應用層的類,所述接口函數FindClass包括參數env和參數JAVA_CLASS,所述參數env表示所述應用層的運行環境,所述參數JAVA_CLASS用于表示所述應用層的類的名稱,所述接口函數FindClass的輸出參數clazz用于表示所述應用層的類的對象。
4.根據權利要求3所述的方法,其特征在于,所述根據所述應用層的類和所述單件類遍歷所述SO文件中的所有接口函數,以確定是否存在目標接口函數在所述應用層中有對應的接口函數包括:
通過所述單件類獲取所述SO文件中所有接口函數的函數列表;
遍歷所述函數列表,通過JNI的函數GetStaticMethodID獲取所述應用層中與第i個函數對應的接口函數,所述第i個函數包含于所述函數列表,其中,所述接口函數GetStaticMethodID包括參數clazz,參數func[i].name,參數func[i].signature,所述參數clazz用于表示所述應用層的類的對象,所述參數func[i].name用于表示所述第i個函數對應的接口名稱,所述參數func[i].signature用于表示所述第i個函數的參數類型和返回值,所述函數GetStaticMethodID的返回值用于表示是否存在所述目標接口函數。
5.根據權利要求4所述的方法,其特征在于,所述將所述目標接口函數記錄在待注冊數組中,并注冊所述目標接口函數包括:
按照遍歷所述函數列表的先后順序將所述目標接口函數依次存儲在所述待注冊數組中,所述待注冊數組包括所述目標接口函數的名稱,所述目標接口函數的參數類型和返回值,以及指向所述目標接口函數的函數指針;
根據所述待注冊數組和所述應用層的類注冊所述目標接口函數。
6.根據權利要求5所述的方法,其特征在于,所述根據所述待注冊數組和所述應用層的類注冊所述目標接口函數包括:
通過函數RegisterNatives對所述目標接口函數進行注冊,所述函數RegisterNatives包括第一參數至第三參數,所述第一參數用于表示所述應用層的類,所述第二參數用于表示所述待注冊數組,所述第三參數用于表示所述待注冊數組中函數的總個數。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳耐看科技有限公司,未經深圳耐看科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910242280.X/1.html,轉載請聲明來源鉆瓜專利網。





