• 记一次手机与PC同步开发Android项目


    目录

    能力不足时曲线救国 >

    其他的曲线救国 >

    前言

    当今移动设备飞速发展,各种软件也层出不穷,大大的改变了人类现有的生活和工作方式。
    突然有一天,出门在外,想到一个主意,需要马上编写,奈何却没有电脑 没有开发环境。事后研究了一下手机端进行Android开发的方式:

    其实手机上已经出现很多优秀的Android开发app,AIDE,Androlua,JavaN-IDE等,最接近AS的就是AIDE了,有自己的gradle和git ,从AS下载的项目经过简单的修改就可以运行,且可以通过github实现共享达成双端同步开发的便利。

    但是最近一个androidX项目却栽了跟头,大概是AIDE的编译能力不足了,这可怎么办,手机开发旅程刚刚开始怎么能就这样结束?花了几天的事件搜索查找各种办法,终于让我再酷安找到了较为可行的办法,楼主Vcoty提出了利用Termux(一个很强大的终端模拟器)安装linux来编译本地项目!

    我像抓住了救命稻草,赶紧研究了一番,这篇文章记录移动开发过程,和其他的一些想法。

    流程简介

    AS创建Android项目并上传github --> AIDE从github克隆项目 --> 进行编写开发 --> Termu>Arch编译AIDE目录下的项目--> 继而完成安装测试
    (此时AIDE只充当编辑器的角色了)

    AS创建项目并上传GitHub

    考虑篇幅和重点,这步推个文【提交AS项目到GitHub】,或者自行搜索其他教程,应该不难。

    AIDE克隆GitHub项目

    也很简单:点击右下角蓝色按钮出来文件管理界面,进入到AppProjects目录点击Clone Git repository > 输入git(https)链接 > 点击CLONE,就用前面一篇文章的liswView项目吧。

    termux编译AIDE目录下的项目文件

    这个的第一次配置过程就很繁琐,源教程来自于Github项目【TermuxWithGradle】,可以边看Github的教程边看文章。

    Termux安装Arch/unbantu

    首先下载Termux,各大app平台均有下载,但是只有FD上的是完整包(其他平台安装后需要梯子下载Termux的资源文件才可运行)
    Termux安装好了,开始安装Arch吧!先别急基础包还没下呢:
    Termux运行

    pkg install proot wget curl
    ##需要的话还建议下vim编辑器
    pkg install vim
    

    下载Arch并安装两个方式,其实两个系统我都试过了,这里主要说Arch。ubuntu也大同小异。

    ##原教程
    wget https://github.com/SDRausty/TermuxArch/raw/master/setupTermuxArch.bash && bash setupTermuxArch.bash
    ##anlinux仪表盘教程
    ##arch系统
    pkg install wget openssl-tool proot tar -y && hash -r && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Arch/armhf/arch.sh && bash arch.sh
    ##ubuntu系统
    pkg install wget openssl-tool proot -y && hash -r && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/Ubuntu/ubuntu.sh && bash ubuntu.sh
    

    安装完毕后ls会出现这样几个文件arch-binds 丶arch-fs(系统文件) 丶 arsh.sh 丶 start-arch.sh(启动系统脚本)

    Arch无法访问网络

    Termux输入 ./start-arch.sh 启动系统,可以发现命令输入已经变成了 [root@localhost ~] 了,如果你细心的话还会发现欢迎页写着这么一句话:

    意思是让你运行目录下的additional.sh脚本来修复网络功能,修呗。

      ##先给脚本文件权限,再运行
      chmod 755 additional.sh
      sh additional.sh
    

    Arch-pacman安装软件包失败

    接下来开始用arch配置构建环境,要装SDKman之前,还是得先安装基础包(什么?之前我不是装过了吗?那是Tremux,现在是Arch所以需要)
    arch用的软件包管理是pacman

    ##unzip和zip软件包是安装SDKman的依赖包
    pacman -S wget curl unzip zip
    

    你会发现,安装失败!

    原因是软件的签名有问题,嗯呵,一番查找解决办法:

    pacman-key --init
    pacman-key --populate
    

    ok重新装下软件包,然后下一步>

    Arch安装SDKman

    可直接移步至SDKman官网

    ##安装,完毕之后建议打开新的bash
    curl -s "https://get.sdkman.io" | bash
    ##source更新(关闭Arshshixiao)
     source "$HOME/.sdkman/bin/sdkman-init.sh"
    

    sdk安装gradle

    安装SDKman之后这步没有难度

    sdk install gradle 6.1.1
    

    Arch安装JDK

    安装JDK配置环境我想你已经不是第一次了

    ##原教程方法下载解压至/root 一步到位
    wget https://github.com/VcotyQin/TermuxWithGradle/raw/master/jdk8_arm64/jdk-8u221-linux-arm64-vfp-hflt.tar.gz && tar xzvf jdk-8u221-linux-arm64-vfp-hflt.tar.gz
    

    Arch安装AndroidSDK

    和JDK一样没什么好说的

    ##创建一个android_sdk目录并进入到它
    mkdir android_sdk && cd android_sdk
    ##安装Android SDK Tools
    wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && unzip sdk-tools-linux-4333796.zip 
    

    配置环境

    下载解压完了再一起配置环境把

     #现在我们的arch的/root/目录下就有android_sdk 和 jdk_8u221xxx 文件夹了
     cd  ls ##查看
     ##配置环境
     vim /etc/profile 
     ##最后面输入
     export JAVA_HOME=/root/jdk1.8.0_221 #此处为jdk路径
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib/dt.jar
    export PATH=${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:$PATH
    
    export ANDROID_HOME=/root/android_sdk #此处写android_sdk的路径
    export PATH=$ANDROID_HOME/tools:$PATH
    export PATH=$ANDROID_HOME/tools/bin:$PATH
    export PATH=$ANDROID_HOME/platform-tools:$PATH
    ## wq保存文件之后更新
    source /etc/profile
    ## 校验配置是否正确
    echo $JAVA_HOME $ANDROID_HOME
    ## 输出/root/jdk_8u221 /root/android_sdk 代表成功
    

    噗嗤,前面是不是忘记安装vim编辑器了 pacman -S vim 不谢,vim编辑器i进入编辑模式,按ESC和:输入wq代表进入命令模式保存修改并退出vim。

    sdkmanager安装build-tools等

    这个sdkmanager可不是刚刚安装的SDKman,他是位于你android_sdk/tools/bin/下的,所以

     ##如果你现在位于root/目录下
     cd android_sdk/tools/bin
    sh sdkmanager "platform-tools" "build-tools;29.0.3" "platforms;android-29"
    

    这一步也不会有社么问题,安装完成

    Arch适配Termux

    这是Vcoty为TermuxArch适配写的脚本,目前仅支持arch系统,arm64架构。

    wget https://raw.githubusercontent.com/VcotyQin/TermuxWithGradle/master/adaptTermuxARM64.sh && chmod 777 adaptTermuxARM64.sh && ./adaptTermuxARM64.sh
    

    漫长的下载。。。
    如果下载完毕运行adaptTermuxARM64.sh出现错误,则应该是文件的权限问题,可以分开运行
    chmod 777 adaptTermuxARM64.sh./adaptTermuxARM64.sh 注意看报错信息

    如果cpu架构不同则需要替换android_sdk/build-tools/版本号/下的aapt aapt2
    替换方法(前面安装的build-tools是29.0.3版本)

    ## 下载aapt aapt2
    wegt
    https://raw.githubusercontent.com/VcotyQin/TermuxWithGradle/master/aapt/arm64/aapt
     https://raw.githubusercontent.com/VcotyQin/TermuxWithGradle/master/aapt/arm64/aapt2
    
    ls -l #查看文件权限,大小,创建日期等详细信息
    ## 给予文件相关权限
    chmod 755 aapt 
    chmod 755 aapt2
    ##复制文件到android_sdk/build-tools/29.0.3/
    cp aapt android_sdk/build-tools/29.0.3/
    cp aapt2 android_sdk/build-tools/29.0.3/
    

    完成后可以进入里面ls -l查看权限是否正确

    Arch安装glibc

    pacman -S glibc
    

    编译项目

    啊啊啊,终于到这一步了,激动万分的 cd /mnt/sdcard/ 却发现找不到目录?

    找不到sdcard

    像一盘冷水差点就浇灭了我的激情,但是箭在弦上,岂能不发,我还是找到了解决办法:
    首先exit退出Arch,还记得我们启动Arch的脚本文件star-arsh.sh吗?找到它!

    vim star-arsh.sh #你是不是又没装vim (:
    

    大概再二十几行处注意看注释(vim ESC:set number开启行号)

    ## uncomment the following line to mount /sdcard directly to /
    #command+=" -b /sdcard"
    

    #command+=" -b /sdcard"注释#给取消掉, wq保存修改, ./star-arsh.sh进入Arch。sdcard被“挂载”到了/下。

    进入我们的AIDE项目目录

    cd /sdcard/AppProjcet/你的项目名/app
    ls #gradle.build文件所在
    

    先不要着急 gradle build,前面说过

     source "$HOME/.sdkman/bin/sdkman-init.sh"
    

    是临时配置,关机失效,我们刚刚关闭了,所以还要重新运行
    然后可以开心的编译,然后去项目bliud/outputs/apk/debug/下安装apk测试了

    gradle build
    

    这里Vcoty说了几点需要注意的:

    classpath 'com.android.tools.build:gradle:3.0.0'中的版本号为Android Gradle插件的版本,而非Gradle的版本,官方有一个两者的对应关系。两者版本一定要对应上,否则会报错
    目前com.android.tools.build:gradle的版本最好低于3.1.0,因为在3.1.0之上启用aapt2打包资源之后会出问题
    每一个版本的build-tools中的aapt都需替换为对应cpu架构的版本

    祝你BUILD SUCCESS!

    利用服务器编译

    虽然千辛万苦的实现了手机上编译gradle,但是还是存在限制,或者其他未被发掘的问题,我想到了我空闲的Ubuntu云服务器,用云服务器编译项目,编译环境完美,再通过ftp或者git拿到apk文件不就行了?开搞!
    服务器是Ubuntu就不用装啥Arch了,接下来希望你已经熟悉linux基础和gradle的安装配置:
    手机可用Termux通过ssh连接服务器,

    apt install git unzip zip vim curl vsftpd #你懂的
    curl -s "https://get.sdkman.io" | bash #sdkman
    source "$HOME/.sdkman/bin/sdkman-init.sh" 
    ##jdk和sdk安装方法一样,省略,安装biuldtools工具也都一样
    ##不同的是不用执行Termux适配脚本了,复制aapt也无需,直接安装glibc
    apt install glibc 
    git clone 项目链接 #把项目克隆到服务器,git配置请看百度。。。太长了
    cd 项目app目录
    gralde bulid #完成
    
    

    服务器编译成功:

    手机安装apk正常

    可能引发的错误

    1. local.properties文件的配置默认sdk文件需要修改成当前android_sdk路径,否则会编译错误
    2. 暂时没遇到

    ftp传输编译后的apk文件

    相关文章:

    如何在linux下开启FTP服务

    Linux 下建立 Git 与 GitHub 的连接并克隆到本地

    Git 将代码提交到 GitHub(下)
    PS:root用户默认是无法开启ftp的,如果新建用户,要考虑编译环境是否也在新用户搭建

    手机上ftp连接我建议用MT浏览器;

    修改.gitgnore使apk随git上传

    还有一种方式可以不使用ftp即可传输编译后的apk,那就是直接用git,首先要修改项目的app下的 .gitignore文件,默认是只忽略/build文件夹,但是我们需要的apk在里面,所以可以改成

    /build/generated
    /build/intermediates
    /build/tmp
    

    这样在push提交推送的时候可以连apk一起上传,手机上直接使用AIDE的Git拉取即可

    其他想说&结语

    • Termux》arch安装sdk和jdk下载时太慢可以先在手机上下载,再用MT文件管理器复制到/data/data/com.termux/files/home:/root 然后更改权限即可(需要root)
    • 之后遇到的问题会在这篇文章继续更新(也可能另开)
    • 第一次写这么长的文章,感觉收获满满。
  • 相关阅读:
    自学入门 Python 优质中文资源索引
    Crawlab Lite 正式发布,更轻量的爬虫管理平台
    一款被大厂选用的 Hexo 博客主题
    源码解读 Golang 的 sync.Map 实现原理
    探究 Go 语言 defer 语句的三种机制
    一道快速考察 Python 基础的面试题
    编写自己的 GitHub Action,体验自动化部署
    Python 2 与 3 共存了 11 年,新年就要和它道别
    30 年前的圣诞节,Python 序章被谱写
    文言文编程火了,可我完全学不懂
  • 原文地址:https://www.cnblogs.com/zzerx/p/12399094.html
Copyright © 2020-2023  润新知