记一次手机与PC同步开发Android项目
<h2 id="目录">目录</h2><ul>
<li>-1 前言</li>
<li>0.0 流程简介</li>
<li>1.0 AS创建项目并上传GitHub</li>
<li>2.0 AIDE克隆GitHub项目</li>
</ul>
<p>能力不足时曲线救国 ></p>
<ul>
<li>3.0 termux编译AIDE目录下的项目文件
<ul>
<li>3.1 Termux安装Arch/unbantu
<ul>
<li>3.1.1 Arch无法访问网络</li>
<li>3.1.2 Arch-pacman安装软件包失败</li>
</ul>
</li>
<li>3.2 Arch安装SDKman
<ul>
<li>3.2.1 sdk安装gradle</li>
</ul>
</li>
<li>3.3 Arch安装JDK</li>
<li>3.4 Arch安装AndroidSDK</li>
<li>3.5 sdkmanager安装build-tools等</li>
<li>3.6 Arch适配Termux</li>
<li>3.7 Arch安装glibc</li>
<li>3.8 编译项目
<ul>
<li>3.8.1找不到sdcard</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>其他的曲线救国 ></p>
<ul>
<li>4.0 利用服务器编译
<ul>
<li>4.1 ftp传输编译后的apk文件</li>
<li>4.2 修改.gitgnore使apk随git上传</li>
</ul>
</li>
<li>5.0 其他想说&结语</li>
</ul>
<h2 id="前言">前言</h2>
<p>当今移动设备飞速发展,各种软件也层出不穷,大大的改变了人类现有的生活和工作方式。<br>
突然有一天,出门在外,想到一个主意,需要马上编写,奈何却没有电脑 没有开发环境。事后研究了一下手机端进行Android开发的方式:</p>
<p>其实手机上已经出现很多优秀的Android开发app,AIDE,Androlua,JavaN-IDE等,最接近AS的就是AIDE了,有自己的gradle和git ,从AS下载的项目经过简单的修改就可以运行,且可以通过github实现共享达成双端同步开发的便利。</p>
<p>但是最近一个androidX项目却栽了跟头,大概是AIDE的编译能力不足了,这可怎么办,手机开发旅程刚刚开始怎么能就这样结束?花了几天的事件搜索查找各种办法,终于让我再酷安找到了较为可行的办法,楼主Vcoty提出了利用Termux(一个很强大的终端模拟器)安装linux来编译本地项目!</p>
<p>我像抓住了救命稻草,赶紧研究了一番,这篇文章记录移动开发过程,和其他的一些想法。</p>
<h2 id="流程简介">流程简介</h2>
<p>AS创建Android项目并上传github --> AIDE从github克隆项目 --> 进行编写开发 --> Termu>Arch编译AIDE目录下的项目--> 继而完成安装测试<br>
(此时AIDE只充当编辑器的角色了)</p>
<h2 id="as创建项目并上传github">AS创建项目并上传GitHub</h2>
<p>考虑篇幅和重点,这步推个文【提交AS项目到GitHub】,或者自行搜索其他教程,应该不难。</p>
<h2 id="aide克隆github项目">AIDE克隆GitHub项目</h2>
<p>也很简单:点击右下角蓝色按钮出来文件管理界面,进入到AppProjects目录点击Clone Git repository > 输入git(https)链接 > 点击CLONE,就用前面一篇文章的liswView项目吧。</p>
<p><img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233005237-952448853.jpg" alt="" loading="lazy"></p>
<h2 id="termux编译aide目录下的项目文件">termux编译AIDE目录下的项目文件</h2>
<p>这个的第一次配置过程就很繁琐,源教程来自于Github项目【TermuxWithGradle】,可以边看Github的教程边看文章。</p>
<h3 id="termux安装archunbantu">Termux安装Arch/unbantu</h3>
<p>首先下载Termux,各大app平台均有下载,但是只有FD上的是完整包(其他平台安装后需要梯子下载Termux的资源文件才可运行)<br>
Termux安装好了,开始安装Arch吧!先别急基础包还没下呢:<br>
Termux运行</p>
<pre><code class="language-bash">pkg install proot wget curl
##需要的话还建议下vim编辑器
pkg install vim
</code></pre>
<p>下载Arch并安装两个方式,其实两个系统我都试过了,这里主要说Arch。ubuntu也大同小异。</p>
<pre><code class="language-bash">##原教程
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
</code></pre>
<p>安装完毕后ls会出现这样几个文件<strong>arch-binds 丶arch-fs(系统文件) 丶 arsh.sh 丶 start-arch.sh(启动系统脚本)</strong><br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233107709-876642980.jpg" alt="" loading="lazy"></p>
<h4 id="arch无法访问网络">Arch无法访问网络</h4>
<p>Termux输入 <strong>./start-arch.sh</strong> 启动系统,可以发现命令输入已经变成了 <strong></strong> 了,如果你细心的话还会发现欢迎页写着这么一句话:<br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233241285-1596207036.jpg" alt="" loading="lazy"><br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233330009-381318176.jpg" alt="" loading="lazy"></p>
<p>意思是让你运行目录下的additional.sh脚本来修复网络功能,修呗。</p>
<pre><code class="language-bash">##先给脚本文件权限,再运行
chmod 755 additional.sh
sh additional.sh
</code></pre>
<h4 id="arch-pacman安装软件包失败">Arch-pacman安装软件包失败</h4>
<p>接下来开始用arch配置构建环境,要装SDKman之前,还是得先安装基础包(什么?之前我不是装过了吗?那是Tremux,现在是Arch所以需要)<br>
arch用的软件包管理是pacman</p>
<pre><code class="language-bash">##unzip和zip软件包是安装SDKman的依赖包
pacman -S wget curl unzip zip
</code></pre>
<p>你会发现,安装失败!</p>
<p><img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233417094-1917346430.jpg" alt="" loading="lazy"></p>
<p>原因是软件的签名有问题,嗯呵,一番查找解决办法:</p>
<pre><code class="language-bash">pacman-key --init
pacman-key --populate
</code></pre>
<p>ok重新装下软件包,然后下一步></p>
<h3 id="arch安装sdkman">Arch安装SDKman</h3>
<p>可直接移步至SDKman官网</p>
<pre><code class="language-bash">##安装,完毕之后建议打开新的bash
curl -s "https://get.sdkman.io" | bash
##source更新(关闭Arshshixiao)
source "$HOME/.sdkman/bin/sdkman-init.sh"
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233530711-439692211.jpg" alt="" loading="lazy"></p>
<h4 id="sdk安装gradle">sdk安装gradle</h4>
<p>安装SDKman之后这步没有难度</p>
<pre><code class="language-bash">sdk install gradle 6.1.1
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302233548111-537870000.jpg" alt="" loading="lazy"></p>
<h3 id="arch安装jdk">Arch安装JDK</h3>
<p>安装JDK配置环境我想你已经不是第一次了</p>
<pre><code class="language-bash">##原教程方法下载解压至/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
</code></pre>
<h3 id="arch安装androidsdk">Arch安装AndroidSDK</h3>
<p>和JDK一样没什么好说的</p>
<pre><code class="language-bash">##创建一个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
</code></pre>
<h3 id="配置环境">配置环境</h3>
<p>下载解压完了再一起配置环境把</p>
<pre><code class="language-bash"> #现在我们的arch的/root/目录下就有android_sdk 和 jdk_8u221xxx 文件夹了
cdls ##查看
##配置环境
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 代表成功
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302234104370-1138134644.jpg" alt="" loading="lazy"></p>
<p>噗嗤,前面是不是忘记安装vim编辑器了 <strong>pacman -S vim</strong> 不谢,vim编辑器i进入编辑模式,按ESC和:输入wq代表进入命令模式保存修改并退出vim。</p>
<h3 id="sdkmanager安装build-tools等">sdkmanager安装build-tools等</h3>
<p>这个sdkmanager可不是刚刚安装的SDKman,他是位于你android_sdk/tools/bin/下的,所以</p>
<pre><code class="language-bash"> ##如果你现在位于root/目录下
cd android_sdk/tools/bin
sh sdkmanager "platform-tools" "build-tools;29.0.3" "platforms;android-29"
</code></pre>
<p>这一步也不会有社么问题,安装完成</p>
<h3 id="arch适配termux">Arch适配Termux</h3>
<p>这是Vcoty为TermuxArch适配写的脚本,目前仅支持arch系统,arm64架构。</p>
<pre><code class="language-bash">wget https://raw.githubusercontent.com/VcotyQin/TermuxWithGradle/master/adaptTermuxARM64.sh && chmod 777 adaptTermuxARM64.sh && ./adaptTermuxARM64.sh
</code></pre>
<p>漫长的下载。。。<br>
如果下载完毕运行adaptTermuxARM64.sh出现错误,则应该是文件的权限问题,可以分开运行<br>
<strong>chmod 777 adaptTermuxARM64.sh</strong> 和 <strong>./adaptTermuxARM64.sh</strong> 注意看报错信息<br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302234225431-627026062.jpg" alt="" loading="lazy"></p>
<p>如果cpu架构不同则需要替换android_sdk/build-tools/版本号/下的aapt aapt2<br>
替换方法(前面安装的build-tools是29.0.3版本)</p>
<pre><code class="language-bash">## 下载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/
</code></pre>
<p>完成后可以进入里面ls -l查看权限是否正确</p>
<h3 id="arch安装glibc">Arch安装glibc</h3>
<pre><code class="language-shell">pacman -S glibc
</code></pre>
<h3 id="编译项目">编译项目</h3>
<p>啊啊啊,终于到这一步了,激动万分的 <strong>cd /mnt/sdcard/</strong> 却发现找不到目录?</p>
<h4 id="找不到sdcard">找不到sdcard</h4>
<p>像一盘冷水差点就浇灭了我的激情,但是箭在弦上,岂能不发,我还是找到了解决办法:<br>
首先exit退出Arch,还记得我们启动Arch的脚本文件star-arsh.sh吗?找到它!</p>
<pre><code class="language-bash">vim star-arsh.sh #你是不是又没装vim (:
</code></pre>
<p>大概再二十几行处注意看注释(vim ESC:set number开启行号)</p>
<pre><code class="language-shell">## uncomment the following line to mount /sdcard directly to /
#command+=" -b /sdcard"
</code></pre>
<p>把 <strong>#command+=" -b /sdcard"</strong>注释#给取消掉, <strong>wq</strong>保存修改, <strong>./star-arsh.sh</strong>进入Arch。sdcard被“挂载”到了/下。<br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302234412589-1814139963.jpg" alt="" loading="lazy"></p>
<p>进入我们的AIDE项目目录</p>
<pre><code class="language-bash">cd /sdcard/AppProjcet/你的项目名/app
ls #gradle.build文件所在
</code></pre>
<p>先不要着急 <strong>gradle build</strong>,前面说过</p>
<pre><code class="language-bash"> source "$HOME/.sdkman/bin/sdkman-init.sh"
</code></pre>
<p>是临时配置,关机失效,我们刚刚关闭了,所以还要重新运行<br>
然后可以开心的编译,然后去项目bliud/outputs/apk/debug/下安装apk测试了</p>
<pre><code class="language-bash">gradle build
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302234454901-677035564.jpg" alt="" loading="lazy"></p>
<p>这里Vcoty说了几点需要注意的:</p>
<p>classpath 'com.android.tools.build:gradle:3.0.0'中的版本号为Android Gradle插件的版本,而非Gradle的版本,官方有一个两者的对应关系。两者版本一定要对应上,否则会报错<br>
目前com.android.tools.build:gradle的版本最好低于3.1.0,因为在3.1.0之上启用aapt2打包资源之后会出问题<br>
每一个版本的build-tools中的aapt都需替换为对应cpu架构的版本</p>
<p>祝你BUILD SUCCESS!</p>
<h2 id="利用服务器编译">利用服务器编译</h2>
<p>虽然千辛万苦的实现了手机上编译gradle,但是还是存在限制,或者其他未被发掘的问题,我想到了我空闲的Ubuntu云服务器,用云服务器编译项目,编译环境完美,再通过ftp或者git拿到apk文件不就行了?开搞!<br>
服务器是Ubuntu就不用装啥Arch了,接下来希望你已经熟悉linux基础和gradle的安装配置:<br>
手机可用Termux通过ssh连接服务器,</p>
<pre><code class="language-bash">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 #完成
</code></pre>
<p>服务器编译成功:<br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302235405900-1414111198.png" alt="" loading="lazy"><br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302235833794-1884353263.png" alt="" loading="lazy"></p>
<p>手机安装apk正常</p>
<h4 id="可能引发的错误">可能引发的错误</h4>
<ol>
<li><strong>local.properties</strong>文件的配置默认sdk文件需要修改成当前android_sdk路径,否则会编译错误</li>
<li>暂时没遇到</li>
</ol>
<h3 id="ftp传输编译后的apk文件">ftp传输编译后的apk文件</h3>
<p>相关文章:</p>
<p>【如何在linux下开启FTP服务】</p>
<p>【Linux 下建立 Git 与 GitHub 的连接并克隆到本地】</p>
<p>【Git 将代码提交到 GitHub(下)】<br>
PS:root用户默认是无法开启ftp的,如果新建用户,要考虑编译环境是否也在新用户搭建</p>
<p>手机上ftp连接我建议用MT浏览器;</p>
<h3 id="修改gitgnore使apk随git上传">修改.gitgnore使apk随git上传</h3>
<p>还有一种方式可以不使用ftp即可传输编译后的apk,那就是直接用git,首先要修改项目的app下的 <strong>.gitignore</strong>文件,默认是只忽略/build文件夹,但是我们需要的apk在里面,所以可以改成</p>
<pre><code class="language-bash">/build/generated
/build/intermediates
/build/tmp
</code></pre>
<p>这样在push提交推送的时候可以连apk一起上传,手机上直接使用AIDE的Git拉取即可<br>
<img src="https://img2020.cnblogs.com/blog/1872703/202003/1872703-20200302234808817-1772715191.png" alt="" loading="lazy"></p>
<h2 id="其他想说结语">其他想说&结语</h2>
<ul>
<li>Termux》arch安装sdk和jdk下载时太慢可以先在手机上下载,再用MT文件管理器复制到/data/data/com.termux/files/home:/root 然后更改权限即可(需要root)</li>
<li>之后遇到的问题会在这篇文章继续更新(也可能另开)</li>
<li>第一次写这么长的文章,感觉收获满满。</li>
</ul><br><br>
来源:https://www.cnblogs.com/zzerx/p/12399094.html
頁:
[1]