gradlew 工程编译

本文介绍如何配置Android开发环境变量,解决编译过程中的常见问题,如build-tools版本不匹配、aapt执行错误等,并提供了解决Gradle下载速度慢的方法。


export JAVA_HOME=/home/charlie/tool/jdk1.8.0_112
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH={JAVA_HOME}/bin:$PATH


export ANDROID_NDK=/home/charlie/android/tool/android-ndk-r10e
export ANDROID_SDK=/home/charlie/android/tool/android-sdk-linux
export ANDROID_HOME=/home/charlie/android/tool/android-sdk-linux
export ANDROID_ABI=armeabi-v7a
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
#export ANDROID_DAILY_OVERRIDE=9a39dc0b7088a86c85246dde6d7be75847a8030d


./gradlew installDebug


编译过程中,可能遇到以下问题:
1. build-tools 24.0.1 未找到。
解决方案:android-sdk-linux/tools/android 进行build-tools 24.0.1版本的安装


2.aapt 执行时程序运行错误
问题:
android-sdk-linux/build-tools/24.0.1$ ./aapt
-bash: ./aapt: cannot execute binary file: Exec format error
原因:build-tools 24.0.1版本开始,不支持32位操作系统
解决方案:修改build.gradle 文件中的sdk版本,以下的sdk版本号改为23
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"


    defaultConfig {
        applicationId "com.wuwang.mplayer"
        minSdkVersion 9
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }


解决gradle 下载慢问题:

1.下载最新版本的gradle(gradle-3.3-bin.zip),放到/opt/nginx/html/gradle 目录
2. 启动nginx :  /opt/nginx/sbin$ ./nginx 
3. 修改gradle-wrapper.properties 中的gradle下载路径
vi gradle/wrapper/gradle-wrapper.properties 


#distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-bin.zip
distributionUrl=http\://192.168.91.143/gradle/gradle-3.3-bin.zip

