在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

安卓APP開發(fā)中,如何使用加密芯片?

武漢萬象奧科 ? 2024-10-31 17:43 ? 次閱讀

加密芯片是一種專門設計用于保護信息安全的硬件設備,它通過內(nèi)置的加密算法對數(shù)據(jù)進行加密和解密,以防止敏感數(shù)據(jù)被竊取或篡改。如下圖HD-RK3568-IOT工控板,搭載ATSHA204A加密芯片,常用于有安全防護要求的工商業(yè)場景,下文將為大家介紹安卓APP開發(fā)中,如何使用此類加密芯片。

3568開發(fā)板

1.AndroidStudio工具配置

JNI(JavaNativeInterface,Java本地接口)是Java生態(tài)的特性,它擴展了Java虛擬機的能力,使得Java代碼可以與C/C++代碼進行交互。通過JNI接口,Java代碼可以調(diào)用C/C++代碼,C/C++代碼也可以調(diào)用Java代碼。雖然Java是平臺無關性語言,但運行Java語言的虛擬機是運行在具體平臺上的,所以Java虛擬機是平臺相關的。因此,對于調(diào)用平臺API的功能時,雖然在Java語言層是平臺無關的,但背后只能通過JNI技術在Native層分別調(diào)用不同平臺API。類似的,對于有操作硬件需求的程序,也只能通過C/C++實現(xiàn)對硬件的操作,再通過JNI調(diào)用。為了支持JNI的開發(fā),在AndroidStudio工具中需要NDK(NativeDevelopmentKit)的支持。

1.png

圖1.1:添加NDK和CMake支持

點擊AndroisStudio的File->settings菜單,打上上面的settings頁面,首先找到AndroidSDK的設定位置,AndroidStudio版本不一樣時,其AndroidSDK所處的子項可能略有差異,然后點擊SDKTools頁簽,勾選上NDK和CMake的支持,然后安裝它們。

2.新建NativeC++工程

點擊File->Newproject,然后選中“NativeC++”工程模板,創(chuàng)建一個C++工程。最后點擊“Next”按鈕,如下圖所示:

2.png

圖2.1:新建NativeC++項目

接著填寫工程的名字,包名,工程保存的位置以及語言,然后點擊“Next”按鈕,如下圖所示:

3.png

圖2.2:native項目設置

接著進行C++標準設定,這里可以根據(jù)熟悉的語言標準進行選擇,最后點擊“Finish”完成設定。

4.png

圖2.3:C++Standard選擇

完成后,新建的項目窗口如下:

5.png

圖2.4:新建項目全貌

導航欄作用可以通過左側(cè)項目工具視圖體現(xiàn),菜單欄也可以先隱藏而在需要時顯示,為使窗口空間的有效利用,通過View->Appearance將菜單欄隱藏,并將導航信息設定為在下方的StatusBar中顯示。

3.Native項目開發(fā)

3.1CPP開發(fā)

在窗口的左側(cè)邊沿是一條“ToolWindowBar”,用于選擇左側(cè)窗口“ToolWindow”的內(nèi)容,在窗口的左上角有一個

6.png

圖標,表示“ToolWindow”顯示為項目,點擊該圖標會有不同的視圖選擇,這里默認是“Android”視圖,現(xiàn)在點擊“Android”標簽,在下拉視圖選項中選擇“ProjectFile”視圖:

7.png

圖3.1:項目視圖選擇

8.png

圖3.2:ProjectFiles顯示

cryptosdr/app/src/main/AndroidManifest.xml是一個清單文件,在每個android應用項目必有的,它負責向Android構建工具,此文件是自動生成的。cryptosdr/app/src/main/java/com/vanxoak/cryptosdr/MainActivity.java是描述程序邏輯的java文件。cryptosdr/app/src/main/cpp下面有兩個文件,是我們要進行nativec++開發(fā)的地方:CMakeLists.txt:編譯腳本,用于告知如何編譯項目中的本地庫。native-lib.cpp:創(chuàng)建的本地庫示例代碼模板,后期代碼編寫主要在這個文件里面進行。現(xiàn)在分別詳細介紹一下這兩個文件,CMakeLists.txt解釋如下:

