将您的Android应用程序带到Chromebook

让任何开发人员说出为Android开发所面临的最大挑战,而他们可能会说碎片化。 创建一个足够灵活以在“ Android”旗帜下的众多设备上运行的应用程序,是大多数Android开发人员在某些时候都曾经历的巨大难题。

但是为零散的平台进行开发有其好处! 由于那里有许多不同的Android设备,因此您的应用程序有可能与大量的受众群体建立联系-并且该受众群体的规模也要大得多,因为Android应用程序现在可以在Chrome操作系统上运行。

在本文中,我将向您展示如何启动最新的Android应用项目并在Chrome操作系统上运行。 而且,由于您希望在此新平台上提供最佳的用户体验,因此我还将研究如何优化Android应用程序,从而使您真正吸引新的Chromebook受众。

我的应用适合Chromebook吗?

作为Android开发人员,将您的应用程序吸引到尽可能多的人面前应该始终是您的头等大事,对吧?

不必要。

仅仅因为Android应用程序现在与Chrome操作系统兼容,并不意味着所有Android应用程序都将自动适合该新平台。

想象一下,您发现了一个喜欢的外观的应用程序,并且Google Play显示该应用程序与您的智能手机 Chromebook兼容。 您决定将应用程序下载到笔记本电脑上,然后立即意识到该应用程序的大多数功能都依赖于移动专用硬件,例如拨打电话和发送SMS消息的功能。

最终结果? 这个应用程式在Chrome作业系统上几乎无法使用。 您立即将其卸载,感觉开发人员已经完全浪费了您的时间,并给他们留下了对Google Play的负面评价。

不支持Chrome操作系统的应用程式,在最坏的情况,轻度恼人Chromebook用户,而是提供了Chrome OS的一个可怕的用户体验的应用程序是差了。

在深入研究并开始为Chrome OS首次亮相准备应用程序之前,请花一些时间考虑一下您的应用程序是否确实可以为Chromebook用户提供服务。

典型的Chromebook具有与典型的Android智能手机或平板电脑完全不同的硬件。 硬件将是本文中反复出现的主题,但是现在您只需要注意应用程序的功能列表-这些功能是否会让您感到与典型笔记本电脑不兼容?

例如,您一直在使用的计步器应用程序不太可能在Chrome操作系统上蓬勃发展,因为笔记本电脑通常没有必要的硬件来衡量脚步声(以及您何时最后一次看到有人拿起他们的Chromebook还是在他们的晨跑中吗?)。

如果您的应用程序确实包含某些不兼容的功能,那么您是否可以通过任何方式修改这些功能以使其对Chromebook更友好? 如果答案为“否”,那么当您的应用程序在Chrome操作系统上运行时,您将需要禁用这些功能,这引出了另一个问题:即使没有这些功能,您的应用程序仍可以提供良好的用户体验吗? 如果看起来不太可能,那么您的应用可能毕竟不适合Chromebook。

希望,即使您确实需要禁用或修改某些功能,您的应用程序仍然可以为Chromebook用户提供一些东西-至此,您已经准备好并迫切希望开始更新您的应用程序以在Chrome操作系统上运行!

在Chrome操作系统上运行您的应用

如果您的应用需要Chrome操作系统不支持的硬件,则Chromebook用户将无法安装您的应用。 在大多数(如果不是全部)智能手机和平板电脑上都配备了一种特别的硬件,但并非在所有Chromebook上都可用:触摸屏。

更糟糕的是,除非另行指定,否则Google Play会假设您的Android应用需要触摸屏,因此将阻止您的应用安装在所有不具备触摸屏功能的设备上。 如果您想让尽可能多的Chromebook用户使用您的应用,那么您需要问自己:我的Android应用是否真的需要触摸屏?

对于大多数Android应用程序,答案是否定的。 大多数Android应用程序都可以在没有触摸屏的情况下完美运行,尤其是在Chromebook上,用户可以使用全尺寸的键盘,触控板,也可以使用外接鼠标。 某些Chromebook甚至支持“伪触摸屏”,这是一个附加的输入系统,可让您使用鼠标和键盘来模拟基本的触摸事件。

