虽然文件大小标明12.78MiB,但实际这只是 ARC Welder 本体的大小。在此之前还需要下载 ARC Welder 的运行环境,所以一共要下载200+MiB。
Native Client 是 Chrome 中最强大(伪)的运行环境,Unity3D 生成 HTML 版本的时候就是依赖这个环境的,但现在的 Chrome 都是默认关闭这个环境的。在 Chrome 地址栏输入“chrome://flags/”,然后在该页面中搜索 Native Client,并开启该环境(选择Enabled)。
之后点击 Chrome 的“应用”按钮。如果找不到这个按钮,也可以直接在地址栏输入“chrome://apps/”并按回车。在这个界面就可以看到 ARC Welder 的图标,点击即可运行。
不过有一个更简单的打开方法,直接从系统里打开 ARC Welder 也行。
首次打开ARC Welder是需要选择一个文件夹作为工作目录的。按照提示点击页面右下角的【Choose】按钮,然后选择一个空文件夹作为 ARC Welder 的工作目录。之后就会进入“Test your APP”界面,点击【Add your APK】按钮,从电脑选择一个已经下载好的安卓APK文件。
然后,ARC Welder 就一直卡在了这个页面,也就是网上俗称的“转圈圈”。
在网上查阅资料后发现安装 ARC Welder 后还需要安装 ARChon Runtime for Chrome 才行(安装完会有两个警告,无视即可)。
传送门:ARChon Runtime for Chrome 网站 http://archon-runtime.github.io/
这种离线扩展程序的安装包的使用方法都是一样的。由于现在 Chrome 不允许离线扩展程序的安装,所以我们需要先修改 crx 文件的后缀,比如 zip 或 rar,把里面的文件解压出来。然后在 Chrome 的扩展程序里面打开“开发者模式”后选择 “加载已解压的扩展程序”,再选择刚才我们解压出来的文件。
在安装完 ARChon Runtime for Chrome 后,我重新启动 ARC Welder,但还是一直卡在 “转圈圈” 页面。所以我又根据网上的方法换了个环境,把 ARChon Runtime for Chrome 换成了 App Runtime for Chrome (Beta) 。但还是没什么用,我还是在老地方卡着。
原理解释
我查遍了几乎国内外所有的 ARC Welder 资料,要么就是卡在“Test your APP”页面没有解决的,要么就是在“Test your APP”页面完全没有出现问题的。幸好 Chrome 的扩展程序有调试界面,我可以具体地定位问题,看看是哪里出错了。
问题主要是出在我红色框圈住的这一块,之后的部分都是服务重新尝试后再次失败的。 由此我们可以看出,一直卡在“Test your APP”页面主要的原因有三个:
1. Reporting crash is not supported.
2. NativeClient: could not load manifest url.
3. Net::ERR_FILE_NOT_FOUND
Native Client 是我们之前开启过的环境,第二个原因说明现在它无法加载特定的地址,并且第三个原因说明有些文件无法被找到。于是我猜测这部分资源可能被 Google 放在了境外的服务器上导致国内无法访问,于是我通过学校的有线网络再次尝试(学校的有线网络是可以连接外网的),发现还是一摸一样的问题。于是我想到谷歌之前把这个项目砍掉的传闻,猜测可能是谷歌不打算继续研究这个项目,所以撤掉了部分支持文件,所以 ARC Welder 在现在的2020年无法正常使用了。这么说来,Google网上应用店中 ARC Welder 的评论都是清一色的运行不了和 ARC Welder 现在在Google网上应用中搜索不到就能解释的通了。
不过我不想让我之前的努力都白费,想再进一步尝试一下。于是我继续去搜集更多的资料,想找到一点转机。要知道,一家企业要是不在乎盈利,那它能做的事就很多了。同样的,程序员要是不在乎时间和精力,那总有解决问题的方法嘛。
首先我们要弄清我们之前装的三个扩展程序 ARC Welder、ARChon Runtime for Chrome 和 App Runtime for Chrome (Beta) 之间的关系是什么。我之前以为 ARChon Runtime for Chrome 和 App Runtime for Chrome (Beta) 都是用来支撑 ARC Welder 运行的环境,但其实并不是这样。
Android Runtime for Chrome(ARC)是由 Google 推出的在 Chrome 中运行 Android 程序的软件。但遗憾的是,ARC 只能在 Chrome OS 上运行,并且只能运行Google提供的一些Android程序。
后来,ARC 被作为扩展程序放进了桌面版 chrome 中,并命名为“ARC Welder”。由于其存在于桌面版 chrome 中,因此 ARC 具备了跨平台的功能,能同时在 Windows、Linux 和 Mac 上运行。为了支持 ARC Welder 在 Chrome 中的应用,App Runtime for Chrome (Beta) 被开发。这种跨平台轻量级虚拟机像极了如今的容器技术,也因此得到了一些程序员的喜爱,但极少的 Android 程序适配也的确限制了它的发展。
再后来,黑客 Vladikoff 将其改进(破解),制作了一个定制版本的 ARC,命名为“ARChon Runtime for Chrome”。他让 ARC 可以安装任何的 Android 程序,并且在此情况下稳定住了能同时在 Windows、Linux 和 Mac 上运行的特性。但是,ARChon Runtime for Chrome 不支持原始的 Android 应用程序包(APK),它们需要被转换成一个 Chrome 扩展程序才能使用。
现在这三个扩展程序的关系就非常明显了,ARC Welder 和 App Runtime for Chrome (Beta) 作为扩展程序是需要一起安装的,这也就是为什么最初我们安装 ARC Welder 的时候本体只有12.78MiB,但我最终下载了200+MiB的原因。而 ARChon Runtime for Chrome 是被人改进(破解)后,可以无视 Google 停止服务的扩展程序(因为它已经是一个独立的扩展程序了)。
简单点来说,ARC Welder + App Runtime for Chrome (Beta) = ARChon Runtime for Chrome + 需要自己将 apk 格式转换为 crx 格式。没错,那个之前一直卡住我的“Test your APP”界面还附带了一个将 apk 格式转换为 crx 格式的功能。
Chrome ARC 安装使用过程详解
首先,我们需要将刚才安装的扩展程序全部卸载干净,然后将 Chrome 更新到最新的版本。
之后,我们需要安装 ARChon Runtime for Chrome。
下载地址:ARChon-v1.2-x86_64
360云盘:https://yunpan.360.cn/surl_yx8ATiSYI5r (提取码:d4e3)
百度网盘:https://pan.baidu.com/s/1MqmaE7QCDtpIkTbGu8tsVw (提取码: cj5c)
这个扩展程序适用于64位的 Intel x86 架构下桌面版 Chrome 和64位的 Chrome OS。如果你的电脑不是这个配置,就需要你自己去官方网站下载了。
传送门:ARChon Runtime for Chrome 官方网站(https://github.com/vladikoff/chromeos-apk/blob/master/archon.md)
开头的“Warning”也验证了我们的想法,这个运行环境( ARChon )将会替代官方的运行环境( ARC Welder 和 ARC Beta ),并且完全不依赖两者。
我们将下载好的压缩文件解压,打开 Chrome 扩展程序页面的“开发者模式”,并选择“加载已解压的扩展程序”,然后选择刚才我们解压出来的文件。Chrome 的离线扩展程序安装都是这个步骤,如果是 crx 文件,那么就先修改文件后缀将其变为压缩文件再解压。安装好后会出现两个错误/警告,不过并不影响使用,我们不用管它。
至此,我们 ARC 环境就算安装完成了,接下来我们需要将我们要安装的原始 Android 应用程序包(APK)转换成一个 Chrome 扩展程序。之前有一个在线 apk 格式转换为 crx 格式的网站(http://huodong.ustc.edu.cn/Crx),不过现在这个网站不能用了。于是我们只能使用当初 Vladikoff 提供的转换程序 chromeos-apk,不过好在这个方法也并不复杂。
首先,我们需要下载并安装 Node.js,只有10+MiB。这里 apk 格式转换为 crx 格式我是在 Windows 系统下操作的,如果有用不了 Windows 的朋友,可以让周围用 Windows 的朋友帮忙转换一下,或者发给我帮你转换(我的联系方式在网站的“关于我们”页面中)。
传送门:Node.js 官方网站(https://nodejs.org/en/)
安装完成后,打开“Node.js command prompt”。
然后,我们在 Node.js command prompt 的命令行中安装转换程序 chromeos-apk 。只需要输入一下指令,然后回车运行即可。
npm install chromeos-apk –g
安装好转换程序 chromeos-apk 后,我们就需要通过这个程序将我们的原始 Android 应用程序包(APK)转换成一个 Chrome 扩展程序。原始 Android 应用程序包(APK)最好是 Google Play 商店里的,比较纯净,但是登录 Google 商店需要科学上网。不能科学上网的朋友也可以自己在国内的安卓应用网站里下载 APK,尽量保持 APK 纯净就行。为了方便大家理解,我们后面以应用程序包“net.tandem_8427_apps.evozi.com.apk”举例。
我们再打开 Node.js command prompt,在 APK 所在目录下输入以下指令,将 apk 格式转换为 crx 格式。
chromeos-apk 应用程序包名称 –archon
拿我们举例的应用程序包来说,就应该先切换到该 apk 所在目录下,再输入指令“chromeos-apk net.tandem_8427_apps.evozi.com.apk –archon”。
这里再介绍一下会用到的其他指令。
“d:” :从当前目录切换到D盘目录,其他盘符同理。
“cd /” :回到当前盘的根目录。
“cd ./文件夹名” :将当前目录切换到当前目录中指定的文件夹中。
转换成功后,会在当前目录生成“包名.android”的文件夹(记住这个文件夹的名字,后面要用),即为转换后的 crx 文件目录。拿我们举例的应用程序包来说,转换后 crx 文件目录的名称就是“net.tandem.android”。
这个 crx 文件目录就相当于离线 crx 包修改后缀后解压的文件夹,那么后面的安装大家就应该非常熟悉了。只要打开 Chrome 扩展程序页面的开发者模式,并选择“加载已解压的扩展程序”,然后选择刚才我们解压出来的文件即可。
但是经过我实际测试和查阅网上的资料后发现,一般还会遇到以下问题:
1. 在chrome加载CRX文件目录时,出现错误“There is no “message” element for key extName.”
解决方法:以文本模式(例如使用 txt、word、VS Code )打开该 crx 文件夹下的“_locales/en”目录下的“messages.json”文件,在“extName”节点下,添加“message”字段标签,值则对应 crx 文件夹的名字(就是刚才说记住的文件夹的名字),然后保存退出即可。拿我们举例的应用程序包来说,添加的部分为“,”和“”message”:”net.tandem.android””。
2. 在chrome加载CRX文件目录时,出现错误“WebGL 不受支持。”。
解决方法:在 Chrome 地址栏输入“chrome://flags”,将以下四个功能全部打开。
[list]Override software rendering list
Native Client
WebGL 2.0 Compute
WebGL Draft Extensions[/list]
然后彻底关闭 Chrome,再重新打开(如果不知道如何彻底关闭 Chrome,那就重启电脑)。之后打开 Chrome 的“设置”,打开“高级”,“系统”一栏打开“使用硬件加速模式(如果可用)”。提示:如果你进行了之前的操作,那么这个默认开启的功能将会被关闭,需要你再次手动打开。
经过以上的操作,我们就可以顺利的使用 Chrome ARC 了。和之前的 ARC Welder 的打开方式是一样的。在 Chrome 地址栏输入“chrome://apps/”,然后选择我们安装好的应用即可使用。
当然,还有更简便的方法,就是直接从系统里打开该应用。
作者:https://twocups.cn/index.php/2020/01/09/10/