cmake_minimum_required(VERSION3.22.1)#設置Cmake的最低版本

navtive-lib.cpp文件,這個文件是本地庫的C++源碼。我們需要在這里定義本地庫對java(Android)層提供的接口。在java中調(diào)用我們定義和提供的接口,就能實現(xiàn)java操縱c++的能力,這里是自動生成的一個示例:

#include

我們需要對navtive-lib.cpp實現(xiàn)的內(nèi)容進行修改,上面給了一個范例,我們也可以通過其它的方式讓這個文件更接近我們需要的。

3.2建立接口類文件

現(xiàn)在新建一個Java所需要的接口類,在工具窗口的app/src/main/java/com/vanxoak/cryptosdr文件夾上右鍵彈出菜單上新建一個“JavaClass”:

11.png

圖3.3:新建JavaClass

在新建串口中輸入類名稱“Rjgt102”,并使用默認Class選項:

12.png

圖3.4:NewRjgt102Class

新建完成后會生成一個Rjgt102.class的文件,在EditWindow中編輯類的接口信息,最終得到的文件如下:

packagecom.vanxoak.cryptosdr;

3.3通過類文件生成JNI接口

點擊左側(cè)ToolWindowBar的

圖標,或直接使用“Alt+F12”來打開終端窗口:


15.png

圖3.5:Terminal窗口

運行下面的命令:

E:\RK3568_APP\cryptoSdr>cdapp\src\main

命令執(zhí)后,在cpp目錄下會生成一個com_vanxoak_cryptosdr_Rjgt102.h的頭文件,通過右鍵點擊Toolwindow中的cpp文件夾并”ReloadfromDisk”可以在Toolwindow中看到這一文件,打開文件可以看到下面的文件內(nèi)容:

/*DONOTEDITTHISFILE-itismachinegenerated*/

其中的內(nèi)容主要是我們將要實現(xiàn)的功能,我們在native-lib.cpp中實現(xiàn)上面的函數(shù),并刪除native-lib.cpp原先自動生成的Java_com_vanxoak_cryptosdr_MainActivity_stringFromJNI函數(shù),并重新構建整個工程,有于Rjgt102屬于加密芯片,源碼中含有密鑰信息,這里不暫時native-lib.cpp的源碼內(nèi)容,并且接下來我們將利用得到的動態(tài)庫重新改造該項目使之僅使用生成的動態(tài)庫而不再包含源碼。

在構建完成后可以發(fā)現(xiàn)生成了多個libcryprosdr.so文件,以滿足多個架構的需求:

20.png

圖3.6:多架構下libcryprosdr.so文件


3.4MainActivity及布局文件的編寫

我們要實現(xiàn)的界面效果,如下圖所示。activity_main.xml里面定義了一個主體的LinearLayout,其中分布有2個TableLayout,然后在TableRow中分布TextView,Button,EditText以及Spinner控件,具體的編寫方法請參考本文檔配套資料提供的應用程序源碼。

21.png

圖3.7:cryptoSdr顯示界面

MainActivity.java中要寫實現(xiàn)控件功能的邏輯代碼。在此文件中,將會對之前定義的Rjgt102接口進行調(diào)用。

3.4.1Usid的顯示

我們希望打開應用時就能顯示該Rjgt102芯片的Usid,這就需要我們在MainActivity的onCreate函數(shù)中就利用JNI來訪問Rjgt102芯片來獲取Usid信息,下面是獲取流程:

