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包

0

您可能也喜欢:

时间: 2024-12-11 18:29:56

Android studio 使用心得(四)—android studio 多渠道打包(二)的相关文章

Android studio 使用心得(十)---android studio 多渠道打包(三)

关于使用android studio 如何打包  大家可以看这两篇文章 Android studio 使用心得(四)---android studio 多渠道打包 Android studio 使用心得(四)---android studio 多渠道打包(二) 真正的项目开发,当然是建议 Android studio 使用心得(四)---android studio 多渠道打包(二) 其实,android studio 对上面这种打包方式还有更简单的方法,就是使用as 里面自带的Terminal

Android studio 使用心得(一)—android studio快速掌握快捷键

大家都是从eclipse转过来了,所以早就熟悉了eclipse那一套快捷键. File—>settings—>keymap–>选择eclipse就搞定 话是这么说,但是自动化提示的变了  Ctrl+Alt+Space.熟悉了alt+/后很不适应,我们可以修改 1,  搜索Class Name Completion 就找到了. 2,添加快捷键 3.输入alt+/ 要一起按下两个键.点击ok搞定 想修改其它的类似了. 还有一个小技巧,就是自动导包的设置,因为现在已经变成了 alt+enter

Android studio 使用心得(六)—android studio 如何加载.so文件

之前一直没怎么注意,以为.so文件android为像eclipse一样直接加载,但是直到昨天我在android studio上调试公司项目推送消息的时候,才发现,.so文件原来没有加载成功. 可能之前  Android studio 使用心得(三)—从Eclipse迁移到Android这篇文章我是用Demo4来做例子,里面并没有引用.so文件,所以大家按照这篇文章去迁移项目的时候,会遇到问题.昨天我网上找了一下关于android studio gradle 加载.so文件的文章,发现大多还停留在

Android自己主动化构建之Ant多渠道打包实践(下)

前言 上一篇(Android自己主动化构建之Ant多渠道打包实践(上))已经介绍了Android的apk是怎样构建的,本篇博客继续Ant打包的实践过程. 集成友盟统计SDK 这里以友盟统计为例,对各个渠道进行统计.我们须要先集成它的SDK 配置权限 <!-- 权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission&g

android Studio 使用gradle 参数解释及多渠道打包

Gradle 基本语法 build.gradle  buildscript { //设置脚本的运行环境 repositories {//支持java 依赖库管理(maven),用于项目的依赖 mavenCentral() } dependencies {//依赖包的定义.支持maven/ivy,远程,本地库,也支持单文件,如果前面定义了repositories{}maven 库,使用maven的依赖 //的时候只需要按照用类似于com.android.tools.build:gradle:2.1

gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

近期一直在做android自己主动打包,之前已经完毕了用纯命令行的形式打包.原生态ant脚本打包.和基于android的SDK的打包.而且实现了多渠道打包,后来同事推荐了gradle,网上的资料说gradle各种好,自己也感兴趣是实现一下.事实上一般来说因为android对eclipse的支持减弱,大部分的人都是用gradle与android studio融合,这样面的样例也会比較多,但笔者所在的项目还是在eclipse的比較多.因为开发者在移植过程中发现报错比較多所以一直没有全然移植(好吧,事

Android笔记(六十四) android中的动画——补间动画(tweened animation)

补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐. 补间动画由一下四种方式: 1.AplhaAnimation——透明度动画效果 2.ScaleAnimation ——缩放动画效果 3.TranslateAnimation——位移动画效果 4.RotateAnimation——旋转动画效果 1.AplhaAnimation AplhaAnimation的参数: fromAlpha:动画开始时的透明度,0.0表示完全透明 toAlpha:动画结束时的透明度,1.0表示完全不透

Android之旅十四 android中的xml文件解析

在我们做有关android项目的时候,肯定会涉及到对xml文件的解析操作.以下给大家介绍一下xml文件的解析.包括DOM.SAX.Pull以及曾经我们用到的DOM4J和JDOM: 要解析的XML文件:person.xml <? xml version="1.0" encoding="UTF-8"? > <persons> <person id="001"> <name>zhangsan</na

Android studio 使用心得(五)—代码混淆和破解apk

这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg文件还是.txt文件都一样. 先给大家贴一个混淆模板吧.注释很清楚.是我目前一个项目用的proguard.cfg配置文件 ? 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