基于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

更多请查看官方链接FriendlyThings for RK3399/zh - FriendlyARM WiKi

  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:

Java Downloads | Oracle

下载下图所框选的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    //如果签名之后的文件不一致,请修改在运行

如果出现如下图所示的情况,请先到开发板中卸载之前的旧版本软件,因为之前调试时所用的签名与现在签名不一致。

  • 检验结果

自行检测硬件资源访问是否有效。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值