Android Studio安卓项目gradle命令行apk打包(详细)
知识扫盲
1、关于build.gradle。 android studio使用Gradle来构建项目,一个安卓as项目中可能存在多个build.gradle,根目录下的我称之为Project下的build.gradle,然后app目录或其他模块下的我称之为Module下的build.grade。如果使用gradle命令进行构建,需要在项目根目录执行相关命令!

2、关于compileSdkVersion与targetVersion。该名词一般出现在项目app或模块目录下的build.gradle配置中。compileSdkVersion仅用于编译时检查代码的错误和警告,不会影响运行时行为,targetSdkVersion指定应用程序的目标 SDK 版本,系统会根据该版本启用相应的功能和特性。另外compileSdkVersion>=targetSdkVersion,也就是说实际编译打包时使用compileSdkVersion对应的sdk版本进行打包。
2.1、拿到安卓项目时可以优先查看compileSdkVersion,然后看看自己android studio有没有安装对应版本的SDK,一般在点击Gradle提示的Sync Now后会自动安装。

2.2、项目根目录下build.gradle中repositories仓库加速,替换为国内源注意url格式。
参考一:
maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}
maven { url "http://maven.aliyun.com/nexus/content/repositories/jcenter"}
maven { url "http://maven.aliyun.com/nexus/content/repositories/google"}
maven { url "http://maven.aliyun.com/nexus/content/repositories/gradle-plugin"}
参考二:
// google()
// jcenter()
maven { url "https://www.jitpack.io"}
maven { url "https://maven.aliyun.com/repository/releases"}
maven { url "https://maven.aliyun.com/repository/google"}
maven { url "https://maven.aliyun.com/repository/central"}
maven { url "https://maven.aliyun.com/repository/gradle-plugin"}
maven { url "https://maven.aliyun.com/repository/public"}

3、gradle版本。不同安卓项目构建用的gradle版本可能不同,一般as会自动下载,也可在gradle-wrapper.properties文件中查看,如果因网络问题下载失败,可以使用国内地址https://mirrors.cloud.tencent.com。如果使用命令行打包网上的教程都是让把gradle对应的目录添加系统环境变量,其实如果项目比较多且gradle版本不同的话实操起来还是很局限的,我的做法是直接复制对应版本的gradle可执行文件路径, 再到项目根目录执行构建命令(见下图)。

3.1、gradlew打包,如果项目根目录有gradlew也可以尝试用其打包。无论是gradle还是gradlew打包,都需要依靠安卓sdk platforms及build-tools等协同才能完成打包任务。

4、jdk版本、安卓sdk platforms版本、Build-Tools版本(想要实现打包构建apk,这3个概念和前面的gradle是必须要了解的)。
4.1、jdk是java环境使用的一般是1.8.0(对应环境变量JAVA_HOME,理论上gradle打包时可以在gradle.properties文件中手动指定jdk路径org.gradle.java.home=C:Program FilesJavajdk1.8.0_131),也有用java 11的,建议必须要确保安装好对应的jdk版本(一般安装时勾选下设置环境变量就可以了)。

4.2、安卓平台SDK platforms版本、Build-Tools、ndk 其实都是【Android SDK】的组件!可以将Andriod SDK理解成开发组件管理器,它下面可以管理很多不同版本的组件。SDK platforms版本跟compileSdkVersion是有关系的如果build.gradle里面配置compileSdkVersion 28,那么就需要SDK platforms有安卓 28这个版本(Android 9.0 Pie对应28)。现在新版as在构建时会根据platforms版本自动选择对应的Build-Tools版本而不需要手动配置(一般原则是platforms 数字版本 近似等于 build-tools 数字版本,例如:platforms的android-28 对应 build-tools 28.0.3),ndk版本大部分安卓开发使用不到,如果你的项目使用了第三方已编译好的so文件只是直接调用的话也是不需要ndk的。
4.2.1、另外【Android SDK】也有命令行版本,直接下载该命令行版本后,然后通过skd-tools/ bin文件里面的命令指令程序sdkmanager下载管理不同版本的platforms、build-tools,也就是说不需要下载android studio也可实现应用的打包编译(正确的gradle版本+ 下载的platforms版本 + 下载的build-tools),这种一般用于jenkins等打包环境,在开发自己电脑上打包测试通过后,整理出对应gradle、platforms、build-tools版本后直接在jenkins电脑上同步安装对应版本!
下图为android studio中 【Android SDK】管理platforms及build-tools版本,可以自己安装/卸载不同版本(截图仅作示范,请结合实际安装相应版本)


安卓apk打包
as可视化打包。需要生成签名文件然后再打包,这里假设项目已经有签名文件了,那么可以通过as直接可视化打包(Build-Generate Signed Bundle / APK;打包后在项目app目录下的release/debug目录下),也可以使用gradle/gradlew命令行打包(打包后在项目app目录build outputs apk)。

gradle命令行打包。签名需要手动配置,可以参考网上的写法。注意app模块下的build.gradle里面buildType配置项里面的release项需要添加应用签名选择。打包命令核心就是gradle clean、gradle assembleRelease,只是注意下前面的gradle如果没有配置系统变量或版本不对会打包失败,可以将其换成对应版本的完整路径来执行命令!且需要切换命令的执行目录为项目根目录。


命令行构建是建议先clean一下然后再构建。

参考文档:
使用gradle编译安卓APK包gradlew打包-> https://blog.csdn.net/chuyouyinghe/article/details/134468339
Android Studio 国内镜像与 SDK 下载速度优化 https://blog.csdn.net/i826056899/article/details/147381555
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/android-studio-gradle-build-apk/
赞赏
微信赞赏
支付宝赞赏
发表评论