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

目录

  • -1 前言
  • 0.0 流程简介
  • 1.0 AS创建项目并上传GitHub
  • 2.0 AIDE克隆GitHub项目

能力不足时曲线救国 >

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

    • 3.1 Termux安装Arch/unbantu

      • 3.1.1 Arch无法访问网络
      • 3.1.2 Arch-pacman安装软件包失败
    • 3.2 Arch安装SDKman
      • 3.2.1 sdk安装gradle
    • 3.3 Arch安装JDK
    • 3.4 Arch安装AndroidSDK
    • 3.5 sdkmanager安装build-tools等
    • 3.6 Arch适配Termux
    • 3.7 Arch安装glibc
    • 3.8 编译项目
      • 3.8.1找不到sdcard

其他的曲线救国 >

  • 4.0 利用服务器编译

    • 4.1 ftp传输编译后的apk文件
    • 4.2 修改.gitgnore使apk随git上传
  • 5.0 其他想说$结语

前言

当今移动设备飞速发展,各种软件也层出不穷,大大的改变了人类现有的生活和工作方式。
突然有一天,出门在外,想到一个主意,需要马上编写,奈何却没有电脑 没有开发环境。事后研究了一下手机端进行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 启动系统,可以发现命令输入已经变成了 [[email protected] ~] 了,如果你细心的话还会发现欢迎页写着这么一句话:

意思是让你运行目录下的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 的连接并克隆到本地

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

原文地址:https://www.cnblogs.com/zzerx/p/12399094.html

时间: 2024-10-04 16:49:53

记一次手机与PC同步开发Android项目的相关文章

用 Kotlin 开发 Android 项目的感受

原文:http://www.jianshu.com/p/8a1fce6fa93a 和 http://www.jianshu.com/p/b444aea1b038 空指针安全 简单一点的例子,那就是 String 和 String? 是两种不同的类型.String 已经确定是不会为空,一定有值:而 String?则是未知的,也许有值,也许是空.在使用对象的属性和方法的时候,String 类型的对象可以毫无顾忌的直接使用,而 String?类型需要你先做非空判断. fun demo() {    

doduicms 手机和pc同步 链接处理

string SiteDomain = getNewsDomain(NewsID); string mobile = HttpContext.Current.Session["ismobile"] != null ? HttpContext.Current.Session["ismobile"].ToString() : "0"; if (mobile == "1") SiteDomain = SiteDomain.Repla

J2EE实战开发Android项目视频教程

基于J2EE实战竭诚网上商城B2C购物系统开发配Android版购物客户端(JFreeChart3D) 适合人群:初级 课时数量:100课时 用到技术:J2EE.Android.JFreeChart3D 涉及项目:B2C购物系统 咨询qq:1840215592 一.课程适合的对象: 在javaWeb框架体系中发展的开发人员,和Android初级开发人员,并且想要提升web框架开发技能的Java开发和想从事Android开发人员. 二.课程培养目标: 1.掌握JavaWeb SSH框架组织体系.

在Android开发android项目遇到的常见问题整合

常见问题 1. 导入SupportV7Demo编译报错,控制台提示 [2016-05-26 16:17:22 - Support7Demos] D:\workspace\xa27_advanced\Support7Demos\res\values\styles.xml:26: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.N

dedecms手机PC同步更新插件的bug修复和前后端调试的经验

2017年,由于工作原因,下载了一个dedecms手机和PC同步更新的插件. 拿到这个插件的时候,出现了手机端和PC,模板混乱生成的问题. 由于,当时仅仅是使用dedecms,对dede内核的一些函数并不了解. 所以,对这个bug的修复,一筹莫展.但并没有放弃,接下来的一两年,我对这个问题,无数次的冲锋都倒了下. 趁着疫情这段时间,加上参加了技术培训,这次又冲锋了一次.成功了. 一:相关技术基础. 1.要有一定的PHP基础.遇到PHP代码不要怕.能读懂每段代码的意思. 2.要对dede的缓存有一

Android手机的USB转串口开发硬件以及软件源代码

Android手机的USB转串口开发Android手机的USB接口在各个领域都得到了广泛的应用和推广.笔者前几天接手一个项目,主要就是解决工业现场数据采集的问题,该项目是由深圳宏进科技委托笔者开发的.现场的总线是RS485和RS232总线,需要用电脑和手机方便的采集数据,保留并从现场发给深圳公司进行数据分析和问题的解决.硬件采用常用的USB转串口模块,既可以用电脑配合串口软件进行数据采集,又可以通过Android手机的USB配合相应的APP进行数据采集.硬件如下图:电脑的数据采集软件网上很多.笔

Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP

Android基础入门教程--1.2.1 使用Eclipse + ADT + SDK开发Android APP 标签(空格分隔): Android基础入门教程 1.前言 这里我们有两条路可以选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 因为谷歌已经放弃了ADT的更新,官网上也取消的下载链接,这里提供谷歌放弃更新前最新版本的 ADT Bundle供大家下载! 2.直接使用打包好的Eclipse 32位版:adt-bundle-windows-x86-20140

Android基础新手教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP

Android基础新手教程--1.2.1 使用Eclipse + ADT + SDK开发Android APP 标签(空格分隔): Android基础新手教程 1.前言 这里我们有两条路能够选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 由于谷歌已经放弃了ADT的更新,官网上也取消的下载链接.这里提供谷歌放弃更新前最新版本号的 ADT Bundle供大家下载! 2.直接使用打包好的Eclipse 32位版:adt-bundle-windows-x86-2014

用Kotlin开发Android应用(I):介绍

关于Kotlin,网上已有一些介绍的文章,包括Antonio Leiva的这组blog翻译稿.不过,我还是想跟进它们.翻译它们,以锻炼自己的英文翻译.各位高手发现问题,请及时“拍砖”. 原文题目:Kotlin for Android (I): Introduction(http://antonioleiva.com/kotlin-for-android-introduction/) 原文作者:Antonio Leiva(http://antonioleiva.com/about/) 原文发布:2