Difference between revisions of "Android Thing: Android Hardware Programming/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(开发资料)
Line 16: Line 16:
 
[[File:Smart4418SDK+OLED.png|frameless|500px|Smart4418SDK+OLED]]<br /><br />
 
[[File:Smart4418SDK+OLED.png|frameless|500px|Smart4418SDK+OLED]]<br /><br />
 
[[File:NanoPCT3-I2C-LCD1602.jpg|frameless|500px|NanoPCT3-I2C-LCD1602]]<br />
 
[[File:NanoPCT3-I2C-LCD1602.jpg|frameless|500px|NanoPCT3-I2C-LCD1602]]<br />
 
 
==支持的开发板==
 
==支持的开发板==
 
* NanoPC-T3/NanoPi-M3: Android 5
 
* NanoPC-T3/NanoPi-M3: Android 5
Line 24: Line 23:
 
* Tiny6410/Mini6410: Android 2.3
 
* Tiny6410/Mini6410: Android 2.3
 
<br />
 
<br />
 
 
==硬件示例程序集合==
 
==硬件示例程序集合==
 
* github地址:https://github.com/friendlyarm/AndroidHardwareAccess
 
* github地址:https://github.com/friendlyarm/AndroidHardwareAccess
 
 
==Andorid示例源代码编译与部署(以SerialPortDemo进行说明) ==
 
==Andorid示例源代码编译与部署(以SerialPortDemo进行说明) ==
 
===1) eclipse导入源代码,以SerialPortDemo为例===
 
===1) eclipse导入源代码,以SerialPortDemo为例===
 
然后打开eclipse,在eclipse菜单File上选择Import导入项目,选择Existing Android Code Into Workspace,<br />
 
然后打开eclipse,在eclipse菜单File上选择Import导入项目,选择Existing Android Code Into Workspace,<br />
我们把项目名称改为  SerialPortDemo:
+
我们把项目名称改为  SerialPortDemo:<br />
 
[[File:AndroidHW01.png|500px]]
 
[[File:AndroidHW01.png|500px]]
 
[[File:AndroidHW02.png|500px]]
 
[[File:AndroidHW02.png|500px]]
 
 
===2) 编辑源代码,根据需要更改串口设备文件名称===
 
===2) 编辑源代码,根据需要更改串口设备文件名称===
 
DEMO要访问的串口设备写死在以下源代码文件的:src/com/friendlyarm/SerialPortDemo/SerialPortDataProcessView.java<br />
 
DEMO要访问的串口设备写死在以下源代码文件的:src/com/friendlyarm/SerialPortDemo/SerialPortDataProcessView.java<br />
你需要根据实际情况更改:
+
你需要根据实际情况更改:<br />
[[File:AndroidHW03.png|500px]]
+
[[File:AndroidHW03.png|500px]]<br />
<br />
+
 
在 NanoPi M1 开发板上 ,串口对应的设备名称如下:<br />
 
在 NanoPi M1 开发板上 ,串口对应的设备名称如下:<br />
 
UART1-> /dev/ttyS1<br />
 
UART1-> /dev/ttyS1<br />
Line 46: Line 41:
  
 
===3) 编译DEMO源代码,并导出apk文件===
 
