Android的第一个工程,Android Things:撸起袖子来创建第一个Things工程
在前面的章节,我们利用官方的sample-simplepio项目的blink模块,给大家演示了如何导入和运行现成的Android Things工程。那么这个章节,我们来手把手的给大家演示,如何从零开始创建、开发和运行一个Android Things项目。
1.前期准备
在你开始创建你的Android Things项目之前,你必须完成以下事情:
更新你的SDK工具为24或者更高版本,更新的SDK工具可以让你能构建和测试Things应用。
更新你的SDK为Android 7.0(API 24)或者更高,更新的平台版本为Things应用提供了新的API。
Android Studio->Tools->Android->SDK Manager,如下图:
2.创建项目
前面我们已经看到了Android Things项目的开发环境、开发工具、项目结构和Android项目都是一致的,其实它就是一个Android项目。那么我们新创建一个Andoird项目ThingsDemo。
注意:创建和更新你的应用项目,为了访问Things新的API,你必须创建一个项目或者修改一个已存在的项目,它的目标为Android7.0(API 24)或者更高;
4.添加库
Android Things设备通过support library公开API,它并不是Android SDK的一部分。在你的app中声明Things Support Library依赖。
在你的应用级别的build.gradle文件中添加依赖映射:
ThingsDemo\app\build.gradle
apply plugin: 'com.android.application'
android {
... ...
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
... ...
provided 'com.google.android.things:androidthings:0.1-devpreview'
}在你的清单文件中添加things共享库条目:
ThingsDemo\app\src\main\AndroidManifest.xml
package="com.chengxiang.thingsdemo">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
... ...
5.声明主Activity
一个想运行到嵌入式设备的应用,必须在清单文件中声明一个Activity,作为系统启动后的主入口。应用包含下面属性的Intent Filger;
Action:ACTION_MAIN
Category:CATEGORY_DEFAUULT
Category:IOT_LAUNCHER
ThingsDemo\app\src\main\AndroidManifest.xml
package="com.chengxiang.thingsdemo">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
... ...
6.编译运行
这里我们尝试使用gradle构建任务的方式编译和运行项目,运行如下:
C:\Users\chengxiang.peng.QUNARSERVERS\AndroidThingsSources\ThingsDemo>gradle app:installDebug
Starting a Gradle Daemon, 1 incompatible and 2 stopped Daemons could not be reused, use --status for details
Incremental java compilation is an incubating feature.
The TaskInputs.source(Object) method has been deprecated and is scheduled to be removed in Gradle 4.0. Please use TaskInputs.file(Object).skipWhenEmpty() instead.
:app:preBuild UP-TO-DATE
... ...
:app:installDebug
Unable to get density for device iot_rpi3 - 7.0
Installing APK 'app-debug.apk' on 'iot_rpi3 - 7.0' for app:debug
Installed on 1 device.
BUILD SUCCESSFUL
Total time: 1 mins 31.038 secs
C:\Users\chengxiang.peng.QUNARSERVERS\AndroidThingsSources\ThingsDemo>adb shell am start com.chengxiang.thingsdemo/.MainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.chengxiang.thingsdemo/.MainActivity }
提示1:运行adb shell am start com.chengxiang.thingsdemo/.MainActivity命令的时候,报错error:unknown host service
分析1:因为运行adb命名需要使用5037端口,应该是某个程序占用的该端口,故报错。
处理1:找到占用端口的程序,并杀死。
欢迎大家关注“Android Things开发”微信公众号和加入讨论QQ群,在这里你可以获得Android Things相关的最新资讯,并且第一时间获得我的技术文章,和大家交流开发心得和遇到的问题噢!
Android的第一个工程,Android Things:撸起袖子来创建第一个Things工程相关推荐
- Swift基础:创建第一个Swift工程:Swift的基本语法
苹果公司在今年的WWDC大会上,除了发布了iOS8和Max OS X 10.10之外,还发布了一个新的编程语言Swift.不得不说,Swift有较大的转变,也使编程变得更加容易了,下面介绍了Swift ...
- WatchOS系统开发大全(3)-创建第一个WatchApp工程
创建第一个WatchApp工程 1.1-WatchOS2.0之后工程的创建 (1)点开xcode新建一个工程,选择Watch OS直接建一个Watch应用,点击next输入项目名称进行下一步 因为Wa ...
- 1. 创建第一个harmonyos工程
文章目录 创建HarmonyOS第一个项目 创建第一个HarmonyOS项目 创建HarmonyOS第一个项目 环境准备: JDK安装. DevEco Studio安装. HarmonyOS SDK安 ...
- 通俗易懂学 android,第一章节:android系统结构图
1.android就是一操作系统,说的再白点就是一个运行在LINUX操作系统上的视图软件, 所以"第一层"是linux系统,说好听就是LINUX内核 2.android这个系统是装 ...
- 手把手教你创建第一个Vivado工程
文章目录 1.打开vivado后点击首页"Create Project" 2.开始创建工程 3.给工程命名并选择工程路径 4.选择创建RTL工程 5.选择芯片类型 6.完成工程创建 ...
- IntelliJ IDEA创建第一个Vue工程
1.1 基本概念(基本概念来自网络学习) 1.1.1 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对C ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建
第 1 章 Android开发环境搭建 本章介绍了如何在个人电脑上搭建Android开发环境,主要包括:Android开发的发展历史是怎样的.Android Studio的开发环境是如何搭建的.如何创 ...
- android单元测试android环境,基于Robolectric的Android单元测试 —环境搭建与部署运行...
移动端的测试中,因为回归一些逻辑分支比较多的功能时工作量比较大,且不太适合用UI完成,尝试通过单元测试来完成.几经波折终于完成了一个功能的UT用例并在CI上部署运行,现总结如下: 一.Robolect ...
- android:layout_marginbottom,解决relativelayout下android:marginbottom无效
android:id="@+id/relativeLayout1″ android:layout_width="match_parent" android:layout_ ...
最新文章
- struct2 开发环境搭建 问题
- 从一道面试题,到“我可能看了假源码[2]
- ORA-16038的解决(日志无法归档)
- 【CodeForces - 501C】Misha and Forest (思维构造,树,数学异或)
- opengl画的弧线 为什么有一个半径_怪兽怎么画?简笔画怪兽教程来啦!跟孩子一起学习画萌萌的怪兽吧...
- windows 创建不可见账户
- fscapture设置中文_Fscapture是什么软件?有没有功能介绍?
- ethtool查看网卡以及修改网卡配置
- 第二章 python自定义函数与类(一)
- python实现qq自动点赞_python实现自动点赞
- 计算机找不到海信电视,海信电视突然看不了电视直播了,怎么解决?当贝市场良心分享...
- 娃娃乐学拼音软件许可及服务协议
- 我的spfa (= =)!
- 使用tensorflow2.x实现VGG
- scandir 参数
- 21Maven - 从私服下载jar包
- 【综述】NL2SQL (二) WikiSQL
- 《viva la vida》 歌词
- 回归,岭回归。LASSO回归
- 毕业设计 基于stm32的RFID与指纹识别的门禁系统 (项目开源)
热门文章
- python如何写二进制乘法_使用python写乘法口诀表
- NVIDIA Tesla K40C 和 AMD Firepro W8100 的对比
- Linux内核 eBPF基础:ftrace源码分析:过滤函数和开启追踪
- DPDK 跟踪库tracepoint源码实例分析
- Linux环境编程:fork系统调用及其陷阱 - 内存复用,文件不复用
- 一周文章导读:架构图;服务器;CPU
- segment段,setjmp和longjmp
- java i= i_java中 i!=i+1?你错了。 | 学步园
- Java实现RPC框架
- Javascript的数组操作(笔记)