<think>好的,用户问的是Android应用工程大,如何快速编译。首先,我需要理解用户的问题。用户可能遇到了大型Android项目编译时间过长的问题,想要优化编译速度。接下来,我得回忆一下常见的优化方法,并结合自己的经验整理出有效的策略。 首先,模块化项目结构。用户可能没有将项目拆分成多个模块,导致每次编译整个工程。模块化后,可以仅编译修改的模块,减少编译范围。但需要确认用户是否了解模块化,可能需要简单解释一下。 然后是Gradle配置优化。Gradle的版本选择很重要,新版本通常有性能提升。用户可能还在用旧版本,建议升级。另外,Gradle守护进程和并行编译是默认开启的,但用户可能关闭了,需要检查。配置文件中设置org.gradle.daemon=true和org.gradle.parallel=true。 接着是依赖管理。避免使用动态版本号,比如+号,这会导致每次检查更新,增加时间。推荐固定版本号。另外,依赖库是否重复或冲突,也可能拖慢编译,需要检查。 增量编译和缓存机制。开启KAPT的增量编译,对Kotlin项目有效。Gradle的构建缓存和配置缓存可以复用之前的编译结果,需要确保开启。可能需要指导用户在gradle.properties中添加相关配置。 然后是代码和资源优化。资源文件过多或未过滤无用资源会增加编译时间。启用shrinkResources和minifyEnabled可以缩减资源。但用户可能担心混淆的影响,需要说明在release版中使用,日常调试可能不需要。 使用第三方工具方面,比如Facebook的Buck或Google的Bazel,但迁移成本高,可能适合大型团队。另外,Gradle的企业版有性能优化功能,但需要付费,用户可能不太愿意,不过可以提一下。 硬件和环境方面,SSD比HDD快很多,内存和CPU也很重要。用户可能硬件配置不够,升级硬件能直接提升速度。同时,关闭不必要的后台程序释放资源。 持续集成中的预编译库,比如将模块打包成aar,供主工程引用,减少重复编译。这对团队协作可能有帮助,但需要一定的配置。 最后,分析构建报告,使用--profile选项生成报告,找出瓶颈。用户可能不知道这个功能,需要详细说明步骤。 需要检查是否有遗漏的点,比如Instant Run已经被弃用,现在用Apply Changes替代,但可能不稳定。还有配置offline work避免网络检查。另外,避免在构建过程中执行不必要的任务,比如Lint检查,可以临时关闭。 可能用户是开发者,有一定经验,但需要系统性的优化方案。需要分点列出,结构清晰,便于用户逐步实施。同时要提醒不同项目情况不同,可能需要针对性调整。确保建议的可行性和安全性,比如升级Gradle版本可能引入兼容性问题,建议备份或逐步进行。</think>以下是为优化Android大型工程编译速度的15个系统性解决方案,按实施优先级排序: 1. **Gradle配置优化** (立即生效) - 升级至最新Gradle和Android Gradle Plugin版本 ```gradle // gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip ``` - 启用并行编译与守护进程 ```gradle // gradle.properties org.gradle.parallel=true org.gradle.daemon=true org.gradle.caching=true org.gradle.configureondemand=true ``` 2. **模块化架构改造** (中期优化) - 按功能拆分动态模块(至少达到10+模块) - 配置按需编译: ```gradle // settings.gradle enableFeaturePreview('VERSION_CATALOGS') enableFeaturePreview('TYPESAFE_PROJECT_ACCESSORS') ``` 3. **依赖管理强化** - 统一版本管理: ```gradle // libs.versions.toml [versions] kotlin = "1.9.0" hilt = "2.48.1" [libraries] hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } ``` 4. **构建缓存配置** ```gradle // gradle.properties org.gradle.caching=true android.enableBuildCache=true android.buildCacheDir=path/to/custom-cache ``` 5. **增量编译优化** - KAPT配置: ```gradle kapt { useBuildCache = true javacOptions { option("-Xmaxerrs", 500) } } ``` 6. **资源优化策略** ```gradle android { buildTypes { debug { crunchPngs false // 禁用PNG压缩 shrinkResources false minifyEnabled false } } } ``` 7. **构建分析工具** - 生成构建报告: ```bash ./gradlew assembleDebug --profile --scan ``` - 使用Gradle Build Analyzer插件 8. **CI/CD优化** - 预编译共享依赖: ```bash ./gradlew :base:library:assembleRelease ``` - 分布式缓存方案: ```gradle buildCache { remote(HttpBuildCache) { url = "https://cache.example.com/" } } ``` 9. **实验性特性启用** ```gradle // gradle.properties android.experimental.enableSourceSetPathsMap=true android.experimental.cacheCompileLibResources=true ``` 10. **第三方工具集成** - 使用非官方构建系统对比测试: ```bash buck build //android/app:debug ``` 11. **多仓库管理** - 实施二进制仓库代理: ```gradle dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { maven { url "https://maven.aliyun.com/repository/public" } } } ``` 12. **编译参数调优** ```bash # 设置JVM堆大小 export GRADLE_OPTS="-Xmx8g -XX:MaxMetaspaceSize=2g" ``` 13. **代码结构优化** - 控制Java/Kotlin源文件数量(单模块建议<1000) - 采用AAB分包策略: ```gradle android { bundle { language { enableSplit = true } } } ``` 14. **硬件加速方案** - 配置编译服务器: ```bash # 启用Gradle守护进程 ./gradlew --stop && ./gradlew --no-daemon ``` 15. **混合编译策略** - 实现增量热部署: ```bash ./gradlew deployDebug --continuous ``` **实施建议**: 1. 优先执行Gradle配置优化(1-4项),预计可提升30%-50%速度 2. 中期进行架构改造(第2项),目标达到70%模块隔离度 3. 长期优化结合CI/CD改造(第8项),建立可持续优化体系 **验证指标**: - 完整构建时间缩短至<3分钟 - 增量构建时间<30秒 - 缓存命中率>85% 每个优化步骤建议通过`--profile`参数生成构建报告验证效果,持续监控关键指标如Task执行时间、缓存命中率等。建议使用Gradle Enterprise进行长期性能追踪。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值