关于ZAKER 融媒体解决方案 合作 加入

指示 Android Gradle 脚本删除未对齐的 apks 和清理工件文件

CocoaChina 11-17

几天前我开始使用 Gradle 构建系统 , 并按照我想要的方式工作 , 这里是:

buildscript { repositories { mavenCentral ( ) }}dependencies { classpath 'com.android.tools.build:gradle:0.6.+'}apply plugin: 'com.android.application'android { compileSdkVersion 17 buildToolsVersion '18.0.1' productFlavors { flavor1 { packageName "flavor1" } flavor2 { packageName "flavor2" } flavor3 { packageName "flavor3" } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = [ 'src' ] resources.srcDirs = [ 'src' ] renderscript.srcDirs = [ 'src' ] res.srcDirs = [ 'res' ] assets.srcDirs = [ 'assets' ] } signingConfigs { release { storeFile file ( "test.keystore" ) storePassword "*****" keyAlias "****" keyPassword "*****" } } buildTypes { release { signingConfig signingConfigs.release } } } dependencies { compile fileTree ( dir: 'libs', include: '*.jar' ) }}

正如你可以看到 , 这里只是构建 3 种口味的应用程序 , 并使用相同的键签名 . 我只是运行 gradle assembleRelease,20 秒后 , 我的 apks 在构建文件夹 . 但问题是有其他文件生成 , 我不想要的例如 appname-release-unaligned.apk.

我知道这个文件是需要的 , 在 apk 可以签名之前 , 但是想添加一个任务来删除这些文件在我的毕业生脚本?

另外如果可能的话 , 我想删除在生成期间生成的所有其他 ( shell 我说的文件文件 ) . 本质上 , 我想运行像小孩干净的东西 , 但离开构建的 apk 文件 . 我该如何做?

奖金:如果有人指出如何优化这个脚本 , 并启用 zip align 和 proguard ( 没有自定义规则只是默认混淆是好的 ) , 这也将有助于我 , 因为我是新来的毕业 , 没有一个教程 , 我遵循解释这些脚步 .

最佳答案

相当老的主题 , 但这里是删除不必要的 " 未对齐 " 文件的现代解决方案 . 这是非常方便的 , 特别是在 CI 服务器上节省一些空间 .

这是一个耻辱 , 插件不提供钩子’ zipAlign ’任务 , 所以我们需要钩在’组合’任务后 "zipAlign".

与最后一个毕业插件 1.2.0 ( gradle-2.4 ) 一起工作 , 但应为 1.

// delete unaligned filesandroid.applicationVariants.all { variant -> variant.assemble.doLast { variant.outputs.each { output -> println "aligned " + output.outputFile println "unaligned " + output.packageApplication.outputFile File unaligned = output.packageApplication.outputFile; File aligned = output.outputFile if ( !unaligned.getName ( ) .equalsIgnoreCase ( aligned.getName ( ) ) ) { println "deleting " + unaligned.getName ( ) unaligned.delete ( ) } } }}

另一个 , 如果你喜欢检查 zipAlignEnable 标志 , 但在这种情况下 , 你将被绑定到文件名中的 " 未对齐 " 常量 , 因为发布版本使用 zipAlignEnabled = true 并没有签名配置跳过’ zipAlign ’任务 , 并且只生成一个文件:’ app- 释放 -unsigned.apk".

// delete unaligned filesandroid.applicationVariants.all { variant ->variant.assemble.doLast { variant.outputs.each { output -> println "aligned " + output.outputFile println "unaligned " + output.packageApplication.outputFile File file = output.packageApplication.outputFile; if ( variant.buildType.zipAlignEnabled && file.getName ( ) .contains ( "unaligned" ) ) { println "deleting " + file.getName ( ) file.delete ( ) } } }}

我正在使用第一个 , 万一有人关心 .

以上内容由"CocoaChina"上传发布 查看原文
相关标签 android

觉得文章不错,微信扫描分享好友

扫码分享