Android studio 使用心得(四)—android studio 多渠道打包(二)


Android studio 使用心得(四)—android studio 多渠道打包
 这篇文章讲了一种打包方式。是直接在android studio 里面可视化操作,结合配置文件。我个人觉得严格上来讲是不完全正确的操作,因为配置文件里面的签名文件根本没有用到。但是,打出来的包绝对没问题的。这篇主要是介绍直接在dos命令里面使用gradle命令打包。两行命令,简单gradle clean ,gradle build。

   1,配置文件还是和之前的一样,我才贴一次代码

    

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
apply plugin:  'com.android.application'
 
dependencies {
//    <span></span>compile fileTree(dir: 'libs', include: '*.jar')
     compile project( ':appcompat_v7_8' )
}
buildscript {
     repositories {
         mavenCentral()
     }
     dependencies {
         classpath  'com.android.tools.build:gradle:1.0.0'
 
     }
}
android {
     compileSdkVersion  19
     buildToolsVersion  "21.0.2"
 
     sourceSets {
         main {
             manifest.srcFile  'AndroidManifest.xml'
             java.srcDirs = [ 'src' ]
             resources.srcDirs = [ 'src' ]
             aidl.srcDirs = [ 'src' ]
             renderscript.srcDirs = [ 'src' ]
             res.srcDirs = [ 'res' ]
             assets.srcDirs = [ 'assets' ]
         }
 
         // Move the tests to tests/java, tests/res, etc...
         instrumentTest.setRoot( 'tests' )
 
         // Move the build types to build-types/<type>
         // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
         // This moves them out of them default location under src/<type>/... which would
         // conflict with src/ being used by the main source set.
         // Adding new build types or product flavors should be accompanied
         // by a similar customization.
         debug.setRoot( 'build-types/debug' )
         release.setRoot( 'build-types/release' )
     }
 
     defaultConfig {
         applicationId  "com.example.demo4"
         minSdkVersion  8
         targetSdkVersion  19
         versionCode  1
         versionName  "1.0"
 
         // dex突破65535的限制
         multiDexEnabled true
         // AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}
         manifestPlaceholders = [UMENG_CHANNEL_VALUE:  "channel_name" ]
     }
     //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
     lintOptions {
         abortOnError false
     }
 
     //签名
     signingConfigs {
         debug {
             storeFile file( "C:/Users/xxx/.android/debug.keystore" )
         }
         relealse {
             //这样写就得把demo.jk文件放在项目目录
             storeFile file( "demo.jks" )
             storePassword  "demo123456"
             keyAlias  "demo_4"
             keyPassword  "demo123456"
         }
     }
     buildTypes {
         debug {
             // 显示Log
             buildConfigField  "boolean" "LOG_DEBUG" "true"
 
             versionNameSuffix  "-debug"
             minifyEnabled false
             zipAlignEnabled false
             shrinkResources false
             signingConfig signingConfigs.debug
         }
 
         release {
             // 不显示Log
             buildConfigField  "boolean" "LOG_DEBUG" "false"
 
             //混淆
             minifyEnabled true
 
             //Zipalign优化
             zipAlignEnabled true
 
             // 移除无用的resource文件
             shrinkResources true
             //加载默认混淆配置文件
             proguardFiles getDefaultProguardFile( 'proguard-android.txt' ), 'proguard.cfg'
             //签名
             signingConfig signingConfigs.relealse
         }
     }
     //渠道Flavors,我这里写了一些常用的
     productFlavors {
         GooglePlay {}
         xiaomi {}
         umeng {}
     }
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_7
         targetCompatibility JavaVersion.VERSION_1_7
     }
 
 
 
     productFlavors.all { flavor ->
         flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
     }
     applicationVariants.all { variant ->
         variant.outputs. each  { output ->
             def  outputFile = output.outputFile
             if  (outputFile !=  null  && outputFile.name.endsWith( '.apk' )) {
                 def  fileName = outputFile.name.replace( ".apk" "-${defaultConfig.versionName}.apk" )
                 output.outputFile =  new  File(outputFile.parent, fileName)
             }
         }
     }
}

 

2.我们直接在dos命令定位到Demo4的项目目录(如果你用的是win7,可以直接先进入到项目目录,然后在空白处,先按住shift,再点右键选择”在此处打开命令窗口”)

 

 

a,输入命令 :gradle clean

b,输入命令:gradle build 然后等待。时间会比较长

直到build successfule.细心的朋友应该会发现项目目录多了一个build文件夹。

我们打包好的apk就在里面。

 

大家会发现里面 debug版本,release版本都有,所以速度慢。我们一般只需要正式签名版本,所以我们在gradleclean后可以这样

输入命令:gradle assembleRelease    // 这是编译并打Release的包

然后会发现时间比前面要快,而且apk文件里面只有release版本的了。

另外我们如果只想要debug版本,输入命令gradle assembleDebug    //这是编译并打Debug包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值