因此,除非您有很好的理由不这样做,否则应指定您的应用不需要触摸屏即可运行。 这涉及到打开项目的清单,将触摸屏声明为应用程序使用uses-feature android:name="android.hardware.touchscreen" (using uses-feature android:name="android.hardware.touchscreen" ),然后使用android:attribute指定您的应用程序是否:

  • 需要此功能才能起作用( "true" )。

  • 希望此功能可用,但没有该功能就可以正常工作( "false" )。

在这种情况下,我们要声明首选触摸屏,但不是必需的:

将您的Android应用程序带到Chromebook_第1张图片

然后,Google Play将使用您项目的android:required声明来确定您的应用程序是否与用户的设备兼容,并且仅允许用户在其设备满足其所有要求的情况下下载您的应用程序。

宣布您的应用不需要触摸屏后,您的应用将立即对更多的Chromebook用户可用。

其他硬件注意事项

现在,冲洗并重复执行应用程序使用的每个功能。 这是开发任何 Android应用的最佳做法,但这也是为Chromebook用户优化应用的重要一步。

为了帮助您为Chrome OS做好应用准备,Android团队创建了一个方便的列表,列出了通常与Chromebook不兼容的所有硬件声明。 如果有这份名单,你的应用程序使用,但要求任何功能,那么您在舱单申报此功能,并且将其标记为是特别重要的android:required="false"

但是,请不要将每个功能都自动设置为"false"因为您希望自己的应用程序可用于尽可能多的Chromebook! 考虑一下您的应用将在不访问每个硬件的情况下提供什么样的用户体验。 尽管试图将您的应用程序吸引到尽可能多的人面前是很诱人的,但与为大量受众提供普通或较差的用户体验相比,向较小的受众提供良好的用户体验总是更好。

此时,您还应该查看应用程序请求的所有权限,因为某些权限会隐式发出硬件请求。 例如,如果您的应用请求了摄像头许可,则Google Play会假定您的应用需要摄像头硬件,并会阻止您的应用安装在不满足此要求的设备上。 如果您的应用实际上不需要摄像头,那么这是错过潜在用户的好方法! 为了防止这种情况发生,您需要在应用的清单中声明此功能,并将其标记为"false"

如果您遵循声明应用程序使用的每个功能的最佳实践,那么从理论上讲,您不必担心隐式功能请求,但是为防万一,始终值得仔细检查您的项目。

具体来说,以下权限会隐含功能请求,这些请求可能会阻止您的应用安装在Chrome操作系统上:

  • CALL_PHONE

  • CALL_PRIVILEDGED

  • CAMERA

  • MODIFY_PHONE_STATE

  • PROCESS_OUTGOING_CALLS

  • READ_SMSREAD_SMS

  • RECEIVE_MMS

  • RECEIVE_SMS

  • RECEIVE_WAP_PUSH

  • SEND_SMS

  • WRITE_APN_SETTINGS

  • WRITE_SMS

如果您的应用请求这些权限中的任何一个,那么请仔细检查您是否已在项目清单中声明了相关的硬件,如果您的应用实际上不需要此硬件,则将每个声明标记为"false"

在处理功能请求时,它可能有助于预览Google Play如何根据其当前的硬件声明和权限请求来过滤您的应用程序。 Android SDK包括一个“ aapt ”工具,使您可以做到这一点-您可以运行此工具,检查其输出与您的应用程序实际需要的功能相比,并根据需要进行调整。

有关使用aapt的更多信息 ,请查看官方的Android文档。

感测器

大多数Android智能手机和平板电脑均具有各种内置传感器,可以为您的应用程序提供一系列数据,包括设备的当前方向,位置,有时甚至包括有关环境条件的信息。

您通常希望在智能手机或平板电脑上找到的许多传感器在Chrome操作系统上不可用,因此,如果您的应用使用了来自任何传感器的数据,那么您应该计划如果该传感器不可用,应用将如何反应。

如果您的整个应用程序都依赖于对特定传感器的访问权限,则应防止将应用程序安装在不包含该传感器的任何设备上。 例如,如果没有来自加速度计传感器的数据,您的应用程序无法运行,则应将以下内容添加到项目的清单中:

