WWW.lllT.neT这篇文章内容带各位了解一下VSCode怎样开展安卓编程?期待对必须的小伙伴有些协助!

VSCode怎样开展安卓编程?Code FA新项目实战演练共享

vs code 绝大多数是由 ts 撰写,顶层 UI 可以运作在系统结构的手机浏览器中,但 vs code 根据 electron 架构,这一架构给予了对 node 的适用,一些ie内核中的 js 模块沒有的 api,比如 I/O,系统软件核心的一些互动等。而 code-server 则是解决了摆脱 electron 的问题。现阶段安卓系统上有一个叫 aid learing 的APP,内置 VS Code ,看过一下基本原理类似,并并不是 linux 用户界面开启的 VS Code,也是开启的 webview 联接当地的服务项目,但这一东西占硬盘运行内存太高,全部安装下载完就灭掉6个g。【建议学习培训:《vscode入门教程》】

手机客户端架构

手机客户端是用 Flutter 开展的开发设计,而这一架构的采用并非为了更好地跨端,只是是为了更好地迅速试着,也有基本工作能力的应用。

完成方式剖析

code-server 在 github 公布的新版本中是有 arm64 构架的,全部在线下载后,开终端设备缓解压力实行就挂掉,这一尽管是 arm64,而且含有一个 arm64 的 node,可是是为详细 linux 提前准备的。换句话说,node 中硬编码了 /usr /lib 等这种途径,而且附加的 node_modules 中也有大批量的运用到 linux 独有连接点的途径,这种安卓系统上面沒有。 之后一想,termux 中内置的条件也是有 libllvm gcc nodejs 的,把全部 node_mudules 一删,再手动式 install 一下,就可以了。 因此全部步骤大概分成两大类。

原始试着计划方案:非详细Linux

  • 运行 termux 自然环境

  • 组装 node,python,libllvm,clang

  • 在线下载 code-server arm64,缓解压力

  • 解决兼容,删掉 node_modules ,再次 yarn install

  • 实行 bin/code-server 运行服务项目

通过一些检测发觉,这类方式有一些问题。

  • 在线下载的依靠过多,因为源都是在我的个人服务器,会下好长时间。
  • 编译程序很久,yarn install 的情况下读取了 gcc 的编译程序,整个过程尤其用时。
  • 运行的 vs code 用不上检索编码(一切正常状况能适用这一作用)
  • 硬盘占有很大,一阵实际操作出来,立即1.6g储存空间给干没了,主要是 npm install 拉了很多东西,还转化成了一堆缓存文件,node_modules 嘛,比超级黑洞还重的物品。

但是依照以上的步骤过一遍后,code-server 内的 node_modules 早已是安卓系统 arm64 可以用的版块了,二次装包 code-server,步骤就可以简单化成如下所示

  • 运行 termux 自然环境

  • 组装 node

  • 在线下载 code-server arm64,缓解压力

  • 实行 bin/code-server

但依然会存有编辑软件没法检索编码的 bug,node 尽管仅有 20m ,但還是在个人服务器,下行带宽 5mb,大约 700kb/s ,emmm,要结合到 apk 内得话,得集成化 deb ,调 dpkg 去组装,舍弃。

最终应用计划方案:详细Linux

  • 运行 termux 自然环境

  • 安装下载详细 Linux(30m)

  • 在线下载 code-server arm64(内置node可用了)

  • 实行 bin/code-server 运行服务项目

最后是采用了详细 Linux 的方法,除开组装必须的容积更小以外,也有详细源的适用,出现异常 bug 的防止等。 因为全部 VS Code 的运行需求的 130mb 的运行内存全是第一次开启必须的,因此将这种运行内存的占有放进网络服务器上,由 app 运行再在线下载的实际意义并不算太大,最终就统统做为网络资源文档集成化到了 apk 内。

实际完成

运行 termux 自然环境

这一全过程以前有现有的车轮了,只要依照 termux-package 的编译程序脚本制作编译程序一个 bootstrap 集成化到 apk,app 运行开展缓解压力,随后依据标记连接文件格式开展修复就可以了。 终端设备是 termare_view。

bootstrap 是一个含有最少依靠的类 linux 自然环境,有bash,apt 等。

实际完成编码

