基于Nano Pi NEO4開發闆的AS項目開發
基于Nano Pi NEO4開發闆的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源碼太大,下載下傳慢。
官方方式
第一步:修改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
個人方式
第一步:打包apk
在進行這一步之前,首先應在AndroidManifest.xml中的manifest節點中加入以下屬性:
android:sharedUserId="android.uid.system"
因為我們在調試軟體的時候不能先加入這一節點,否則軟體将會運作報錯,無法安裝也無法調試,是以我們先要把非通路硬體功能實作,在真機調試完畢之後,在加入這一節點。然後使用AS打包軟體。具體如何打包請自行百度。
第二步:下載下傳android8.1 簽名工具
在官方給出的資料裡面,我們很輕易就能找到相對應的簽名工具。具體連結在:
FriendlyELEC-RK3399àandroid-platform-key-filesàandroid8裡面。
下載下傳上圖三個檔案,然後将其複制到Ubuntu任意目錄下。
第三步:在Ubuntu下安裝jdk開發環境
首先檢視是否已經安裝jdk,ctrl+Alt+T打開終端,輸入指令,如果出現如下所示,即說明已經安裝過jdk開發環境了,是以跳過以下步驟,否則請按照以下步驟安裝jdk。
[email protected]:~$ 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下,在終端中解壓檔案:
[email protected]:~$ 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沒有安裝。
如果沒有出現上圖所示情況,那麼請略過下面的步驟:
安裝adbsudo apt-get install android-tools-adb
adb version下載下傳apk到開發闆上
選擇簽名之後的apk檔案,然後在終端輸入指令下載下傳
adb install-multiple -r -t app-release-signed.apk
出現下圖所示情況表明安裝完畢
我們提供了腳本,腳本内容即為下載下傳指令終端中輸入
./install.sh //如果簽名之後的檔案不一緻,請修改在運作
如果出現如下圖所示的情況,請先到開發闆中解除安裝之前的舊版本軟體,因為之前調試時所用的簽名與現在簽名不一緻。
檢驗結果
自行檢測硬體資源通路是否有效。
基于Nano Pi NEO4開發闆的AS項目開發相關教程