基於Nano Pi NEO4開發板的AS項目開發

基於Nano Pi硬件的AS項目開發

  • Andro Studio集成Nano Pi硬件資源庫

打開AS,新建工程之後,打開appàsrcàmain其目錄結構應該是如下樣式:

─ main

│   ├── AndroidManifest.xml

│   ├── java

│   │   └── com

│   │       └── friendlyarm

│   │           ├── FriendlyThings

│   │           │   ├── BoardType.java

│   │           │   ├── FileCtlEnum.java

│   │           │   ├── GPIOEnum.java

│   │           │   ├── HardwareControler.java

│   │           │   ├── SPIEnum.java

│   │           │   ├── SPI.java

│   │           │   └── WatchDogEnum.java

│   ├── jniLibs

│   │   ├── arm64-v8a

│   │   │   └── libfriendlyarm-things.so

│   │   └── armeabi

│   │       └── libfriendlyarm-things.so

   └── res

 

 

 

這個是Nano Pi的資源目錄,去官網下載源碼之後,直接複製到appàsrcàmainàjava裏面,不要做任何修改。

 

 

 

 

 

在java的同級目錄下新建jniLibs文件夾,將Nano Pi的庫引入

 

 

  • 系統簽名

因爲要開發的軟件最終要訪問Nano Pi的硬件資源,所以必須給軟件打上系統簽名。Nano Pi官方推薦的方式是在android 8.1的源碼上進行編譯,然後獲取系統簽名。因此這裏提供兩種方式,第一種是官方方式,第二種是個人方式。個人比較推崇第二種方式,因爲android 8.1源碼太大,下載慢。

 

  1. 官方方式

第一步:修改AndroidManifest.xml

在應用程序的AndroidManifest.xml中的manifest節點中加入以下屬性:

android:sharedUserId="android.uid.system"

第二步:修改Android.mk

編寫一個Android.mk文件(最簡單的方法就是拷貝示例中的Android.mk文件),修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := 你的項目名

LOCAL_CERTIFICATE := platform

LOCAL_MODULE_TAGS := optional

LOCAL_CFLAGS := -lfriendlyarm-hardware

include $(BUILD_PACKAGE)

最後一步:在 Android源代碼中編譯你的app

先在 Android源代碼根目錄調用 setenv.sh 導出環境變量,然後進入你的 app 目錄,使用mm命令編譯;

例子:編譯 GPIO_LED_Demo,以RK3399平臺爲例:

cd rk3399-android-8.1

. setenv.sh

cd vendor/friendlyelec/apps/GPIO_LED_Demo

mm

 

更多請查看官方鏈接http://wiki.friendlyarm.com/wiki/index.php/FriendlyThings_for_RK3399/zh

 

  1. 個人方式

第一步打包apk

在進行這一步之前,首先應在AndroidManifest.xml中的manifest節點中加入以下屬性:

android:sharedUserId="android.uid.system"

因爲我們在調試軟件的時候不能先加入這一節點,否則軟件將會運行報錯,無法安裝也無法調試,所以我們先要把非訪問硬件功能實現,在真機調試完畢之後,在加入這一節點。然後使用AS打包軟件。具體如何打包請自行百度。

 

第二步:下載android 8.1 簽名工具

在官方給出的資料裏面,我們很輕易就能找到相對應的簽名工具。具體鏈接在:

FriendlyELEC-RK3399àandroid-platform-key-filesàandroid8裏面。

 

下載上圖三個文件,然後將其複製到Ubuntu任意目錄下。

第三步:在Ubuntu下安裝jdk開發環境

首先查看是否已經安裝jdk,ctrl+Alt+T打開終端,輸入命令,如果出現如下所示,即說明已經安裝過jdk開發環境了,所以跳過以下步驟,否則請按照以下步驟安裝jdk。

kylin@ceoifung:~$ java -version

java version "13.0.2" 2020-01-14

Java(TM) SE Runtime Environment (build 13.0.2+8)

Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

 

如果沒有出現上述的內容,表明沒有安裝jdk開發環境,所以請跟隨我接下來操作。

  • 首先進入以下網址下載jdk:

https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

下載下圖所框選的jdk。

 

  • 第二步:解壓jdk包

將下載的jdk包複製到Ubuntu下,在終端中解壓文件:

kylin@ceoifung:~$ tar -zxvf jdk-13.0.2_linux-x64_bin.tar.gz

 

 

  • 第三步:將解壓後的文件移到/usr/lib目錄下

cd /usr/lib

sudo mkdir –p jdk/jdk-13.0.2

sudo mv ~/jdk-13.0.2 /usr/lib/jdk

ll jdk/jdk-13.0.2

執行完之後,出現下圖所示的內容,即表明移動成功。

 

  • 第四步:配置java環境變量

這裏是將環境變量配置在etc/profile,即爲所有用戶配置JDK環境。

使用命令打開/etc/profile文件,進行編輯:

sudo vim /etc/profile

在末尾添加以下幾行文字:

#set java env

export JAVA_HOME=/usr/lib/jdk/jdk-13.0.2

export JRE_HOME=${JAVA_HOME}/jre    

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    

export PATH=${JAVA_HOME}/bin:$PATH

執行命令使修改立即生效

source /etc/profile

查看java開發環境是否安裝完畢,終端中輸入如下指令:

java -version

第四步:複製libconscrypt_openjdk_jni.so文件

libconscrypt_openjdk_jni.so文件存在於android8.1源碼的以下路徑中:

prebuilts/sdk/tools/linux/lib64/

取得libconscrypt_openjdk_jni.so文件之後,將其複製到簽名工具所在的根目錄下。

第五步簽名

在簽名工具的根目錄下,將之前打包的apk文件複製到此,然後打開終端,輸入以下命令:

java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 app-release.apk app-release-signed.apk

注意:app-release.apk簽名前的安裝包

app-release-signed.apk簽名後的安裝包

如果你待簽名的apk文件名爲app-release.apk可以直接在終端運行start.sh文件進行簽名

./start.sh

如果apk名稱不爲app-release的話打開start.sh文件進行修改

運行完該條指令之後,簽名工具的根目錄會生成簽名之後的安裝包

第六步:通過ADB安裝apk 到開發板上

  • 首先查看是否已經安裝了adb,終端輸入以下命令:

adb version

如果出現下圖所示的情況,表示adb沒有安裝。

 

如果沒有出現上圖所示情況,那麼請略過下面的步驟:

  • 安裝adb

sudo apt-get install android-tools-adb

adb version

  • 下載apk到開發板上

選擇簽名之後的apk文件,然後在終端輸入指令下載

adb install-multiple -r -t app-release-signed.apk

出現下圖所示情況表明安裝完畢

 

我們提供了腳本,腳本內容即爲下載指令終端中輸入

./install.sh    //如果簽名之後的文件不一致,請修改在運行

 

如果出現如下圖所示的情況,請先到開發板中卸載之前的舊版本軟件,因爲之前調試時所用的簽名與現在簽名不一致。

 

  • 檢驗結果

自行檢測硬件資源訪問是否有效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章