zoukankan      html  css  js  c++  java
  • Linux编译安卓代码的基本环境

    Linux服务器编译安卓代码的基本环境

    开发安卓最主要的开发工具就是Android Studio,而AndroidStudio的编译工具就是Gradle,因此Gradle是必不可少的;另外Android开发所依赖的开发工具包也是必不可少的。现在就开始准备这两个东西。

    SDK

    sdk:软件开发工具包(缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

    下载

    cd /opt
    wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
    unzip sdk-tools-linux-3859397.zip
    mkdir sdk
    mv tools/ sdk/

    环境变量

    vim /etc/profile
    export ANDROID_HOME=/opt/sdk
    export PATH=${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}:${PATH}
    source /etc/profile
    sdkmanager --list

    如果报错是因为没有jdk

    Gradle

    关于gradle的选择:

    因为针对不同的项目,所用的gradle的版本是不一样的,而且涉及到在源码配置文件中不同的gradle插件与不同的gradle兼容性不一样,所以稳妥起见先看自己的源代码(别说你不用android studio):

    先找一个在本地可以正常打包的apk源码(要是本地都不成功,那就是代码有问题了,服务器不背锅)

    下载

    cd /opt
    wget https://services.gradle.org/distributions/gradle-4.10.1-all.zip
    unzip gradle-4.10.1-all.zip
    mkdir gradle
    mv gradle-4.10.1 /opt/gradle/

    环境变量

    vim /etc/profile
    export GRADLE_HOME=/opt/gradle/gradle-4.10.1
    export PATH=${GRADLE_HOME}/bin:${PATH}
    source /etc/profile
    gradle -v

    编译andriod项目

    mkdir /opt/code

    下载代码到这个文件

    然后:gradle assembleDebug 然后发现一大堆问题。。。

    第一没有平台platforms;android-28

    sdkmanager "platforms;android-28"

    第二 没有构建工具 build-tools;28.0.3

    sdkmanager "platforms;android-28"

    第三 some licences 这个是一些许可文件

    还记得构建失败的第三个原因嘛,缺少licenses许可。当你下载platforms的时候如果在这里敲了y,就会生成对应的许可,所以一般只要解决了前面两个问题,第三个问题迎刃而解。但是如果有人不想下载,而是通过拷贝的方式将platforms复制到sdk目录下,第三条的问题还会出现。这时候要运行一条命令

    sdkmanager --licenses

    等弹出要输入y 或者n的时候一律敲y 然后回车。这样就能生成所有的许可文件了。

    填坑#1

    还记得下载tools后要保持/opt/sdk/tools这样的目录结构,并且设定ANDROID_HOME要设定为/opt/sdk目录这个坑吗?

    这是因为在执行sdkmanager工具的时候安装的platforms,build-tools等组件和ANDROID_HOME无关,而是直接放在了tools的同一等级目录,但是在用gradle构建的时候却是要去ANDROID_HOME的路径下面找,

    如果ANDROID_HOME指定的是别的路径,或者干脆就指向了tools目录,那明明下载完了组件,但是gradle工具仍旧找不到需要的组件。如果要解决这个问题,还要手动去将组件移动到ANDROID_HOME目录,这样就比较麻烦了。

    glibc升级

    编译的时候报错:

    aapt: /lib64/libc.so.6: version `GLIBC_2.14’ not found (required by aapt)

    从上面报错可以看出,程序运行时候,没有找到“GLIBC_2.14”这个版本库,而默认的Centos6.9 glibc版本最高为2.12, 所以需要更新系统glibc库。

    glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

    很多linux的基本命令,比如cp, rm, ll,ln等,都得依赖于它,如果操作错误或者升级失败会导致系统命令不能使用,严重的造成系统退出后无法重新进入,所以操作时候需要慎重。

    解决办法:

    1.查看系统版本和glibc库版本

    # cat /etc/redhat-release 
    CentOS release 6.9 (Final)
    
    # strings /lib64/libc.so.6 |grep GLIBC_ 
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_PRIVATE

    由上面的信息可以看出系统是CentOS 6.9,最高支持glibc的版本为2.12,而研发程序要2.14版本,所以需要升级。

    2.下载软件并升级:

    wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz 
    wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz 
    tar -xvf  glibc-2.14.tar.gz 
    tar -xvf  glibc-ports-2.14.tar.gz
    mv glibc-ports-2.14 glibc-2.14/ports
    mkdir glibc-2.14/build
    cd glibc-2.14/build 
    ../configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make
    make install

    以上完成不报错的话,查看库文件,发现/lib64/libc.so.6软链接指向了2.14版本

    # ll /lib64/libc.so.6 
    /lib64/libc.so.6 -> /lib64/libc-2.14.so

    3.再次查看glibc支持的版本:

    # strings /lib64/libc.so.6 |grep GLIBC_
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_2.13
    GLIBC_2.14
    GLIBC_PRIVATE

    可以看到glibc支持的版本已经到2.14,再次执行程序就不会报错了。

    gradle常用命令

    gradle clean  清空编译时出现的缓存

    gradle assemble   编译代码,并生成debug版本和正式版本apk

    gradle assembleDebug  编译代码,并生成debug版本apk

    gradle assembleRelease  编译代码,并生成正式版本apk

    编译完成后的包在: app/build/outputs/apk/

  • 相关阅读:
    青蛙学Linux—Nginx配置文件详解
    ICEM二维网格
    ubuntu画面延迟问题解决
    plot over time
    fluent中UDF环境变量问题的三种解决方法
    stiff chemistry模型出现NaN错误
    壁面边界漏给条件引起的发散问题
    mfix添加文件后重新生成configure文件
    DEM反应不收敛问题
    多气体组分DEM流动的DMP并行内存错误
  • 原文地址:https://www.cnblogs.com/lxfpy/p/11077715.html
Copyright © 2011-2022 走看看