function initApp(){
  cd ${RuntimeEnvir.usrPath}/
  echo 提前准备标记连接...
  for line in `cat SYMLINKS.txt`
  do
    OLD_IFS="$IFS"
    IFS="←"
    arr=($line)
    IFS="$OLD_IFS"
    ln -s ${arr[0]} ${arr[3]}
  done
  rm -rf SYMLINKS.txt
  TMPDIR=/data/data/com.nightmare.termare/files/usr/tmp
  filename=bootstrap
  rm -rf "$TMPDIR/$filename*"
  rm -rf "$TMPDIR/*"
  chmod -R 0777 ${RuntimeEnvir.binPath}/*
  chmod -R 0777 ${RuntimeEnvir.usrPath}/lib/* 2>/dev/null
  chmod -R 0777 ${RuntimeEnvir.usrPath}/libexec/* 2>/dev/null
  apt update
  rm -rf $lockFile
  export LD_PRELOAD=${RuntimeEnvir.usrPath}/lib/libtermux-exec.so
  install_vs_code
  start_vs_code
  bash
}

RuntimeEnvir.usrPath 是 /data/data/$package/files/usr/bin

组装详细 Linux 和 code-server

这一从好多个计划方案做好了挑选,最初用的 atlio 这一开源系统,全部开源系统依靠 python,而且有一个requirement.txt ,必须实行 python -r requirement.txt,依靠便是一大堆,之后换了 proot-distro,纯 shell,因此只要立即集成化到 apk 内就可以了。

1.组装 ubuntu

install_ubuntu(){
  cd ~
  colorEcho - 组装Ubuntu Linux
  unzip proot-distro.zip >/dev/null
  #cd ~/proot-distro
  bash ./install.sh
  apt-get install -y proot
  proot-distro install ubuntu
  echo '$source' > $ubuntuPath/etc/apt/sources.list
}

2.组装 code-server

install_vs_code(){
  if [ ! -d "$ubuntuPath/home/code-server-$version-linux-arm64" ];then
    cd $ubuntuPath/home
    colorEcho - 缓解压力 Vs Code Arm64
    tar zxvf ~/code-server-$version-linux-arm64.tar.gz >/dev/null
    cd code-server-$version-linux-arm64
  fi
}

运行 code-server

立即用 proot-distro 运行就可以了,十分便捷

--termux-home 主要参数:打开 app 沙盒游戏的 home 初始化到 ubuntu 的 /root 下,那样 ubuntu 就能用 app 里边的文件夹名称了。

start_vs_code(){
  install_vs_code
  mkdir -p $ubuntuPath/root/.config/code-server 2>/dev/null
  echo '
  bind-addr: 0.0.0.0:8080
  auth: none
  password: none
  cert: false
  ' > $ubuntuPath/root/.config/code-server/config.yaml
  echo -e "x1b[31m- 运行中..x1b[0m"
  proot-distro login ubuntu -- /home/code-server-$version-linux-arm64/bin/code-server
}

实际上全部完成实际上是没啥难度系数的,统统是一些 shell 脚本制作,也是归功于以前的 Termare 系列产品的适用,有感兴趣的能看下这一机构。 随后便是开启 webview 的全过程了,假如感觉特性不太好,你能用局域网络的电脑上来实现联接。 看一下非初次的运行全过程

WebView 完成计划方案

最先去 pub 看过一下 webview 的软件,官方网现阶段已经维护保养的 webview 有这种的提醒

  • Hybrid composition mode has a built-in keyboard support while Virtual displays mode has multiple keyboard issues
  • Hybrid composition mode requires Android SKD 19 while Virtual displays mode requires Android SDK 20
  • Hybrid composition mode has performence limitations when working on Android versions prior to Android 10 while Virtual displays is performant on all supported Android versions

换句话说打开 hybird 后,安卓系统10下列有特性限定,而应用虚拟显示器得话,电脑键盘问题会许多。

具体试着的情况下,OTG 联接的电脑键盘基本上是不能用的。

再剖析了下这一情景,最终或是用的原生态 WebView,这儿有一些凹坑。

务必开启项

        WebSettings mWebSettings = mWebView.getSettings();        //容许应用JS
        mWebSettings.setJavaScriptEnabled(true);
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        mWebSettings.setUseWideViewPort(true);
        mWebSettings.setAllowFileAccess(true);        // 下边这行不写不得行
        mWebSettings.setDomStorageEnabled(true);
        mWebSettings.setDatabaseEnabled(true);
        mWebSettings.setAppCacheEnabled(true);
        mWebSettings.setLoadWithOverviewMode(true);
        mWebSettings.setDefaultTextEncodingName("utf-8");
        mWebSettings.setLoadsImagesAutomatically(true);
        mWebSettings.setSupportMultipleWindows(true);

路由器跳转

有一些情景 VS Code 会开启一个新的对话框,比如点一下 file -> new window 的情况下,不做解决,webview 会调起系统软件的电脑浏览器。

        //系统软件默认设置会根据浏览器打开网站,为了更好地可以立即根据WebView表明网页页面,务必设定
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //应用WebView载入表明url
                view.loadUrl(url);
                //回到true
                return true;
            }
        });

电脑浏览器一切正常自动跳转

比如终端设备导出了 xxx.xxx,ctrl 鼠标单击,预估是会浏览器打开的。

mWebView.setWebChromeClient(webChromeClient);
WebChromeClient webChromeClient = new WebChromeClient() {

        @Override
        public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
            WebView childView = new WebView(context);//Parent WebView cannot host it's own popup window.
            childView.setBackgroundColor(Color.GREEN);
            childView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                    return true;
                }
            });
            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
            transport.setWebView(childView);//setWebView和getWebView两个方式
            resultMsg.sendToTarget();
            return true;
        }
    };

可行性分析探寻

这一能干什么?安卓系统显示屏那麼小,电脑上能当地用 VsCode 干什么要连安卓系统的?

  • 有一个 vs code 加一个完全的 linux 自然环境,能 cover 住一些情景的开发设计了,安卓编程等以外。
  • 开发设计程序流程到 arm 木板的同学们,PC 上还得弄一堆交叉编译专用工具链,而且每回编译程序调节全过程也很繁杂,如今就能当地写当地编译程序。

恰巧,买了一个平板电脑,爱奇艺视频之外,也可以做为程序猿的一波生产效率了。

VSCode怎样开展安卓编程?Code FA新项目实战演练共享

编译程序 C 语言表达

选了一个一直在学习培训的新项目,scrcpy,一堆 c 源代码,最终很成功的编译程序出来了。

VSCode怎样开展安卓编程?Code FA新项目实战演练共享

Web 开发设计

挪动端网页页面调节一直全是问题,做为歪门邪道前面的我也很无奈,一般会加一些 vconsole 的部件来获得调节日志。

以前本人新项目速享兼容手机端 web 便是那么干的

如今,我们可以当地开发设计,当地调节,有 node 全部前面绝大多数新项目都能拉下去了,真正的手机端物理学自然环境。 试一下VSCode怎样开展安卓编程?Code FA新项目实战演练共享

写文章赚钱

这篇文章内容彻底是在这一手机版的%20VS%20Code%20中进行的,应用%20hexo%20当地调式

写文本文档

VSCode怎样开展安卓编程?Code FA新项目实战演练共享

VSCode怎样开展安卓编程?Code FA新项目实战演练共享

写后台管理,app测试

写一点简易的后台管理,如 python 的 fastapi,flask,并根据 rest client 开展app测试

VSCode怎样开展安卓编程?Code FA新项目实战演练共享

最终

为了更好地让其余的客户能立即应用到这一 app,我将其发布到了酷安。

看过下 vscodium 和 code-server 的开源协议全是 MIT,如果有侵权行为的地区艰辛发表评论提示一下敝人。

Code FA 酷安下载详细地址

Code FA 个人服务器下载链接

本人APP便捷下载链接

开源系统详细地址

随意玩,有什么问题发表评论留言板留言,感觉非常好的给个 star,文章内容非常好的给个赞,

以上便是VSCode怎样开展安卓编程?Code FA新项目实战演练分析的详尽具体内容,大量请关心自学java网其他相关文章!

WWW.lllT.neT

声明:有的资源来自网络转载,版权归原作者所有,如有侵犯到您的权益请联系邮箱:our333@126.com我们将配合处理!

原文地址:VSCode怎样开展安卓编程?Code FA新项目实战演练共享发布于2021-12-05 11:11:01