Difference between revisions of "Template:FriendlyThings Installation Guide/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
Line 1: Line 1:
==如何在自已的app中使用硬件访问库==
+
===如何在自已的app中使用硬件访问库===
===Step1) 集成libfriendlyarm-hardware.so到你的工程目录===
+
====Step1) 集成libfriendlyarm-things-rk3399.so到你的工程目录====
 
克隆以下仓库到本地:
 
克隆以下仓库到本地:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 11: Line 11:
 
├── libs
 
├── libs
 
│   ├── arm64-v8a
 
│   ├── arm64-v8a
│   │   └── libfriendlyarm-hardware.so
+
│   │   └── libfriendlyarm-things-rk3399.so
 
│   └── armeabi
 
│   └── armeabi
│      └── libfriendlyarm-hardware.so
+
│      └── libfriendlyarm-things-rk3399.so
 
├── src
 
├── src
 
│   └── com
 
│   └── com
Line 34: Line 34:
 
import com.friendlyarm.AndroidSDK.BoardType;
 
import com.friendlyarm.AndroidSDK.BoardType;
 
</syntaxhighlight>
 
</syntaxhighlight>
===Step2) 让你的app拥有system权限===
+
====Step2) 让你的app拥有system权限====
 
你的app需要拥有system权限,才能访问硬件资源; <br />
 
你的app需要拥有system权限,才能访问硬件资源; <br />
 
请参考下面的方法修改你 app 的 AndroidManifest.xml 和 Android.mk这两个文件; <br />
 
请参考下面的方法修改你 app 的 AndroidManifest.xml 和 Android.mk这两个文件; <br />
 
并且最好将你的app放到Android源码中去编译,这一步不是必需的,但是建议这么做,如果你的app在外部编译,你需要对apk进行签名才能让你的app拥有system权限(新手不太建议,过程比较繁琐)。<br />
 
并且最好将你的app放到Android源码中去编译,这一步不是必需的,但是建议这么做,如果你的app在外部编译,你需要对apk进行签名才能让你的app拥有system权限(新手不太建议,过程比较繁琐)。<br />
====修改AndroidManifest.xml====
+
=====修改AndroidManifest.xml=====
 
在应用程序的AndroidManifest.xml中的manifest节点中加入以下属性:
 
在应用程序的AndroidManifest.xml中的manifest节点中加入以下属性:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
android:sharedUserId="android.uid.system"
 
android:sharedUserId="android.uid.system"
 
</syntaxhighlight>
 
</syntaxhighlight>
====修改Android.mk====
+
=====修改Android.mk=====
 
编写一个Android.mk文件(最简单的方法就是拷贝示例中的Android.mk文件),修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行:
 
编写一个Android.mk文件(最简单的方法就是拷贝示例中的Android.mk文件),修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行:
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
Line 59: Line 59:
 
include $(BUILD_PACKAGE)
 
include $(BUILD_PACKAGE)
 
</syntaxhighlight>
 
</syntaxhighlight>
===Step3) 在 Android源代码中编译你的app===
+
====Step3) 在 Android源代码中编译你的app====
 
先在 Android源代码根目录调用 setenv.sh 导出环境变量,然后进入你的 app 目录,使用mm命令编译; <br />
 
先在 Android源代码根目录调用 setenv.sh 导出环境变量,然后进入你的 app 目录,使用mm命令编译; <br />
 
例子:编译 GPIO_LED_Demo,以RK3399平台为例: <br />
 
例子:编译 GPIO_LED_Demo,以RK3399平台为例: <br />

Revision as of 06:34, 26 October 2018

1 如何在自已的app中使用硬件访问库

1.1 Step1) 集成libfriendlyarm-things-rk3399.so到你的工程目录

克隆以下仓库到本地:

git clone https://github.com/friendlyarm/android-libfriendlyarm-hardware.git

接着复制 libs 目录下的所有内容到你的工程目录下,然后在你的Android项目的src目录下创建com/friendlyarm目录,将java/AndroidSDK目录拷贝进去即可,最后的目录的结构看上去是这样的 (注:AndroidStudio的项目可能会稍有不同,但大致如此):

YourProject/
├── AndroidManifest.xml
├── libs
│   ├── arm64-v8a
│   │   └── libfriendlyarm-things-rk3399.so
│   └── armeabi
│       └── libfriendlyarm-things-rk3399.so
├── src
│   └── com
│       └── friendlyarm
│           ├── AndroidSDK
│           │   ├── BoardType.java
│           │   ├── FileCtlEnum.java
│           │   ├── GPIOEnum.java
│           │   ├── HardwareControler.java
│           │   ├── SPIEnum.java
│           │   ├── SPI.java
│           │   └── WatchDogEnum.java

使用以下方法导入它们,主要的接口都集中在 HardwareControler.java文件中:

import com.friendlyarm.AndroidSDK.HardwareControler;
import com.friendlyarm.AndroidSDK.SPIEnum;
import com.friendlyarm.AndroidSDK.GPIOEnum;
import com.friendlyarm.AndroidSDK.FileCtlEnum;
import com.friendlyarm.AndroidSDK.BoardType;

1.2 Step2) 让你的app拥有system权限

你的app需要拥有system权限,才能访问硬件资源;
请参考下面的方法修改你 app 的 AndroidManifest.xml 和 Android.mk这两个文件;
并且最好将你的app放到Android源码中去编译,这一步不是必需的,但是建议这么做,如果你的app在外部编译,你需要对apk进行签名才能让你的app拥有system权限(新手不太建议,过程比较繁琐)。

1.2.1 修改AndroidManifest.xml

在应用程序的AndroidManifest.xml中的manifest节点中加入以下属性:

android:sharedUserId="android.uid.system"
1.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)

1.3 Step3) 在 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