ARM Chromebook 上的 Android 开发环境?

2024-05-15

我尝试了多次安装和使用安卓工作室 https://developer.android.com/studio/index.html on an ARM Chromebook (C100P) https://archlinuxarm.org/platforms/armv7/rockchip/asus-chromebook-flip-c100p,但安装总是失败failed to run mksdcard tool错误。我读到,发生这种情况是因为 Android Studio 依赖于与 ARM 处理器架构不兼容的本机二进制文件;即使在尝试了各种破解或只是尝试单独使用这些库之后,我仍然无法在我的 ARM Chromebook 上设置 Android 开发环境。


本机结论:

我得出的结论是你真的不能。 Android的编译工具依赖于原生库;具体来说,lib32stdc++6 and lib32z1。这些依赖于 32 位 Intel 二进制文件,因此在 Google 开始做出一些更改之前,不可能在 ARM 处理器上执行这些指令字(即使具有 i386 多架构支持)。

幸运的是,我在这里提出一个解决方法。我们将把计算委托给虚拟机;一个is与这些二进制文件兼容。这将是free and secure,因此您不必担心谁可以访问您的源代码。我们将使用以下方法来实现这一目标谷歌应用引擎 https://cloud.google.com/appengine/docs.

解决方法:

我将假设我们使用全新安装来开始本教程。

  1. 首先,下载最新的 Crouton 安装程序 https://github.com/dnschneid/crouton/blob/master/installer/crouton所以我们有一个成熟的 Ubuntu 发行版可以使用。在 Chromebook shell 中 (Ctrl + Alt + T并输入shell),执行安装程序。我选择安装最新版本的 Ubuntu Xenial,不带窗口管理器。我还启用了与 Crouton Chrome 扩展的集成,以启用共享剪贴板。

    sudo sh ~/Downloads/crouton -r xenial -t touch,audio,keyboard,extension

  2. Next, enter-chroot进入Ubuntu,并安装curl和python:

    sudo apt-get update sudo apt-get install curl python git

  3. 使用curl获取Google Cloud SDK。您可以将其解压到默认位置~/google-cloud-sdk,或您想要的其他目录。

    curl https://sdk.cloud.google.com | bash

  4. 导航到您的 Google Cloud SDK 目录并执行安装程序。允许它更新您的 $PATH 变量并启用对您的~/.bashrc file.
  5. 重新启动外壳。使用logout or exit,然后使用重新输入sudo enter-chroot。这使得您可以从命令行访问您安装的 Google Cloud SDK。
  6. 使用关联的 Google 帐户登录 Google Cloud SDKgcloud auth login。这需要你做两件事;首先,启用 SDK 来访问您的 Google 帐户。其次,您需要从浏览器中提供的网址复制验证密钥,然后将其粘贴回控制台。
  7. 登录谷歌云控制台 https://console.cloud.google.com/?pli=1.
  8. 创建一个新项目,例如android-编译-worker,并在该项目中创建一个新的存储库,例如编译工具。我们将在此存储库中安装 Android SDK 工具。当我们这样做时,我们实际上将它们放置在一个虚拟机中,该虚拟机可以正确解释它使用的本机 32 位二进制文​​件。
  9. 在网络浏览器中启动 Google Cloud Console 终端。接下来,在 Google Cloud Console 终端和本地 Chromebook shell 中克隆您的存储库。

    gcloud init

    gcloud config set project project-name-here

    gcloud source repos clone repo-name-here

  10. 在 Google Cloud Console 终端中,移至您创建的存储库并下载并解压最新版本的 Android Tools SDK。wget https://dl.google.com/android/repository/tools_r25.2.3-linux.zip unzip tools_r25.2.3-linux.zip
  11. 现在我们已经成功地将Android SDK工具提取到Google Cloud机器上;将 PATH 变量导出到此位置以启用它的利用。export ANDROID_HOME=path/to/unzipped/tools
  12. 安装那些我们无法在笔记本电脑上使用的讨厌的二进制文件。由于当您的实例超时时此安装会丢失,因此您可以将命令附加到您的.bashrc在新的服务器实例上保持安装。sudo apt-get install lib32stdc++ lib32z1
  13. 返回 Chromebook,安装以下实用程序以启用 Android 设备编程。sudo apt-get install android-sdk-platform-tools-common android-tools-adb android-tools-adbd android-tools-fastboot

设计流程

这就是一切!如果您正确执行了这些步骤,您将成功配置 Google 虚拟机之一以进行 Android 编译。通过 Google Cloud Console 终端,可以为您希望编译的各种 API 级别添加 Android 平台支持。

在这里,我们添加 API Level 25 和 Android 支持存储库,如下所示:

./android update sdk --filter android-25 --no-ui

./android update sdk -u -a -t android-25

./android update sdk --all --filter "extra" --no-ui

现在,使用git pull origin master and git push origin master,您可以将在 Chromebook 上开发的代码上传到存储库,以便 Android SDK 对其进行编译。您可以通过执行项目的本地命令来完成此操作gradlew文件,即./gradlew build.

