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

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
==如何在自已的app中使用硬件访问库==
+
==快速使用入门==
===Step1) 集成libfriendlyarm-hardware.so到你的工程目录===
+
===(第1步) 集成libfriendlyarm-things.so到你的app===
 
克隆以下仓库到本地:
 
克隆以下仓库到本地:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/android-libfriendlyarm-hardware.git
+
git clone https://github.com/friendlyarm/friendlythings-sdk
 
</syntaxhighlight>
 
</syntaxhighlight>
接着复制 libs 目录下的所有内容到你的工程目录下,然后在你的Android项目的src目录下创建com/friendlyarm目录,将java/AndroidSDK目录拷贝进去即可,最后的目录的结构看上去是这样的 (注:AndroidStudio的项目可能会稍有不同,但大致如此):<br />
+
接着复制 libs 目录下的所有内容到你的工程目录下,然后在你的Android项目的src目录下创建com/friendlyarm目录,将java/FriendlyThings目录拷贝进去即可,最后的目录的结构看上去是这样的 (注:AndroidStudio的项目可能会稍有不同,但大致如此):<br />
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
YourProject/
 
YourProject/
Line 11: Line 11:
 
├── libs
 
├── libs
 
│   ├── arm64-v8a
 
│   ├── arm64-v8a
│   │   └── libfriendlyarm-hardware.so
+
│   │   └── libfriendlyarm-things.so
 
│   └── armeabi
 
│   └── armeabi
│      └── libfriendlyarm-hardware.so
+
│      └── libfriendlyarm-things.so
 
├── src
 
├── src
 
│   └── com
 
│   └── com
 
│      └── friendlyarm
 
│      └── friendlyarm
│          ├── AndroidSDK
+
│          ├── FriendlyThings
 
│          │   ├── BoardType.java
 
│          │   ├── BoardType.java
 
│          │   ├── FileCtlEnum.java
 
│          │   ├── FileCtlEnum.java
Line 28: Line 28:
 
使用以下方法导入它们,主要的接口都集中在 HardwareControler.java文件中:
 
使用以下方法导入它们,主要的接口都集中在 HardwareControler.java文件中:
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
import com.friendlyarm.AndroidSDK.HardwareControler;
+
import com.friendlyarm.FriendlyThings.HardwareControler;
import com.friendlyarm.AndroidSDK.SPIEnum;
+
import com.friendlyarm.FriendlyThings.SPIEnum;
import com.friendlyarm.AndroidSDK.GPIOEnum;
+
import com.friendlyarm.FriendlyThings.GPIOEnum;
import com.friendlyarm.AndroidSDK.FileCtlEnum;
+
import com.friendlyarm.FriendlyThings.FileCtlEnum;
import com.friendlyarm.AndroidSDK.BoardType;
+
import com.friendlyarm.FriendlyThings.BoardType;
 
</syntaxhighlight>
 
</syntaxhighlight>
===Step2) 让你的app拥有system权限===
+
===(第2步) 让你的app拥有system权限===
 
你的app需要拥有system权限,才能访问硬件资源; <br />
 
你的app需要拥有system权限,才能访问硬件资源; <br />
 
请参考下面的方法修改你 app 的 AndroidManifest.xml 和 Android.mk这两个文件; <br />
 
请参考下面的方法修改你 app 的 AndroidManifest.xml 和 Android.mk这两个文件; <br />
Line 59: Line 59:
 
include $(BUILD_PACKAGE)
 
include $(BUILD_PACKAGE)
 
</syntaxhighlight>
 
</syntaxhighlight>
===Step3) 在 Android源代码中编译你的app===
+
===(最后1步) 在 Android源代码中编译你的app===
 
先在 Android源代码根目录调用 setenv.sh 导出环境变量,然后进入你的 app 目录,使用mm命令编译; <br />
 
先在 Android源代码根目录调用 setenv.sh 导出环境变量,然后进入你的 app 目录,使用mm命令编译; <br />
 
例子:编译 GPIO_LED_Demo,以RK3399平台为例: <br />
 
例子:编译 GPIO_LED_Demo,以RK3399平台为例: <br />
Line 68: Line 68:
 
mm
 
mm
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
===一个Android Studio的示例项目===
 +
https://github.com/friendlyarm/AndroidStudio-GPIODemo

Latest revision as of 06:30, 28 August 2023

1 快速使用入门

1.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;

1.2 (第2步) 让你的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 (最后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

1.4 一个Android Studio的示例项目

https://github.com/friendlyarm/AndroidStudio-GPIODemo