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 @ 2024-04-15 16:49  花开富贵。  阅读(4)  评论(0编辑  收藏  举报