[zzerX@blog ~ ]:

记一次手机与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项目吧。

aide

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)
  • 之后遇到的问题会在这篇文章继续更新(也可能另开)
  • 第一次写这么长的文章,感觉收获满满。

, , — Mar 2, 2020