命令行下编译打包安卓apk

场景:服务器端根据客户信息生成定制的安卓apk包,比如自定义图标、接口地址、第三方key。

解决步骤:(注:本文主要描述如何配置服务端的命令行打包环境,可以根据自己的后端语言调用命令行来执行打包过程。)

  1. 安装JDK。https://www.oracle.com/java/technologies/javase-downloads.html 下载jdk,配置JAVA_HOME 环境变量
  2. 下载和配置gradle环境变量
  3. 下载 安卓sdk tools,该用具用来自动下载安卓不同版本的sdk, https://androidsdkmanager.azurewebsites.net/tools.html
  4. 使用sdk tools 的工具 ./bin/sdkmamager 来下载编译打包需要的工具:"build-tools;30.0.2" "platform-tools",注意,jdk9和之后的版本不包括javaee的包,所以运行sdkmanager会报错: Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema ,可以通过gradle将依赖下载下来,然后加入sdkmanager这个脚本文件里面的java的classpath。在tools\libs的目录下新建build.gradle文件,内容如下,执行 gradle copyJars任务,会下载依赖并复制到本目录下。下载完毕后在sdkmanager文件的classpath的末尾添加
    %APP_HOME%\lib\jaxb-runtime-2.3.2.jar; 执行./sdkmanager --sdk_root=xxxxxx "build-tools;30.0.2" "platform-tools",其中sdk_root 是要存放安卓sdk的地方,设置ANDROID_HOME指向这个目录
    apply plugin: 'java'
    
    
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
        mavenCentral()
    }
    
    
    dependencies {
        // https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime
        compile group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.2'
    }
    
    
    task copyJars(type: Copy) {
      from configurations.runtime
      into './' // 目标位置
    }
posted @ 2020-10-27 15:52  古德爱迪尔  阅读(418)  评论(0编辑  收藏  举报