Difference between revisions of "FriendlyThings/zh"
(updated by API) |
(updated by API) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[ | + | [[FriendlyThings|English]] |
{{FriendlyThings Introduction/zh}} | {{FriendlyThings Introduction/zh}} | ||
Line 9: | Line 9: | ||
==硬件示例程序集合== | ==硬件示例程序集合== | ||
− | * github地址:https://github.com/friendlyarm/ | + | * github地址:https://github.com/friendlyarm/friendlythings-examples |
==Andorid示例源代码编译与部署(以SerialPortDemo进行说明) == | ==Andorid示例源代码编译与部署(以SerialPortDemo进行说明) == |
Latest revision as of 08:50, 30 October 2018
Contents
1 简介
FriendlyThings是友善电子开发的一套安卓硬件开发SDK(函数库),安卓软件开发者可以通过它在Android应用程序中编程访问和控制ARM主板上的各种硬件资源,比如Uart, SPI, I2C, GPIO等接口,它基于Android-NDK技术开发,开发者无需掌握底层的嵌入式知识(尤其是驱动程序),就可以构建基于安卓系统的各种IoT物联网应用。
2 Android版本
我们提供的Android BSP已经包含FriendlyThings SDK(libfriendlyarm-things.so),可支持运行于如下Android平台版本:
2.1 RK3399平台
- Android 7.1.2-rk3399
BSP source code download link: https://gitlab.com/friendlyelec/rk3399-nougat
Latest ROM download link: http://download.friendlyelec.com/NanoPC-T4
- Android 8.1-rk3399
BSP source code download link: https://gitlab.com/friendlyelec/rk3399-android-8.1
Latest ROM download link: http://download.friendlyelec.com/NanoPC-T4
2.2 S5P6818平台
- Android 5-s5p6818
BSP source code download link: TODO
Latest ROM download link: TODO
2.3 S5P4418平台
- Android 4.4-s5p4418
BSP source code download link: TODO
Latest ROM download link: TODO
- Android 5-s5p4418
BSP source code download link: TODO
Latest ROM download link: TODO
2.4 Tiny4412平台
- Android 4.2-exynos4412
BSP source code download link: TODO
Latest ROM download link: TODO
- Android 5-tiny4412
BSP source code download link: TODO
Latest ROM download link: TODO
2.5 Tiny210/Smart210/Mini210平台
- Android 4.2-S5pv210
BSP source code download link: TODO
Latest ROM download link: TODO
2.6 Tiny6410/Mini6410平台
- Android 2.3-s3c6410
BSP source code download link: TODO
Latest ROM download link: TODO
3 开发板型号列表
FriendlyThings SDK(libfriendlyarm-things.so)适用于友善电子出品的如下系列主板:
3.1 RK3399
- NanoPC-T4
- NanoPi M4 (需外接eMMC模块)
- NanoPi NEO4 (需外接eMMC模块)
3.2 S5P6818
- NanoPC T3
- NanoPi M3
- NanoPi Fire3
- Smart6818
3.3 S5P4418
- Smart4418 SDK
- NanoPC T2
- NanoPi M2A
- NanoPi Fire2A
- NanoPi S2
3.4 Exynos4412
- Tiny4412
3.5 S5PV210
- Tiny210
- Smart210
- Mini210
3.6 S3C6410
- Tiny6410
- Mini6410
4 快速使用入门
4.1 (第1步) 集成libfriendlyarm-things.so到你的app
克隆以下仓库到本地:
git clone https://github.com/friendlyarm/friendlythings-sdk
接着复制 libs 目录下的所有内容到你的工程目录下,然后在你的Android项目的src目录下创建com/friendlyarm目录,将java/FriendlyThings目录拷贝进去即可,最后的目录的结构看上去是这样的 (注:AndroidStudio的项目可能会稍有不同,但大致如此):
YourProject/
├── AndroidManifest.xml
├── libs
│ ├── arm64-v8a
│ │ └── libfriendlyarm-things.so
│ └── armeabi
│ └── libfriendlyarm-things.so
├── src
│ └── com
│ └── friendlyarm
│ ├── FriendlyThings
│ │ ├── BoardType.java
│ │ ├── FileCtlEnum.java
│ │ ├── GPIOEnum.java
│ │ ├── HardwareControler.java
│ │ ├── SPIEnum.java
│ │ ├── SPI.java
│ │ └── WatchDogEnum.java
使用以下方法导入它们,主要的接口都集中在 HardwareControler.java文件中:
import com.friendlyarm.FriendlyThings.HardwareControler; import com.friendlyarm.FriendlyThings.SPIEnum; import com.friendlyarm.FriendlyThings.GPIOEnum; import com.friendlyarm.FriendlyThings.FileCtlEnum; import com.friendlyarm.FriendlyThings.BoardType;
4.2 (第2步) 让你的app拥有system权限
你的app需要拥有system权限,才能访问硬件资源;
请参考下面的方法修改你 app 的 AndroidManifest.xml 和 Android.mk这两个文件;
并且最好将你的app放到Android源码中去编译,这一步不是必需的,但是建议这么做,如果你的app在外部编译,你需要对apk进行签名才能让你的app拥有system权限(新手不太建议,过程比较繁琐)。
4.2.1 修改AndroidManifest.xml
在应用程序的AndroidManifest.xml中的manifest节点中加入以下属性:
android:sharedUserId="android.uid.system"
4.2.2 修改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)
4.3 (最后1步) 在 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
4.4 一个Android Studio的示例项目
https://github.com/friendlyarm/AndroidStudio-GPIODemo
5 函数库(libfriendlyarm-things.so)接口说明
请参考这份WiKi文档:FriendlyThings APIs/zh
6 硬件示例程序集合
7 Andorid示例源代码编译与部署(以SerialPortDemo进行说明)
7.1 1) eclipse导入源代码,以SerialPortDemo为例
然后打开eclipse,在eclipse菜单File上选择Import导入项目,选择Existing Android Code Into Workspace,
我们把项目名称改为 SerialPortDemo:
7.2 2) 编辑源代码,根据需要更改串口设备文件名称
DEMO要访问的串口设备写死在以下源代码文件的:src/com/friendlyarm/SerialPortDemo/SerialPortDataProcessView.java
你需要根据实际情况更改:
7.2.1 各个平台开发板的串口设备名称
- Allwinner H3/H5平台开发板 (NanoPi M1/NanoPi M1 Plus等)
UART1-> /dev/ttyS1
UART2 -> /dev/ttyS2
UART3 -> /dev/ttyS3 (仅NanoPi M1, NanoPi K1, NanoPi K1 Plus可用)
- S5P4418平台开发板 (NanoPi Fire2A/NanoPi M2A/NanoPi S2/NanoPC-T2等)
UART1 -> /dev/ttyAMA1 [注1]
UART2 -> /dev/ttyAMA2 [注1]
UART3 -> /dev/ttyAMA3
UART4 -> /dev/ttyAMA4
- S5P6818平台开发板 (NanoPi M3/NanoPC-T3等)
UART1 -> /dev/ttySAC1 [注1]
UART2 -> /dev/ttySAC2 [注1]
UART3 -> /dev/ttySAC3
UART4 -> /dev/ttySAC4
注1: 仅部分板子可用,具体请查看原理图.
7.3 3) 编译DEMO源代码,并导出apk文件
在Package Explorer上点击项目名称,保证其处于选中状态:
在eclipse菜单File上选择Export...:
选择Export Android Application:
选择项目SerialPortDemo:
这一步,Eclipse要求我们创建或选择自已的签名,这里我们选择Create new keystore, 填写key生成后保存的路径和密码,然后点next:
继续参考下图完善签名信息,然后点next:
接着选择APK文件的保存位置,这里我们选择保存到 signapk-files子目录下,以方便我们稍后要进行的签名操作:
点Finish完成APK的导出:
7.4 4) 使用系统证书对APK进行重新签名
因为访问硬件需要APK有system权限,所以需要使用系统证对APK进行重新签名,
在命令行下进入signapk-files子目录,然后执行以下命令签名即可:
cd signapk-files/ java -jar ./signapk.jar platform.x509.pem platform.pk8 ./SerialPortDemo.apk SerialPortDemo-Signed.apk
其中,signapk.jar以及签名文件platform.x509.pem和platform.pk8可在开发板资源下载目录的android-platform-key-files目录下找到。
7.5 5) 运行与调试
5.1) 安装APK,用microUSB线将电脑与开发板连接,用adb命令安装SerialPortDemo-Signed.apk:
adb install SerialPortDemo-Signed.apk
5.2) 调试: 运行 SerialPortDemo后,在adb shell命令行模式下执行:
ps -Z
然后找到com.friendlyarm.SerialPortDemo这个进程,如果前面的权限是如下所示,表明程序已经获得了 system 权限:
u:r:system_app:s0 system 1610 112 com.friendlyarm.SerialPortDemo
以上是Android4的,如果是Android5,则略有不同,不过都表示已经是 system 权限:
u:r:platform_app:s0 u0_a60 1905 138 com.friendlyarm.SerialPortDemo
如果程序没有获得 system 权限,则打开串口设备会失败。