另一种情况是您的应用程序不需要特定的传感器,但是具有一些功能,如果可用,这些功能将使用来自传感器的数据。 如果这听起来像您的应用程序,那么您应该在清单中声明此传感器,但将其标记为android:required="false" 。 然后,您的应用可以检查该传感器在运行时是否可用,并禁用依赖于用户设备上不存在的传感器的任何功能。

为了确定可用的传感器,您需要创建SensorManager类的实例,然后调用getSystemService方法并传递SENSOR_SERVICE参数:

private SensorManager mSensorManager;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

接下来,您需要通过调用getSensorListmethod并使用Sensor.TYPE_ALL常量来获取当前可用的所有传感器的列表:

List deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);

有了这些信息,您就可以禁用依赖于当前设备上不存在的传感器数据的任何应用程序功能。

调整大小并支持Chrome OS多窗口模式

在Chrome操作系统上,Android应用程序显示在单独的窗口中,用户可以在其中移动,并在以下三种受支持的大小之间循环:

  • 肖像。 尺寸与Nexus 5的屏幕相似。

  • 景观。 屏幕与Nexus 7类似。

  • 最大化。 该应用程序使用所有可用的屏幕空间。

是时候在Chrome操作系统上测试您的应用了,您将要确保您的应用在所有三种支持的尺寸下看起来都不错并且可以正常运行,例如,通过检查所有应用文本是否易于阅读并且所有UI元素都可以访问无论用户将您的应用设置为纵向,横向还是最大化模式。

尽管Chrome操作系统用户可以一次查看多个Android应用程序,但是只有一个应用程序可以具有焦点,因此为了节省用户的电量,您的应用程序在失去焦点时应暂停渲染。 唯一的例外是当您的应用包含需要不断更新的内容时。 例如,如果您正在开发一个播放音乐或视频的应用程序,那么您可能不想让该Activity在每次应用程序失去焦点时都停止。

如果您的活动需要在整个屏幕上更新,那么您应该在onStop暂停它,并在onStart继续播放,而不是使用onPause处理onPause

考虑使用自动备份

Chromebook的设计使用户可以轻松地在设备之间进行切换-只需登录自己的Google帐户,所有应用程序和内容都就在其中 ,而不管他们是否曾经使用过此特定的Chromebook。

由于这是Chromebook用户所期望的行为,因此这也是您的应用在Chrome操作系统上运行时的行为。 这意味着您需要在线备份应用程序的数据,而不仅仅是将其存储在本地。 最简单的方法是使用Android的自动备份功能,该功能可让您将应用程序的数据备份到用户的Google云端硬盘帐户。

如果您的应用程序针对Android 6.0或更高版本,则默认情况下会启用自动备份。 但是,明确说明您的应用程序使用的功能总是一个好主意(毕竟,不能保证默认情况下会在默认的Android版本上启用自动备份),因此请打开项目的清单并添加以下内容:

android:allowBackup="true"

有关实现备份和还原的更多详细信息,请查看官方的Android文档。

该测试了!

即使遵循了所有这些最佳做法,您也无法确定自己的应用程序将在Chrome操作系统上提供良好的用户体验, 除非您在真实的Chromebook上测试了您的应用程序。

在撰写本文时,Google建议您跨以下测试适用于Chromebook的应用程序:

  • 基于ARM的Chromebook。

  • 基于Intel x86的Chromebook。

  • 可转换的Chromebook(可以在笔记本电脑和平板电脑之间变形的Chromebook)。

  • 具有触摸屏支持的Chromebook。

  • 具有“假触摸”支持的Chromebook。

但请现实一点:您不太可能会碰巧访问多台Chromebook。 在确定您应该针对哪些Chromebook进行测试时,可以参考一下Google 列出的当前市场上所有与Android兼容的Chromebook 。

您需要将Chromebook置于开发人员模式并启用来自未知来源的安装,然后才能在Chrome操作系统上安装Android应用。

在不同的设备上,将Chromebook置于开发人员模式的确切过程会有所不同,因此,如果这些说明不适用于您的特定型号,则应在Chromium文档中搜索特定于设备的说明。

要进入开发者模式:

  1. 确保您的Chromebook已关闭。

  2. 在按住设备的电源按钮的同时,按住EscRefresh键。 然后,您的Chromebook应该会引导到“恢复”屏幕。

  3. 按下Chromebook键盘上的Control-D键。

  4. 出现提示时,按Enter键。

  5. 再次按Control-D键。