编译完成后,您可以pull将生成的二进制文件放回到您的开发计算机上,并使用 Android 设备桥配置连接的 Android 设备(adb), 使用adb install path/to/apk.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM Chromebook 上的 Android 开发环境? 的相关文章

  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • Manifest Merger工具:替换失败

    我正在使用一个使用自己的 android theme 的库 因此在构建时收到以下错误 错误 55 9 任务 contacit processDebugManifest 执行失败 清单合并失败 AndroidManifest xml 中的属性
  • 从 Android 代码设置的 SECRET_CODE

    我知道如何使用清单文件中的秘密代码 它与此源代码配合良好
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • 如何解决 Firebase AuthUi 中无法找到显式活动?

    使用 firebase UI 时 我无法找到显式活动类 com firebase ui auth KickoffActivity protected void onCreate Bundle savedInstanceState super
  • android EditText 输入类型用于 StreetNumber 字段

    我试图在地址对话框的 streetNumber 字段中选择正确的 inputType 我想先显示数字键盘 然后让用户输入字母字符 对于一些非常特殊的情况 更接近这个的是 inputType datetime 但这不允许输入字母字符 那么如何
  • Android onChange 事件未在 android 5 (Lollipop) 上的 chrome 历史记录的 contentObserver 中触发

    我注意到我的 chrome 历史记录和书签的 contentObservers 在 android lolipop 上不再触发 该代码在旧版本的 android 上完美运行 无论 chrome 版本如何 但在 Lollipop 上它不再运行
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • 使用 gradlew assembleRelease 从 React Native 创建发布 apk 时出现错误

    我想发布 apk 但我收到错误 文件已存在 mkdir D mobile 它在 d 驱动器中生成名为 mobile 的文件 删除文件后 再次执行 gradlew assembleRelease 创建该文件并抛出错误 任务 app bundl
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • Android Studio Flutter 项目错误:内存不足

    我在 Android Studio 上运行任何 flutter 项目 都会抛出内存不足错误 控制台中显示的消息如下所示 e b build slave windows engine build src third party dart ru
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • Android:监听状态栏通知

    有没有办法在状态栏被下拉时监听通知 1 用于检测状态栏变化 您可以注册一个监听器来获取系统UI可见性变化的通知 因此 要在您的活动中注册侦听器 Detecting if the user swipe from the top down to
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组

随机推荐

  • 如何修复 [错误:flutter/lib/ui/ui_dart_state.cc(166)] 未处理的异常:NoSuchMethodError:在 null 上调用方法 '<='。错误?

    我收到此错误 但由于昨天相同的代码有效 所以我不知道如何修复它 这是一个测试应用程序 使用谷歌地图和 firebase firestore 来保存和查询地图上的标记 我想这可能和我安装的flutter有关系 所以我尝试使用稳定版和测试版 但
  • 彭博开放 API

    彭博开放 API最近宣布 http www computerworlduk com news it business 3334375 bloomberg market data api made public 这只是彭博软件开发工具包 ht
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • 如何让 graphviz 记录的单元格对齐

    我正在 graphviz 中使用记录节点来制作一个简单的表格 但它看起来错误 digraph g node shape record height 08 node1 label DBAT 0 1 2 3 4 5 6 7 8 9 10 11
  • 如何从 nltk 下载器中删除数据/模型?

    我在 python3 NLTK 中安装了一些 NLTK 包 通过nltk download 尝试过它们 但不需要它们 现在想删除它们 我怎样才能删除例如包large grammars来自我的 NLTK 安装 我不想删除完整的 NLTK 安装
  • 为什么自类型类可以声明类

    我知道 Scala 只能混合特征 这对于依赖注入和蛋糕模式是有意义的 我的问题是为什么我仍然可以声明一个需要另一个 类 但不需要特征的类 Code class C class D self C gt 这仍然编译成功 我认为它应该编译失败 因
  • 在父类中访问子类变量

    我有一个父类和一个继承的子类 我想知道如何访问我的父类中的子类变量 我尝试了这个但失败了 class Parent object def init self print x class Child Parent x 1 x Child Er
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • 需要一些在自定义 AngularJS 标签中绑定属性的示例

    我正在尝试创建类似于以下内容的自定义标签
  • 如何从 Mac OS X 中完全删除 Eclipse(包括设置和插件)?

    我的 Eclipse 与 GAE 损坏并且工作异常 所以我从Application文件夹中删除了Eclipse 但是留下了垃圾 我重新下载了全新的 eclipse 但它以旧设置运行 并且损坏的 GAE 结构仍然存在 如何从 Mac 上完全删
  • laravel中过滤后如何导出excel?

    我想仅导出视图刀片中过滤的数据 我正在使用 Laravel 7 和 maatwebsite excel 3 1 和 PHP 7 4 2 我浏览了文档并应用了这个 View a href class btn btn success i cla
  • 实现 Index 特征以返回非引用的值

    我有一个想要实现的简单结构Index 但作为 Rust 的新手 我在借用检查器方面遇到了许多麻烦 我的结构非常简单 我想让它存储一个起始值和步骤值 然后当由usize它应该返回start idx step pub struct MyStru
  • GoLang ssh:尽管将其设置为 nil,但仍出现“必须指定 HosKeyCallback”错误

    我正在尝试使用 GoLang 连接到远程服务器 在客户端配置中 除了用户和密码之外 我将 HostKeyCallback 设置为 nil 以便它接受每个主机 config ssh ClientConfig User user HostKey
  • 如何避免刷新页面时重新执行上次表单提交操作?

    我正在从事用 JSF 开发的项目 每当我们刷新 JSF 页面时 就会重新执行最后一个操作事件 例如 当我提交表单以删除列表的条目并刷新结果页面时 列表中同一位置的另一个条目也会被删除 这是如何引起的以及如何解决 我在 faces confi
  • SQL Server 中的嵌套事务

    sql server 允许嵌套事务吗 如果是的话那么交易的优先级是什么 来自 SQL Server 上的 MSDN 文档 嵌套交易 http msdn microsoft com en us library ms189336 SQL 90
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor