Android编译环境搭建

总体流程:将对应操作系统和所需版本下载后解压缩,放到指定目录,然后配置环境变量,最后检查环境配置情况。

一、下载需要的环境后放入指定目录
下载链接:https://www.androiddevtools.cn/#google_vignette

1.AndroidSDK
1)在系统变量中新建ANDROID_HOME,变量值为SDK的路径

2)找到系统变量中的PATH,点击编辑,新建:%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools

3)打开cmd,输入adb出现下图即配置完成:

2.flutter

注意:
1)存放文件夹不要有特殊字符,例如:空格等
2)存放文件夹不要有管理员权限才能执行,例如:C:\Program Files (x86)这种

示例图:

3.gradle

示例图:

二、配置环境变量

三、检查环境变量 确认好版本情况

环境检查
同意Android协议
通过指令flutter doctor --android-licenses授权同意Android协议,一直选Y即可。
验证Flutter环境
控制台输入flutter doctor来验证环境是否合格,如果碰到验证不通过的项,根据提示逐一解决即可。

四、通过命令行编译和打包APK

APK文件结构,APK(Android Package),可以看做是一个zip压缩包,可以将.apk改为.zip解压,其文件结构如下:

  • assert:存放的原生资源文件,通过AssetManager类访问
  • lib:native库文件
  • META-INF:存放签名信息,用来保证APK包的完整性和系统的安全。系统安装APK时,应用管理器会按照对应算法对包里文件做校验,如果校验结果与META-INF中内容不一致,则不会安装这个APK。
  • CERT.SF:生成每个文件相对的密钥
  • MANIFEST.MF:数字签名信息
  • res:种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可
  • AndroidManifest.xml:每个应用都必须定义和包含,描述应用的名字、版本权限、引用的库文件等信息。apk中的AndroidManifest.xml经过压缩,可以通过AXMLPrinter2工具解开。
  • classes.dex:是JAVA源码编译后生成的JAVA字节码文件。但Android使用的dalvik虚拟机与标准的JAVA虚拟机不兼容,dex文件与class文件相比,不论是文件结构还是opcode都不一样。
  • resources.arsc:编译后的二进制资源文件。 apk 创建好之后,还不能直接使用。需要使用工具 jarsigner 对其进行签名,因为 Android 系统不会安装没有进行签名的程序。签名之后会生成 META_INF 文件夹,此文件夹中保存着跟签名相关的各个文件。
  • PackageManagerService(PMS) 在安装过程中会检查 apk 中的签名证书的合法性。
    常理来说,签名之后的 apk 应该是可以正常安装使用了,但是实际打包过程还会多一步使用工具 zipalign 对 apk 优化操作。

zipalign:是一种 zip 归档文件对齐工具。它对 apk 中的未压缩资源(图片、视频等)进行对齐操作,相对于文件开头都是对齐的。这样一来,你便可直接通过 mmap(2) 访问这些文件,而无需在 RAM 中复制相关数据并减少了应用的内存用量。

在将 APK 文件分发给最终用户之前,应该先使用 zipalign 进行优化。如果你使用 Android Studio 进行构建,则此步骤会自动完成。mmap(2):mmap, munmap - 将文件或设备映射或取消映射到内存中。

至此一个完整的 apk 安装包就创建成功!

整个编译打包流程可以用下图来描述:

五、编译命令(Window系统)

./gradlew build 检查依赖并且编译打包
./gradlew assembleDebug/assembleRelease 编译并打出Debug包 /Release包
./gradlew installDebug 编译出Debug包并且安装
./gradlew installRelease 编译出Release包并且安装
./gradlew assembleDebug/assembleRelease --info 编译包并且打印日志
./gradlew assembleDebug/assembleRelease --scan 编译并且输出更详细的报告
./gradlew clean 清除构建目录下的文件
./gradlew unsinstall <packageName> 卸载安装
./gradlew uninstallDebug / uninstallRelease 卸载安装包
// task相关
./gradlew --tasks 查看主要Task
./gradlew tasks --all 查看所有Task
./gradlew <taskName> or ./gradlew :<moduleName>:<taskName> 执行Task
// 查看依赖
./gradlew dependencies 查看项目根目录下的依赖
./gradlew :app:dependencies 查看app模块下的依赖
./gradlew :app:dependencies > dependencies.txt 查看依赖输出到文件
//性能相关
./gradlew assembleDebug --offline 离线编译
./gradlew assembleDebug --build-cache 可开启缓存
./gradlew assembleDebug --no-build-cache 不开启
./gradlew assembleDebug --configuration-cache 配置缓存开启
./gradlew assembleDebug --no-configuration-cache 不开启
./gradlew assembleDebug --parallel 并行构建开启
./gradlew assembleDebug --no-parallel 不开启 `

六、查看详细信息
flutter build apk --release -vv

posted @   我很喜欢我自己  阅读(287)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
点击右上角即可分享
微信分享提示