您的Chromebook现在将启动到开发人员模式。

下一步是通过导航到Chrome设置>应用设置>安全并选择未知来源来启用未知来源

完成这些步骤后,就可以安装要测试的APK(Android应用程序包)了。 要将APK快速转移到Chromebook,您可以:

  • 将您的APK添加到Google云端硬盘。

  • 使用外部驱动器或SD卡将APK文件复制到Chromebook的下载文件夹中。

  • 通过电子邮件将APK发送给自己。

然后,您需要将APK下载到Chromebook并使用Android File Manager应用程序打开它(通过导航至Chrome设置>应用程序设置>设备和USB>探索,可以找到它 )。

或者,您可以使用Android调试桥(ADB)命令将APK从开发计算机推送到Chromebook。

要使ADB在Chrome操作系统上正常运行需要进行一些设置,但是一旦建立连接,您就可以使用ADB发出一系列命令,这些命令对于测试Android应用程序非常有用。 (有关ADB命令的更多信息,请查看官方的Android文档)。

使用Android调试桥

设置ADB是一个多步骤的过程,因此让我们一次解决它:

1.配置Chrome操作系统防火墙以允许传入的ADB连接。

按下键盘上的Control-Alt-T键启动Chrome OS终端,然后键入shell以获取bash命令shell:

crosh> shell
chronos@localhost / $

输入您的密码,然后通过“终端”窗口发出以下命令:

chronos@localhost / $ sudo /usr/libexec/debugd/helpers/dev_features_rootfs_verification

阅读免责声明。 如果您愿意继续,请输入下一个命令:

chronos@localhost / $ sudo reboot

此时,您的Chromebook将重新启动。 Chromebook完成启动后,重新启动终端并输入:

chronos@localhost / $ sudo /usr/libexec/debugd/helpers/dev_features_ssh
2.查找您的Chromebook的IP地址:

启用ADB调试需要您的Chromebook IP地址,因此:

  • 点击Chromebook主屏幕右下角的网络图标。

  • 选择您的Chromebook当前连接到的网络。

  • 点击菜单右下角的i图标。

此时,将出现一个框,其中包含您的Chromebook的IP地址-记下它,以备后用。

3.启用adb调试。

在您的Chromebook上,完成以下步骤:

  • 点击屏幕右下角的时钟图标。

  • 选择设置

  • 在“ Android应用”部分中,点击“ 在设置中管理您的Android应用”链接。

  • 单击关于设备

  • 通过单击内部版本号七次进入开发人员模式。

  • 单击窗口左上角的箭头。 这将带您回到“设置 ”主屏幕。

  • 单击开发人员选项

  • 启用ADB调试 ,然后单击“ 确定”

接下来,在开发机器上完成以下步骤:

打开终端窗口并更改目录( cd ),使其指向您的Android SDK的“ adb”程序所在的位置。

cd /Users/jessicathornsby/Library/Android/sdk/platform-tools
将您的Android应用程序带到Chromebook_第2张图片

通过发出以下adb命令,告诉您的开发机器在端口22上侦听TCP / IP连接:

./adb tcpip 22

发出adb connect命令,后跟Chromebook的IP地址,例如:

./adb connect 100.100.0.10

在Chromebook上,在出现提示时单击“ 允许”

剩下要做的就是将APK从开发计算机推送到Chromebook。

在开发计算机上,发出adb install命令,然后输入要安装的APK的路径和文件名,例如:

./adb install Users/jessicathornsby/Documents/app-name.apk

就是这样! 现在,您的Android应用程序已安装在Chromebook上,可以进行测试了!

摘要

在本文中,我们研究了如何更新您的应用以使其可以在Chromebook上运行,然后在该应用能够在该新平台上运行之后,如何对其进行优化以提供更好的用户体验。

能够通过智能手机,平板电脑以及现在的笔记本电脑访问喜爱的应用程序对于Chromebook用户来说是个好消息,对于您作为开发人员来说,这意味着您的Android应用程序潜在的受众更大-谁不想呢?

翻译自: https://code.tutsplus.com/tutorials/bring-your-android-app-to-chromebooks--cms-27519

你可能感兴趣的:(android,python,java,linux,编程语言)