Termux配置安卓编译环境

2024-06-04 4304阅读

前言

Termux安装后,就相当于把手机变成了一台Linux服务器,而且现在手机卡通常是能拿到ipv6公网地址的,所以,这个服务器能干啥?

  • 编程
  • 搭建网站
  • 跑脚本

    本文讲述的就是怎么在Termux搭建安卓编译环境,实现手机app自产自编,自己搞自己,脱离电脑搞app开发。

    Step1 配置sdkmanager

    打开android 官网,下载sdkmanager最新版,推送到Termux中,创建android sdk 保存目录,解压commandline-tools并进行调整,参考android sdk标准目录,把解压内容都放到latest中。

    不要直接解压,这个commandline-tools解压后不是标准目录。

    标准的sdk目录是这样的

    Termux配置安卓编译环境 第1张

    脚本执行处理:

    curl -O https://googledownloads.cn/android/repository/commandlinetools-linux-11076708_latest.zip
    ANDROID_HOME=~/android/sdk/
    mkdir -p $ANDROID_HOME
    unzip `ls |grep "commandlinetools-linux.*_latest.zip"` -d $ANDROID_HOME
    # cmdline-tools 的产物需要移动到cmdline-tools/latest目录中,这是android sdk固定的路径组织形式
    # 压缩包没有包含在latest文件夹中,自己移动一下
    mv $ANDROID_HOME/cmdline-tools/* $ANDROID_HOME/latest
    mv $ANDROID_HOME/latest $ANDROID_HOME/cmdline-tools
    

    啥,命令有点多,手指打字累***

    那还是连接个蓝牙键盘吧,打开手机otg功能,就可以自由输入了,啥,你没有蓝牙键盘?没事,淘宝几元一个usb otg转接头,把键盘插到手机上也可以。

    啥?都没有,那你还是开启sshd服务,电脑连接手机吧,可以参考作者前一篇文。

    Step2 配置android环境变量

    命令

    vim ~/.bashrc
    

    配置:

    echo "用户:"$(whoami)
     
    if pgrep -x "sshd" >/dev/null
      then
       echo
       #echo "sshd运行中..."
      else
        sshd
        echo "自动启动sshd"
    fi
    export ANDROID_HOME=~/android/sdk
    export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
    

    执行source .bashrc 更新环境变量,使之生效

    不生效就干掉Termux,重新打开。

    Step3 下载android sdk开发工具

    sdkmanager下载之后不代表弄完了android开发环境,这个sdkmanager仅仅是个管理sdk的命令行工具,它是用来下载、更新、移除安卓sdk的。

    所以,通过它安装目前最新的安卓版本开发工具吧:

    #查看sdk列表
    sdkmanager --list
    #安装安卓14平台开发工具
    sdkmanager --install "platforms;android-34"
    #安装支持安卓14的构建工具
    sdkmanager --install "build-tools;34.0.0"
    

    Step3 配置Java环境

    Termux显然不能直接安装android studio来使用,所以需要我们自己配置java环境(当然,你又在Termux中安装ubutun当我没说)

    Termux 官方的jdk是17,比较新,正常来说,本文发布时安卓开发用得最多的是jdk11,jdk17部分老项目无法编译。

    但是jdk11的Termux兼容版本被原作者干掉了,所以,想折腾的兄弟去github再找找吧,不行就自己编译。

    不用纠结,上jdk17,编译不了的项目,给它升级!

    Termux安装jdk17一条命令即可:

    pkg install openjdk-17
    

    哈哈哈,啊啊啊~你仰天大笑一声,竖子!敢尔。你以为不过如此,和linux平台搞环境一毛一样,于是你匆匆忙忙安装git,然后迫不及待地下载一个项目来编译,结果编译失败,你傻眼了。

    Step5 安卓sdk环境修复

    第一个异常

    你的操作过程如下:

    # 下载一个git项目
    git clone xxxx.git
    cd xxxx
    # 赋予gradle脚本执行权限
    chmod +x ./gradlew
    ./gradlew build
    

    你得到的错误如下:

    Termux配置安卓编译环境 第2张

    原因很简单,环境变量ANDROID_HOME没配置???什么,之前不是配置了吗?你不管了,你知道Termux和正常的Linux还是有区别的,于是vim local.properties 编辑文件,指定了

    # 写全路径,不写$ANDROID_HOME,读不到
    sdk.dir=/data/data/com.termux/files/home/android/sdk
    

    再然后,编译,你又傻眼了

    第二个异常

    Termux配置安卓编译环境 第3张

    你观察发现,似乎报错是说这个错误正常不应该出现。所以是sdk异常?

    问谷歌,你找到了原因,原来是google编译的安卓sdk没有arm版本,而现代手机通常都是arm-v8-64架构。

    github一番,你千辛万苦找到了sdk工具的各种架构版本:

    https://github.com/lzhiyong/android-sdk-tools/releases/tag/34.0.3

    https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-aarch64.zip

    https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-arm.zip

    https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-i686.zip

    https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-x86_64.zip

    你选择了arm版本下载,按照指引将其解压到sdk对应的目录,并覆盖掉。

    命令:

    curl -O https://github.com/lzhiyong/android-sdk-tools/releases/download/34.0.3/android-sdk-tools-static-arm.zip
    unzip android-sdk-tools-static-arm.zip -d ./armtools
    # 下载的是34版本的,所以,覆盖到34版本的目录
    cp -p ./armtools/build-tools/*  ~/android/sdk/build-tools/34.0.0
    cp -p ./armtools/platform-tools/*  ~/android/sdk/platform-tools 
    

    再次编译项目,你懵逼了,怎么还是一样的错误?你不禁深深地怀疑人生。

    经过一个香烟的思考时间后,你终于把目光看向这一行报错代码:

    /data/data/com.termux/files/home/.gradle/caches/transforms-4/2e9d53eb8f30ecd552adf0fe0f14f8c5/transformed/aapt2-8.4.0-alpha07-11315950-linux/aapt2[2]: syntax error: unexpected '('

    这说明.gradle下存在一个aapt2,gradle编译的时根本没拿sdk目录的aapt 文件?

    你进到报错的目录一看,果然如此!

    你不禁跃跃欲试:“大胆点?我直接把这个gradle路径下的aapt2替换掉?”

    说干就干。

    因为sdk目录的aapt2已经被替换了,所以,你直接命令行覆盖报错:

    # 注意,因为gradle草丹的缓存机制,每个人甚至每个项目的路径都不一样,请按照自己报错的路径进行替换
    cp -f ~/android/sdk/build-tools/34.0.0/aapt2 /data/data/com.termux/files/home/.gradle/caches/transforms-4/2e9d53eb8f30ecd552adf0fe0f14f8c5/transformed/aapt2-8.4.0-alpha07-11315950-linux/aapt2
    

    再次编译,./gradlew assembleDebug

    Good good study, day day up.

    Success!

    可以愉快地去安装apk了。

    Termux配置安卓编译环境 第4张

    Setup6 安装apk到手机中

    编译已经完成,我相信,大家可以随意拖apk出来,然后点击安装了。

    不外呼:cp ./app/build/outputs/apk/debug/app-debug.apk /sdcard/

    然后打开手机,去点击安装嘛。

    不过,现在我要介绍的是,执行adb安装到本手机上。

    adb在sdk的platform-tools下,将其添加到环境变量中,以便运行

    echo "用户:"$(whoami)
     
    if pgrep -x "sshd" >/dev/null
      then
       echo
       #echo "sshd运行中..."
      else
        sshd
        echo "自动启动sshd"
    fi
    export ANDROID_HOME=~/android/sdk
    export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH
    

    如果,我是说如果你是普通运用,只想用adb安装东西,不想安装sdk那么繁琐,完全可以执行命令安装pkg install android-tools

    这会安装一个旧版本的安卓开发工具包,包含adb。

    接下来就是重头戏。平时我们都是电脑调式手机,现在如何让手机自己调试自己呢?

    换个角度,平时电脑执行adb,相当与Termux现在是电脑,如何让手机开启调式后,连上自己呢?

    我们可以通过开启wifi调试来使Termux中的adb连接到手机本身

    具体步骤:

    • 手机和电脑同一个局域网,且连接USB到电脑
    • 手机开启wifi调试模式
    • 获取wifi调试地址,命令连接:adb connect xxxxx:xxx

      以上是针对android11及以上手机,如果是安卓10以以下的手机:

      • adb tcpip 6666 开启手机调式端口,6666
      • 打开Termux,·adb connect 手机ip:6666· 即可连接
      • 拔掉USB。正常在Termux使用adb调式

        和一般的adb wifi调试没有任何区别

        你突然咦地一声,有这么复杂吗?——我怎么记得Termux中通过pkg install android-tools安装的adb能够直接连接到当前设备进行调试,不需要借助wifi调试?

        没错,termux仓库中的安卓开发工具确实有这个能力,所以,安装它吧,然后替换掉安卓sdk的这个些个工具。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]