publicclassMainActivityextendsAppCompatActivity{

3.4.2 選擇所操作的page對象

讀取page或者更新page內(nèi)容都需要明確的page_id作為對象,page_id的選擇是通過Spinner控件進行的,下面是page_id選擇的代碼示例:

publicclassMainActivityextendsAppCompatActivity{

實際上是對Spinner對象的ItemSelected事件進行監(jiān)聽來獲取的pageId。

3.4.3讀取page內(nèi)容

讀取page內(nèi)容需要通過READPAGE按鈕觸發(fā):

publicclassMainActivityextendsAppCompatActivity{

3.4.4 更新page內(nèi)容

更新page內(nèi)容需要通過READPAGE按鈕觸發(fā):

publicclassMainActivityextendsAppCompatActivity{

4.轉(zhuǎn)為JniLibs項目

在上一章Native項目開發(fā)完成后,整個應用功能已可使用,但由于nativec++代碼中含有敏感信息,需要保護而不公開native部分代碼,則需要將該部分代碼轉(zhuǎn)為應用包含JniLibs的方式。

4.1新建jniLibs目錄

需要在app\src\main上右鍵單擊菜單中選擇New->Directory:

26.png

圖4.1:newDirecrory

將新建的目錄命名為jniLibs。

4.2拷貝libcryprosdr.so到jniLibs

現(xiàn)在將libcryprosdr.so文件拷貝進來:

27.png

圖4.2:拷貝libcryprosdr.so文件到jniLibs

4.3刪除cpp目錄

現(xiàn)在需要刪除敏感nativec++源碼了,直接在src\app\src\main\cpp上右鍵單擊菜單中選擇Delete:

28.png

圖4.3:刪除cpp目錄

同樣方式可對中間過程文件存儲文件夾src\app\.cxx進行刪除。

4.4刪除對cpp目錄的編譯引用

在刪除了cpp目錄后,還需要刪除項目中對cpp的編譯部分,這里需要修改app\build.gradle文件,使之不再進行externalNativeBuild:

29.png


圖4.4:刪除對cpp的編譯

將上面內(nèi)容刪除后重新編譯工程即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • APP
    APP
    +關注

    關注

    33

    文章

    1585

    瀏覽量

    73860
  • 加密芯片
    +關注

    關注

    3

    文章

    124

    瀏覽量

    24196
  • 安卓
    +關注

    關注

    5

    文章

    2149

    瀏覽量

    58391
  • RK3568
    +關注

    關注

    5

    文章

    582

    瀏覽量

    6131
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【藍牙4.1】app安裝失敗

    ` 本帖最后由 770781327 于 2015-6-30 21:28 編輯 大家有沒有用到手機端的app呢,我是手機,官網(wǎng)提供的這app貌似無法安裝呀,我都換了四家的
    發(fā)表于 06-30 21:27

    【云智易試用體驗】APP demo編譯與運行

    的模擬器則需要使用手機),插上手機,運行此工程。ADT會自動安裝app到手機(模擬器)并運行。But 運行后并沒有找到說明文檔里所說的配置按鈕,所以也就沒有跑起來。。。。。。。。。又一個多小時沒能上手。
    發(fā)表于 09-05 21:59

    【Thunderboard Sense試用體驗】機安裝APP

    對于手機用戶來說,下載Thunderboard APP需要去Google play下載,官網(wǎng)并不提供安裝包和下載鏈接。而大陸又有限制,這困擾了一大批的用戶。下面我來講述一下自己使用
    發(fā)表于 06-24 23:51

    聘尋APP開發(fā)工程師

    因增加運營效益,現(xiàn)誠聘APP開發(fā)工程師只需閣下的技術,我們提供一切材料,目前需求量大成功制作APP并上架各大安
    發(fā)表于 03-11 19:24

    【有獎體驗】+APP自動生成源碼

    【有獎體驗】+APP自動生成源碼大佬們都在使用開發(fā)板上的自動代碼生成,有MCU的、有SOC的,都試過了,那么我就試個APP的吧。可惜的是
    發(fā)表于 07-09 16:50

    手機APP通過藍牙不能連接上stm32的單片機的藍牙模塊

    手機APP通過藍牙連接不上stm32單片機的藍牙模塊,之前是自己寫的APP發(fā)現(xiàn)連接不上,后來自己下載一個
    發(fā)表于 04-27 22:58

    ***版哪個好用

    跨境瀏覽器APP輕搜跨境瀏覽器APP高效手機網(wǎng)頁瀏覽工具,軟件自動連接網(wǎng)絡,不僅可以登錄國內(nèi)的各大平臺網(wǎng)站,還可以進入外網(wǎng),不需要加速器,給你超便利的體驗。輕搜瀏覽器
    發(fā)表于 09-24 14:56

    如何用AltBeaconAPI開發(fā)Beacon原型APP

    如何用AltBeaconAPI開發(fā)Beacon原型APP
    發(fā)表于 05-21 06:32

    鴻蒙、iOS、開發(fā)者數(shù)量,APP數(shù)量大對比,差距有多大呢?

    ,只要開發(fā)者數(shù)量多了,APP就多了,生態(tài)就起來了。那么我們對比一下當前華為鴻蒙、蘋果iOS、谷歌開發(fā)者數(shù)量、
    發(fā)表于 08-30 14:27

    如何通過模擬器實現(xiàn)APP控制小車?

    如何通過模擬器實現(xiàn)APP控制小車?
    發(fā)表于 01-19 06:29

    如何利用App inventor編寫app控制ESP8266?

    如何利用App inventor編寫app控制ESP8266?
    發(fā)表于 02-11 07:04

    【吉方工控G-3288-02開發(fā)板試用體驗】-RK3288系統(tǒng)的WIFI聯(lián)網(wǎng)測試以及APK安裝器APP安裝運行測試體驗

    系統(tǒng)預裝的“APK安裝器”APP,可以將自行開發(fā)APP(后綴為APK的程序文件)安裝到G-3288-02
    發(fā)表于 03-29 13:14

    (遠程控制)App inventor 編寫app控制 ESP8266

    App inventor 編寫app控制 ESP8266第一 下載ESP8266示例(arduino ide 編程開發(fā))第二 修改dem
    發(fā)表于 12-08 17:06 ?29次下載
    (遠程控制)<b class='flag-5'>App</b> inventor 編寫<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>app</b>控制 ESP8266

    Arduino/Android藍牙伺服電機控制APP

    電子發(fā)燒友網(wǎng)站提供《Arduino/Android藍牙伺服電機控制APP.zip》資料免費下載
    發(fā)表于 12-05 09:14 ?4次下載
    Arduino/Android藍牙伺服電機控制<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>APP</b>

    云視角APP更新通知

    我司于2021年12月23日更新發(fā)布了云視角APP,用戶可通過手機應用寶軟件自行下載更新。由于我司產(chǎn)品的豐富,功能不斷優(yōu)化,我司于今
    的頭像 發(fā)表于 03-31 09:47 ?762次閱讀
    云視角<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>APP</b>更新通知
    主站蜘蛛池模板: 免费看美女毛片 | 亚洲激情婷婷 | 日韩美女拍拍免费视频网站 | 国产nv精品你懂得 | 四虎影院最新网站 | 五月亭亭激情五月 | 国产激烈无遮挡免费床戏视频 | 日本特黄在线观看免费 | 亚洲黄色一区二区 | 免费在线观看你懂的 | 色欧美在线视频 | 五月激情片 | 男女午夜特黄毛片免费 | 天堂影院jav成人天堂免费观看 | 男人都懂得网址 | 特级毛片aaaa级毛片免费 | 福利视频亚洲 | 欧美成人影院 | 激情九月 | 99久精品 | 伊伊成人网 | 日本媚薬痉挛在线观看免费 | 好紧好爽的午夜寂寞视频 | 久久黄视频 | 国产三片理论电影在线 | 亚洲免费人成在线视频观看 | 国产一级毛片外aaaa | 啪啪网站视频 | 在线亚洲一区二区 | 成年美女 | 花怜write. as| vip免费观看 | 手机看片国产免费现在观看 | 综合婷婷丁香 | 国产女主播在线 | 欧美成人精品久久精品 | 欧美夜夜夜 | 视频一区中文字幕 | 中文字幕色综合久久 | 欧美日韩一级视频 | 天天视频天天爽 |