色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

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

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

3568開發板

1.AndroidStudio工具配置

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

1.png

圖1.1:添加NDK和CMake支持

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

2.新建NativeC++工程

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

2.png

圖2.1:新建NativeC++項目

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

3.png

圖2.2:native項目設置

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

4.png

圖2.3:C++Standard選擇

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

5.png

圖2.4:新建項目全貌

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

3.Native項目開發

3.1CPP開發

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

6.png

圖標,表示“ToolWindow”顯示為項目,點擊該圖標會有不同的視圖選擇,這里默認是“Android”視圖,現在點擊“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++開發的地方:CMakeLists.txt:編譯腳本,用于告知如何編譯項目中的本地庫。native-lib.cpp:創建的本地庫示例代碼模板,后期代碼編寫主要在這個文件里面進行。現在分別詳細介紹一下這兩個文件,CMakeLists.txt解釋如下:

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

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

#include

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

3.2建立接口類文件

現在新建一個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接口

點擊左側ToolWindowBar的

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


15.png

圖3.5:Terminal窗口

運行下面的命令:

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

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

/*DONOTEDITTHISFILE-itismachinegenerated*/

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

在構建完成后可以發現生成了多個libcryprosdr.so文件,以滿足多個架構的需求:

20.png

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


3.4MainActivity及布局文件的編寫

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

21.png

圖3.7:cryptoSdr顯示界面

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

3.4.1Usid的顯示

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

publicclassMainActivityextendsAppCompatActivity{

3.4.2 選擇所操作的page對象

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

publicclassMainActivityextendsAppCompatActivity{

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

3.4.3讀取page內容

讀取page內容需要通過READPAGE按鈕觸發:

publicclassMainActivityextendsAppCompatActivity{

3.4.4 更新page內容

更新page內容需要通過READPAGE按鈕觸發:

publicclassMainActivityextendsAppCompatActivity{

4.轉為JniLibs項目

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

4.1新建jniLibs目錄

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

26.png

圖4.1:newDirecrory

將新建的目錄命名為jniLibs。

4.2拷貝libcryprosdr.so到jniLibs

現在將libcryprosdr.so文件拷貝進來:

27.png

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

4.3刪除cpp目錄

現在需要刪除敏感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的編譯

將上面內容刪除后重新編譯工程即可。

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

    關注

    33

    文章

    1573

    瀏覽量

    72439
  • 加密芯片
    +關注

    關注

    2

    文章

    112

    瀏覽量

    23674
  • 安卓
    +關注

    關注

    5

    文章

    2126

    瀏覽量

    57144
  • RK3568
    +關注

    關注

    4

    文章

    514

    瀏覽量

    5034
收藏 人收藏

    評論

    相關推薦

    【藍牙4.1】app安裝失敗

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

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

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

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

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

    聘尋APP開發工程師

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

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

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

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

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

    ***版哪個好用

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

    如何用AltBeaconAPI開發Beacon原型APP

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

    鴻蒙、iOS、開發者數量,APP數量大對比,差距有多大呢?

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

    如何通過模擬器實現APP控制小車?

    如何通過模擬器實現APP控制小車?
    發表于 01-19 06:29

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

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

    【吉方工控G-3288-02開發板試用體驗】-RK3288系統的WIFI聯網測試以及APK安裝器APP安裝運行測試體驗

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

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

    App inventor 編寫app控制 ESP8266第一 下載ESP8266示例(arduino ide 編程開發)第二 修改dem
    發表于 12-08 17:06 ?28次下載
    (遠程控制)<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

    電子發燒友網站提供《Arduino/Android藍牙伺服電機控制APP.zip》資料免費下載
    發表于 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日更新發布了云視角APP,用戶可通過手機應用寶軟件自行下載更新。由于我司產品的豐富,功能不斷優化,我司于今
    的頭像 發表于 03-31 09:47 ?543次閱讀
    云視角<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>APP</b>更新通知
    主站蜘蛛池模板: 久久99AV无色码人妻蜜柚| 伊人久久精品AV无码一区| 国产成人在线观看网站| 日本另类z0zxhd| 俄罗斯爱爱| 日韩一区二区在线免费观看| 攵女yin乱合集高h| 思思久99久女女精品| 国产精品无码AV天天爽色欲| 亚欧免费观看在线观看更新| 国产乱码一区二区三区| 亚洲精品国偷拍电影自产在线 | 天天躁日日躁狠狠躁午夜剧场| 高清国产mv视频在线观看| 同居了嫂子在线观看| 国产日韩欧美另类| 亚洲偷自拍精品视频在线观看| 久久精品国产免费播放| 777EY_卡通动漫_1页| 欧美精品熟妇乱| 大乳牛奶女magnet| 午夜想想爱午夜剧场| 黄色三级图片| 在线高清无码欧美久章草| 奶头被客人吸得又红又肿| 成人国产亚洲精品A区天堂蜜臀 | 99热久久视频只有精品6| 欧美激情一区二区三区视频 | FREECHINESE东北群交| 日韩在线av免费视久久| 国产欧美无码亚洲毛片| 亚洲无线观看国产| 美女快播第一网| 成人在线视频免费观看| 小黄文污到你湿| 久久水蜜桃亚洲AV无码精品偷窥| 99久久精品国产国产毛片| 色妹子综合| 精品久久久无码21P发布| 91久久精品国产亚洲| 三级电影免费看|