===3) 编译DEMO源代码,并导出apk文件===
在Package Explorer上点击项目名称,保证其处于选中状态:
+
在Package Explorer上点击项目名称,保证其处于选中状态:<br />
[[File:AndroidHW04.png|500px]]
+
[[File:AndroidHW04.png|500px]]<br />
在eclipse菜单File上选择Export...:
+
在eclipse菜单File上选择Export...:<br />
[[File:AndroidHW05.png|500px]]
+
[[File:AndroidHW05.png|500px]]<br />
选择Export Android Application:
+
选择Export Android Application:<br />
[[File:AndroidHW06.png|500px]]
+
[[File:AndroidHW06.png|500px]]<br />
选择项目SerialPortDemo:
+
选择项目SerialPortDemo:<br />
[[File:AndroidHW07.png|500px]]
+
[[File:AndroidHW07.png|500px]]<br />
这一步,Eclipse要求我们创建或选择自已的签名,这里我们选择Create new keystore,  填写key生成后保存的路径和密码,然后点next:
+
这一步,Eclipse要求我们创建或选择自已的签名,这里我们选择Create new keystore,  填写key生成后保存的路径和密码,然后点next:<br />
[[File:AndroidHW08.png|500px]]
+
[[File:AndroidHW08.png|500px]]<br />
继续参考下图完善签名信息,然后点next:
+
继续参考下图完善签名信息,然后点next:<br />
[[File:AndroidHW09.png|500px]]
+
[[File:AndroidHW09.png|500px]]<br />
接着选择APK文件的保存位置,这里我们选择保存到 signapk-files子目录下,以方便我们稍后要进行的签名操作:
+
接着选择APK文件的保存位置,这里我们选择保存到 signapk-files子目录下,以方便我们稍后要进行的签名操作:<br />
[[File:AndroidHW10.png|500px]]
+
[[File:AndroidHW10.png|500px]]<br />
点Finish完成APK的导出:
+
点Finish完成APK的导出:<br />
 
[[File:AndroidHW11.png|500px]]
 
[[File:AndroidHW11.png|500px]]
 
 
===4) 使用系统证书对APK进行重新签名===
 
===4) 使用系统证书对APK进行重新签名===
 
因为访问硬件需要APK有system权限,所以需要使用系统证对APK进行重新签名,<br />
 
因为访问硬件需要APK有system权限,所以需要使用系统证对APK进行重新签名,<br />

Revision as of 07:16, 18 December 2017

English

1 简介

友善电子开发了一个名为libfriendlyarm-hardware.so的函数库,用于Android应用程序访问开发板上的硬件资源,该函数库基于Android-NDK技术开发,提供便利的硬件访问接口,开发者无需掌握过多的嵌入式知识便可使用,有效提高开发进度。

2 目前支持的硬件设备

  • Serial Port
  • PWM
  • EEPROM
  • ADC
  • LED
  • LCD 1602 (I2C)
  • OLED (SPI)

等等, 接口包括I2C, SPI, GPIO常用的接口。

Smart4418SDK+OLED

NanoPCT3-I2C-LCD1602

3 支持的开发板

  • NanoPC-T3/NanoPi-M3: Android 5
  • Smart4418 SDK/NanoPC-T2/NanoPi-M2/NanoPi S2: Android 5, Android 4.4
  • Tiny4412: Android 4.2, Android 5
  • Tiny210/Smart210/Mini210: Android 4.2
  • Tiny6410/Mini6410: Android 2.3


4 硬件示例程序集合

5 Andorid示例源代码编译与部署(以SerialPortDemo进行说明)

5.1 1) eclipse导入源代码,以SerialPortDemo为例

然后打开eclipse,在eclipse菜单File上选择Import导入项目,选择Existing Android Code Into Workspace,
我们把项目名称改为 SerialPortDemo:
AndroidHW01.png AndroidHW02.png

5.2 2) 编辑源代码,根据需要更改串口设备文件名称

DEMO要访问的串口设备写死在以下源代码文件的:src/com/friendlyarm/SerialPortDemo/SerialPortDataProcessView.java
你需要根据实际情况更改:
AndroidHW03.png
在 NanoPi M1 开发板上 ,串口对应的设备名称如下:
UART1-> /dev/ttyS1
UART2 -> /dev/ttyS2

5.3 3) 编译DEMO源代码,并导出apk文件

在Package Explorer上点击项目名称,保证其处于选中状态:
AndroidHW04.png
在eclipse菜单File上选择Export...:
AndroidHW05.png
选择Export Android Application:
AndroidHW06.png
选择项目SerialPortDemo:
AndroidHW07.png
这一步,Eclipse要求我们创建或选择自已的签名,这里我们选择Create new keystore, 填写key生成后保存的路径和密码,然后点next:
AndroidHW08.png
继续参考下图完善签名信息,然后点next:
AndroidHW09.png
接着选择APK文件的保存位置,这里我们选择保存到 signapk-files子目录下,以方便我们稍后要进行的签名操作:
AndroidHW10.png
点Finish完成APK的导出:
AndroidHW11.png

5.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

5.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 权限,则打开串口设备会失败。

6 开发资料