天天看點

nanopi k2 android tv,基于Nano Pi NEO4開發闆的AS項目開發

基于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項目開發相關教程