基于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源码太大,下载慢。
- 官方方式
第一步:修改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
- 个人方式
第一步:打包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 //如果签名之后的文件不一致,请修改在运行 |
如果出现如下图所示的情况,请先到开发板中卸载之前的旧版本软件,因为之前调试时所用的签名与现在签名不一致。
- 检验结果
自行检测硬件资源访问是否有效。
基于Nano Pi NEO4开发板的AS项目开发相关推荐
- [Intel Edison开发板] 04、Edison开发基于nodejs和redis的服务器搭建
一.前言 intel-iot-examples-datastore 是Intel提供用于所有Edison开发板联网存储DEMO所需要的服务器工程.该工程是基于nodejs和redis写成的一个简单的工 ...
- 【华为云技术分享】基于小熊派开发板的智慧路灯开发版本更新
1 主要功能 (1)光敏传感器感知光照强度并上发. (2)实现在云端对LED灯的开关控制. (3)通过设定传感器阈值,设定LED灯的自动开关. 2 目的及意义 (1)通过本次实验加深对于小熊派开发板的 ...
- 基于Arduino Uno开发板的红外遥控开发
基于Arduino Uno开发板的红外遥控开发 1 准备 1.1 硬件与软件 1.2 走线 2 代码 2.1 ReceiveDump 2.2 SendRawDemo 1 准备 1.1 硬件与软件 单片 ...
- 痞子衡嵌入式:把玩i.MXRT1062 TencentOS Tiny EVB_AIoT开发板(1) - 开发环境搭建与点灯...
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1062 TencentOS Tiny EVB_AIoT开发板环境搭建与点灯. 腾讯 TencentOS 团队于2021年1 ...
- ZYNQ RFSoc开发板-usrp软件无线电X410mini开发板-5G评估板
RFSoc开发板-usrp软件无线电X410mini开发板-5G评估板 Zynq® UltraScale+™ RFSoC ZCU208 评估套件是面向开箱即用评估及前沿应用开发的理想 RF 测试平台. ...
- arm11 s3c6410 开发板比较 哪个公司的arm11开发板好? arm11开发板推荐
代理arm11开发板已经几个月了,说下我自己的看法. 我首先用语言描述一下国内主流的arm开发板情况,个人对各个公司开发板的看法,仅代表个人意见,没有针对某个公司的意思,由于6410 的开发难度以及工 ...
- JAVA硬件开发板_用Java开发的【智能语音开发板MEGA ESP32AI】
有点激动 ~ ~ ~ 新鲜出炉,用视频看看效果哦 我们新研发出世的语音开发板MEGA ESP32AI,来看看吧,有点腻害哦!!!先演示下功能语音控制开关等.播报天气 戳下面链接看视频哦? 这些都是怎么 ...
- [Intel Edison开发板] 02、Edison开发板入门
一.前言 Start from the link: 开始学习的链接 上面链接是官网的教程,按照教程可以开发板入门: 其中第一步是了解开发板,涉及到如何组装.如何连线.一些主要的接口简单介绍等信息: 第 ...
- 开发板——在X210开发板上进行裸机开发的流程
流程总结 本文以"LED流水灯"为例,说明在X210开发板上进行裸机开发的流程. 步骤一:搭建嵌入式Linux开发环境 在虚拟机中安装与配置Linux系统,并安装交叉编译工具链: ...
最新文章
- MATLAB基本操作(四):结构体struct元胞数组cell
- 跟我一起写 Makefile(十二)
- 第七章之main函数和启动例程
- Android之SharedPreferences 存储复杂对象
- 信息学奥赛一本通 1026:空格分隔输出 | OpenJudge NOI 1.1 06
- 时间机器(CDQ分治)
- ns-3 教程 —— 入门
- 最新版Eclipse下载及安装(详细)
- 计算机毕业设计JAVA图书个性化推荐系统mybatis
- 本科毕业论文外文文献翻译怎么找?
- qq空间已删信息服务器,qq空间恢复已删除的说说方法
- 通信原理(三)香农三大定理
- CleanMyMac X真正好用的Mac电脑系统优化软件应用工具
- Google大佬自述:天才程序员竟也有不为人知的秘密,看完真的学到了!
- nginxpcmobile
- 操作系统实验5 设备管理
- 锐龙r9 5900hx和i7 11800h哪个好 i711800h和锐龙r95900hx对比
- 工作小笔记——使用Cartographer建图和调优
- 基于51单片机16*32点阵显示屏的设计与实现
- MySQL安装包下载地址 各个版本的都有哦!
热门文章
- SQL server.数据库增删改查
- 【文献翻译】Epileptic Seizures Detection Using Deep Learning Techniques: A Review
- 一个点围绕另一个点旋转后的坐标
- PostGIS中的常用函数
- spark.read.option参数
- Windows注册服务的几种方式
- 如何清空python的IDLE?
- 字符串String s =sfds55d676455dfg32434eertre; 怎么样把非数字全部去除,只保留数字?
- JQuery - 反向选择器
- SNAT(源地址转换)