http://blog.csdn.net/p106786860/article/details/60161020

——————————————————————————————————————————————————————————————————————————————————————

在前面的章节,我们利用官方的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

  1. apply plugin: 'com.android.application'
  2. android {
  3. ... ...
  4. }
  5. dependencies {
  6. compile fileTree(dir: 'libs', include: ['*.jar'])
  7. ... ...
  8. provided 'com.google.android.things:androidthings:0.1-devpreview'
  9. }

在你的清单文件中添加things共享库条目:
ThingsDemo\app\src\main\AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.chengxiang.thingsdemo">
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@mipmap/ic_launcher"
  7. android:label="@string/app_name"
  8. android:supportsRtl="true"
  9. android:theme="@style/AppTheme">
  10. <uses-library android:name="com.google.android.things"/>
  11. ... ...
  12. </application>
  13. </manifest>

5.声明主Activity
一个想运行到嵌入式设备的应用,必须在清单文件中声明一个Activity,作为系统启动后的主入口。应用包含下面属性的Intent Filger;
  Action:ACTION_MAIN
  Category:CATEGORY_DEFAUULT
  Category:IOT_LAUNCHER
ThingsDemo\app\src\main\AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.chengxiang.thingsdemo">
  4. <uses-library android:name="com.google.android.things"/>
  5. <application
  6. ... ...
  7. android:theme="@style/AppTheme">
  8. <activity android:name=".MainActivity">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN"/>
  11. <category android:name="android.intent.category.LAUNCHER"/>
  12. </intent-filter>
  13. <!-- Launch activity automatically on boot -->
  14. <intent-filter>
  15. <action android:name="android.intent.action.MAIN"/>
  16. <category android:name="android.intent.category.IOT_LAUNCHER"/>
  17. <category android:name="android.intent.category.DEFAULT"/>
  18. </intent-filter>
  19. </activity>
  20. </application>
  21. </manifest>

6.编译运行
这里我们尝试使用gradle构建任务的方式编译和运行项目,运行如下:

  1. C:\Users\chengxiang.peng.QUNARSERVERS\AndroidThingsSources\ThingsDemo>gradle app:installDebug
  2. Starting a Gradle Daemon, 1 incompatible and 2 stopped Daemons could not be reused, use --status for details
  3. Incremental java compilation is an incubating feature.
  4. 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.
  5. :app:preBuild UP-TO-DATE
  6. ... ...
  7. :app:installDebug
  8. Unable to get density for device iot_rpi3 - 7.0
  9. Installing APK 'app-debug.apk' on 'iot_rpi3 - 7.0' for app:debug
  10. Installed on 1 device.
  11. BUILD SUCCESSFUL
  12. Total time: 1 mins 31.038 secs
  1. C:\Users\chengxiang.peng.QUNARSERVERS\AndroidThingsSources\ThingsDemo>adb shell am start com.chengxiang.thingsdemo/.MainActivity
  2. 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:找到占用端口的程序,并杀死。

1.新技术,新未来!欢迎大家关注“1024工场”微信服务号,时刻关注我们的最新的技术讯息。2.抛弃各种找元器件的烦恼,来“1024工场”微店,一次性买到你所想要的。3.加入“Android Things开发”QQ讨论群,一起学习一起Hi。(甭客气!尽情的扫描或者长按!)

            

Android Things:撸起袖子来创建第一个Things工程的更多相关文章

  1. ❤️【Android精进之路-03】创建第一个Android应用程序竟然如此简单❤️

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文会重点介绍如何创建第一个Android应用,以及如何使用Android Studio进行调试 干货满满,建议收藏,需要用到时常看看.小伙伴们如 ...

  2. Go入门:创建第一个Go工程

    前言 我是一名iOS开发. 因为公司后台都用的Go. 因为对服务端不了解. 所以想自己学习学习. 环境 因为自己的电脑是mac.然后在阿里云买的是centOS的服务器. 所以下面搭建的环境都是在cen ...

  3. 利用IntelliJ IDEA创建第一个Groovy工程

    因为某些原因,需要学习一下Groovy.关于Groovy的入门教程请看这篇文章http://www.ibm.com/developerworks/cn/education/java/j-groovy/ ...

  4. 创建第一个Hiberntae工程

    一.前言 很久之前已经对Hibernate有所了解,在项目中进行过简单的应用,基本了解hibernate的简单应用,没有深入的了解,来Shine公司快三个月了,公司的ORM框架就是用Hiberante ...

  5. Android中使用自身携带的Junit新建一个测试工程

    1.新建立一个Android工程 package com.shellway.junit; public class Service { public int divide(int a,int b){ ...

  6. 终于用scons创建了一个MDK工程

    这几天我在学着怎么使用RT-Thread.起初只想用一下里面的RTGUI,却一直没成功,功力实在不行啊. RT-Thread用了scons来创建工程,似乎还能编译,还有很多可配置项,很是方便.于是我想 ...

  7. UE4 Hello World 创建第一个UE4工程

    首先先熟悉几个UE4常用的类 AGameMode(控制整个项目的逻辑) The GameMode defines the game being played. It governs thegame r ...

  8. Spring Boot系列教程二:创建第一个web工程 hello world

    一.创建工程 创建名称为"springboot_helloworld"的spring boot工程, new->Spring Starter Project,直接上图     ...

  9. 创建第一个vue工程

    vue创建项目(npm安装→初始化项目) 第一步npm安装 首先:先从nodejs.org中下载nodejs   图1 双击安装,在安装界面一直Next   图2   图3   图4 直到Finish ...

随机推荐

  1. DB安装

    start from the execute file : DB2_ESE_10_Win_x86-64\setup.exe Navigator to "Install a Product&q ...

  2. SQLite中的SELECT子句使用别名

    SQLite中的SELECT子句使用别名 开发者可以使用AS关键字为指定的列名提供一个新的别名,其语法形式如下 SELECT column_name AS Alias [,…] 例如,下面的SQL语句 ...

  3. BZOJ.3809.Gty的二逼妹子序列(分块 莫队)

    题目链接 /* 25832 kb 26964 ms 莫队+树状数组:增加/删除/查询 都是O(logn)的,总时间复杂度O(m*sqrt(n)*logn),卡不过 莫队+分块:这样查询虽然变成了sqr ...

  4. Python3科学计算库概况

    Python3科学计算常见库入门 Numpy快速数据处理库 参见我的博客 http://www.cnblogs.com/brightyuxl/p/8981294.html http://www.cnb ...

  5. android View的点击无效的原因

    点击事件不生效,原来是因为我在里面的 ImageView中添加了 android:clickable="true". 解决办法:删掉ImageView中的android:click ...

  6. Java API概述

    collection of APIs(Application Programming Interface) java.lang — automatically imported into Java p ...

  7. How determine the RC time constant in PWM DAC low-pass filter?

    how determine the RC time constant in PWM digital to analog low-pass filter? I 'm looking for the be ...

  8. 通过ZwQuerySystemInformation获取EPROCESS

    google一下,发现很多都是直接通过ZwQuerySystemInformation通过11号获取进程结构SYSTEM_PROCESS_INFORMATION,对于详细的进程信息表达不够.所以想要通 ...

  9. UITransitionView and UILayoutContainerView

    What is UITransitionView? What is UILayoutContainerView? Will I get in trouble for adding subviews t ...

  10. Linux 中C/C++ search path(头文件搜索路径)

    https://blog.csdn.net/BjarneCpp/article/details/76135980 起因 我拿到了一套Linux下的C++代码,代码中有这个头文件#include < ...