`
hooray520
  • 浏览: 114163 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android使用gradle批量打包

 
阅读更多
    最近朋友推荐gradle,发现确实是个不错的打包工具,决定用它做项目管理,当然最主要的还是用到它的批量打包功能。
    零散的摸索了4,5天走了不少弯路,主要是gradle自身版本对应不同配置,新版本资料实在太少,走过来能跑通真的是要泪奔了,特记录下,大家少走弯路。
    使用的版本:
引用

    gradle-1.11
    jdk7.0
    eclipse Juno
   


    项目结构:
引用

    -game
    ---module1
    ---module2

   
   
    game下主要有三个文件
    1. local.properties
    sdk.dir=E:\\adt-bundle-windows-x86_64-20130917\\sdk

   
    2. settings.gradle
    include ':module1'
    include ':module2'
    //指定子模块module1和module2的相对路径
    project(':module1').projectDir = new File(settingsDir,    '../module1Path')
    project(':module2').projectDir = new File(settingsDir, '../module2Path')


    3. build.gradle
buildscript 
{
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

apply plugin: 'android'

dependencies {	    
    compile project(':module1')
    compile project(':module2')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"
    
    //签名
    signingConfigs {
      myConfig {
          storeFile file("xxx")      //签名文件
          storePassword "xxxx"    
          keyAlias "xxxx"             
          keyPassword "xxxxx"  //签名密码
      }
    }
  	
    buildTypes{	
    	release {
    	       signingConfig  signingConfigs.myConfig
                
                //代码混淆--集成了Proguard,配置文件proguard.cfg网上有很多参考,我就不贴了
                //注:我把某个jar包混淆了导致程序一直闪退
                //开始以为是so文件加载失败,这个问题找了一天才找到 泪奔...
    		runProguard true
    		proguardFile 'proguard.cfg'		
    	}
    }
		
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']           
       }

        //批量打包--指定配置文件
        //不同的渠道商对应的各自AndroidManifest
        //AndroidManifest的application标签只用配置渠道号的值
        //其他公共配置都放在公共的AndroidManifest.xml中
        selfTest {
	   manifest.srcFile 'product/AndroidManifest_selfTest.xml'
	}
	MMstore {
	   manifest.srcFile 'product/AndroidManifest_MMstore.xml'
	}
        instrumentTest.setRoot('tests')
    }
    
     //批量打包--声明
    productFlavors {
	selfTest {
            //这里可以配置不同的包名
	}
	MMstore {
	}
    }
	    
    lintOptions {
        
    	abortOnError false
        
        // if true, only report errors
        ignoreWarnings true
     }
	
      //加载so文件    
     task copyNativeLibs(type: Copy) {   
	      from fileTree(dir: 'libs', include: '**/*.so' )  into  'build/native-libs'  
     }  
     tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }  
	
     clean.dependsOn 'cleanCopyNativeLibs'  
	
     tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->  
            pkgTask.jniFolders = new HashSet()  
	    pkgTask.jniFolders.add(new File(projectDir, 'build/native-libs'))  
	}  
}


     子Module的build.gradle很简单,我就贴一个出来就好:
   
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }
    
    lintOptions {
    	abortOnError false
        // if true, only report errors
        ignoreWarnings true
     }
}



     打包之前先
引用
gradle check
检查一遍,有问题就在build/link-result.html查看异常详情,里面的信息很详细。
     check没有问题就直接打包,执行命令
引用
gradle clean build
  几分钟后apk包就打好放在build/apk目录下面了
分享到:
评论
1 楼 perzect 2014-09-07  
作者能否更进一步分析下?例如,AndroidManifest中的不同渠道是如何配置的

相关推荐

    android用Eclipse Gradle打包

    本篇将详细讲解如何在Eclipse环境中使用Gradle进行打包操作,特别是批量打包的流程。 首先,我们需要了解Gradle的基本概念。Gradle是一种基于Groovy语言的开源构建自动化工具,它支持多种语言和平台,具有灵活的...

    Android批量打包gradle和python两种方式

    首先,我们来看看使用Gradle进行批量打包。Gradle是Android Studio默认的构建工具,它具有强大的自定义能力,可以方便地进行自动化打包操作。以下是一些关键步骤: 1. **配置build.gradle文件**:在你的app模块的...

    在eclipse上实现gradle批量打包,并加签名、混淆、改图标及应用名称

    在Android开发过程中,...总之,虽然Android Studio已成为首选的开发环境,但在Eclipse中通过Gradle进行批量打包、签名、混淆和修改应用元数据仍然是可行的。了解这些步骤对于维护旧项目或处理多项目场景非常有用。

    AndroidStrudio gradle 多渠道打包 外部依赖

    本主题将深入探讨如何使用Android Studio和Gradle进行多渠道打包以及处理外部库依赖。 **一、多渠道打包** 多渠道打包是Android应用发布时的一个常见需求,它允许我们为不同的市场或推广渠道创建定制的应用版本。...

    android多渠道批量打包工具

    "android多渠道批量打包工具"就是为了解决这个问题而设计的,它利用Python语言实现了自动化打包的功能,大大提高了开发效率。 首先,我们需要理解这个工具的工作原理。在Android应用打包的过程中,通常会在APK文件...

    Android批量打包示例

    在Android开发过程中,批量打包是一项重要的任务,尤其是在应用发布阶段,需要针对不同的分发渠道(如Google Play、第三方应用市场或公司内部分发)生成不同的APK文件。本示例详细介绍了如何进行Android项目的批量...

    android多渠道批量打包工具命令版

    手动处理这些渠道包不仅耗时且容易出错,因此,使用“android多渠道批量打包工具命令版”可以极大地提高效率。这个工具允许开发者通过简单的命令行操作,快速生成不同渠道的APK,无需重复进行繁琐的配置步骤。 首先...

    android shell批量打包

    在Android开发过程中,有时我们需要对应用进行批量打包,特别是在测试、发布或者构建多个版本时,手动逐一打包会非常耗时且容易出错。此时,利用Android Shell命令进行批量打包就显得尤为重要。Android Shell批量...

    android多渠道批量打包源码

    在Android应用开发中,"多渠道批量打包"是一项重要的任务,尤其对于那些需要在不同平台或者与多个分发渠道合作的开发者来说。Android多渠道打包允许开发者为每个渠道创建一个定制的APK,通常是为了在不同的应用市场...

    AndroidStudio--gradle多渠道打包示例

    五、批量打包与自动化 为了提高效率,开发者通常会编写脚本自动化多渠道打包过程。例如,可以使用Gradle的命令行接口,结合shell或Python脚本来遍历所有渠道并执行打包任务。 六、注意事项 1. 渠道标识应保持唯一性...

    Android ANT批量打包教程及所有资源文件

    本文将详细介绍如何使用ANT进行Android应用的批量打包,并涵盖如何替换渠道号,以及所需的所有资源文件。 1. **ANT工具介绍** ANT是一个基于Java的构建工具,它可以读取XML格式的构建文件(build.xml),执行编译...

    android 批量渠道打包工具

    使用批量打包工具时,需要注意以下几点: 1. 配置文件格式:确保渠道信息文件的格式正确,遵循工具的规范,例如,可能需要按照特定的字段分隔符来组织数据。 2. 统计平台设置:根据描述,该工具可以设置任何统计平台...

    Android渠道批量打包,Android反编译

    这里我们将深入探讨“Android渠道批量打包”和“Android反编译”的相关技术,以及如何利用提供的工具来实现这些操作。 一、Android渠道打包 Android渠道打包主要是为了在分发应用时区分不同的推广渠道,以便跟踪每...

    Android Studio打包和gradle配置构建

    - 使用 Gradle 脚本进行批量打包 - 根据不同的渠道配置生成相应的 APK 文件 #### 七、总结 通过以上步骤,我们可以实现 Android 应用的高效打包与构建。不仅能够提高开发效率,还能确保应用的安全性。利用 ...

    android_gradle_script:android批量打包脚本,持续适配最新Android studio版本

    关于gralde的使用总结博客链接: 使用方法: 创建channel.txt,在其中输入渠道号名称以及渠道的数字,规则参考示例文件。需要说明一下的是,product flavor的是通过...打包脚本会在执行的时候会根据从channel.txt中读

    Unity3D For Android 批量构建渠道包 一键打包

    本教程将详细讲解如何在Unity3D中进行Android渠道包的批量构建,以便实现一键打包,提高效率。 一、准备工作 1. Unity3D安装:确保你已经安装了最新版本的Unity3D编辑器,并且该版本支持Android平台的构建。 2. ...

    linux下批量打包apk的例子文件

    在Linux环境下,批量打包APK是一项常见的任务,尤其对于Android开发者和自动化构建流程而言。这个例子文件提供了关于如何在Linux系统上实现这一操作的方法。首先,我们来详细讲解一下涉及的知识点。 1. **APK文件**...

    基于python+apktool的android批量打包工具.zip

    标题中的“基于python+apktool的android批量打包工具”指的是一个使用Python编程语言结合Apktool工具来实现的Android应用程序批量打包解决方案。Apktool是一款开源的Android反编译和打包工具,它允许开发者对APK文件...

    android ant 多渠道批量打包Demo

    "android ant 多渠道批量打包Demo"就是一个解决此类问题的实践案例,它展示了如何通过Apache Ant工具进行自动化构建,以快速生成多个定制化的APK。 Apache Ant是一个Java库和命令行工具,它的任务是驱动构建过程。...

    Gradle多渠道多资源打包完整代码下载

    为了简化多渠道打包流程,可以在Gradle脚本中编写自动化任务,例如动态生成渠道文件,批量修改`build.gradle`以添加新的渠道,或者生成包含所有渠道的APK的ZIP文件。 6. **打包过程** 执行`gradle assemble`命令...

Global site tag (gtag.js) - Google Analytics