能力不足时曲线救国 >
其他的曲线救国 >
当今移动设备飞速发展,各种软件也层出不穷,大大的改变了人类现有的生活和工作方式。
突然有一天,出门在外,想到一个主意,需要马上编写,奈何却没有电脑 没有开发环境。事后研究了一下手机端进行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】,或者自行搜索其他教程,应该不难。
也很简单:点击右下角蓝色按钮出来文件管理界面,进入到AppProjects目录点击Clone Git repository > 输入git(https)链接 > 点击CLONE,就用前面一篇文章的liswView项目吧。
这个的第一次配置过程就很繁琐,源教程来自于Github项目【TermuxWithGradle】,可以边看Github的教程边看文章。
首先下载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(启动系统脚本)
Termux输入 ./start-arch.sh 启动系统,可以发现命令输入已经变成了 [root@localhost ~] 了,如果你细心的话还会发现欢迎页写着这么一句话:
意思是让你运行目录下的additional.sh脚本来修复网络功能,修呗。
##先给脚本文件权限,再运行
chmod 755 additional.sh
sh additional.sh
接下来开始用arch配置构建环境,要装SDKman之前,还是得先安装基础包(什么?之前我不是装过了吗?那是Tremux,现在是Arch所以需要)
arch用的软件包管理是pacman
##unzip和zip软件包是安装SDKman的依赖包
pacman -S wget curl unzip zip
你会发现,安装失败!
原因是软件的签名有问题,嗯呵,一番查找解决办法:
pacman-key --init
pacman-key --populate
ok重新装下软件包,然后下一步>
可直接移步至SDKman官网
##安装,完毕之后建议打开新的bash
curl -s "https://get.sdkman.io" | bash
##source更新(关闭Arshshixiao)
source "$HOME/.sdkman/bin/sdkman-init.sh"
安装SDKman之后这步没有难度
sdk install gradle 6.1.1
安装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
和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可不是刚刚安装的SDKman,他是位于你android_sdk/tools/bin/下的,所以
##如果你现在位于root/目录下
cd android_sdk/tools/bin
sh sdkmanager "platform-tools" "build-tools;29.0.3" "platforms;android-29"
这一步也不会有社么问题,安装完成
这是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查看权限是否正确
pacman -S glibc
啊啊啊,终于到这一步了,激动万分的 cd /mnt/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正常
【Linux 下建立 Git 与 GitHub 的连接并克隆到本地】
【Git 将代码提交到 GitHub(下)】
PS:root用户默认是无法开启ftp的,如果新建用户,要考虑编译环境是否也在新用户搭建
手机上ftp连接我建议用MT浏览器;
还有一种方式可以不使用ftp即可传输编译后的apk,那就是直接用git,首先要修改项目的app下的 .gitignore文件,默认是只忽略/build文件夹,但是我们需要的apk在里面,所以可以改成
/build/generated
/build/intermediates
/build/tmp
这样在push提交推送的时候可以连apk一起上传,手机上直接使用AIDE的Git拉取即可