Gradle 多渠道打包的使用和错误分析

刚接触到android的开发,对什么都陌生的,本文是自己在项目中使用的技术要点总结,大咖遇到可直接飘过。。。。。

1.Gradle 打包(不废话了直接来脚本),将下列脚本放到build.gradle文件android{}内;

 1     defaultConfig{

 2         //applicationId "" //应用包名

 3         minSdkVersion 9       //sdk最小支持版本

 4         targetSdkVersion 17   //sdk目标版本

 5         versionCode 1

 6         versionName "1.0"

 7 

 8         //dex突破65535限制

 9         multiDexEnabled true

10 

11         // AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}

12         //manifestPlaceholders = [UMENG_CHANNEL_VALUE:""]

13     }

14 

15     //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。

16     lintOptions{

17         abortOnError false

18     }

19 

20     //签名

21     signingConfigs{

22         myConfig{

23             storeFile file("123456") //签名文件路径

24             storePassword "123456"

25             keyAlias "123456"

26             keyPassword "123456"

27         }

28     }

29 

30 

31     buildTypes {

32         release {

33             // 不显示Log

34             buildConfigField "boolean", "LOG_DEBUG", "false"

35             //混淆

36             minifyEnabled true

37             //Zipalign优化

38             zipAlignEnabled true

39             // 移除无用的resource文件

40             shrinkResources true

41             //加载默认混淆配置文件 progudard-android.txt在sdk目录里面,不用管,proguard.cfg是我们自己配<span></span>的混淆文件

42             proguardFiles getDefaultProguardFile('proguard-android.txt')

43             proguardFile 'proguard.cfg'

44             //签名

45             signingConfig signingConfigs.myConfig

46         }

47     }

48 

49     //flavorDimensions "abi"

50 

51     //渠道Flavors,我这里写了一些常用的

52     productFlavors {

53         _360 {

54         }

55         xiaomi {

56         }

57     }

58 

59 

60     productFlavors.all { flavor ->

61         flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

62     }

63 

64 

65     applicationVariants.all { variant ->

66         variant.outputs.each { output ->

67             def outputFile = output.outputFile

68             if (outputFile != null && outputFile.name.endsWith('.apk')) {

69                 

70                 // 输出apk名称为appName_v1.0.apk

71                 def fileName = "${variant.productFlavors[0].name}_v${defaultConfig.versionName}.apk"

72                 output.outputFile = new File(outputFile.parent, fileName)

73             }

74         }

75     }

然后 使用 gradle clean assembleRelease -d(输出debug信息) 一般就会成功打出360和小米的渠道包。

Notes:

1.混淆文件问题

proguard.ParseException: Unknown option '锘?--dump.txt

先查看混淆配置文件的编码和然后最将文件修改为proguard.cfg,并打开查看文件中命令行被识别为止;

2.引用第三方jar问题

Execution failed for task java.io.IOException: Can't write ‘ ’ Can't read

查看引用第三方jar包是否被多次引用(删除被多次引用jar),引用依赖maven的写法

dependencies {
    compile 'com.android.support:support-v4:13.0.0'
}

并且Can't read后面跟着的jar在libs中删除。

(使用Gradle2.2.1 eclipse转android studio项目)

 

你可能感兴趣的:(gradle)