一、在Android studio
 中有两种的方式可以进行打包
(1)第一种方式
build->generate signed apk  
![]()
而后选择要进行打包的项目,next  进行选择签名文件,填写密码 next 
![]()
在下面打包有两种选择,一种是release 一种是debug ,在debug的状态下是不会进行签名和混淆的,
只有选择release的状态下才会进行签名和混淆
![]()
点击finish即可签名打包成功
(2)第二种方式
在build variants 里面将要打包的项目进行选择  debug 或是 release 
![]()
而后在项目的build.gradle文件中进行配置文件位置,密码等
- 
signingConfigs {  
- 
        release {  
- 
            storeFile file("签名文件位置")  
- 
            keyAlias "  "  
- 
            keyPassword " 密码 "  
- 
            storePassword " 密码 "  
- 
        }  
- 
    }  
 
而后直接进行run即可,生成的apk即使进行过签名的apk文件。
生成的apk文件在:android studio工程的存储路径下 app/build/outputs/apk 中
二、在android studio中进行混淆
在eclipse中的是  proguard.cfg 文件 而在android studio中使用的是proguard-rules.pro ,不过直接拿过来用也是可以的
只要在build.gradle里面进行配置下即可,如下是在build.gradle中的配置
- 
buildTypes {  
- 
        debug{  
- 
            minifyEnabled false  
- 
            shrinkResources false  
- 
            signingConfig  signingConfigs.release  
- 
        }  
- 
        release {  
- 
            minifyEnabled true    
- 
            shrinkResources true   
- 
              
- 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
- 
            signingConfig  signingConfigs.release  
- 
        }  
- 
    }  
 
以下是整个的build.gradle的配置文件
- 
apply plugin: 'com.android.application'  
- 
  
- 
android {  
- 
  
- 
    compileSdkVersion 21  
- 
    buildToolsVersion '21.1.2'  
- 
  
- 
    defaultConfig {  
- 
        applicationId "com.**.**"  
- 
        minSdkVersion 8  
- 
        targetSdkVersion 21  
- 
        versionCode 1  
- 
        versionName "1.0"  
- 
    }  
- 
  
- 
    packagingOptions {  
- 
        exclude 'META-INF/DEPENDENCIES'  
- 
        exclude 'META-INF/LICENSE.txt'  
- 
        exclude 'META-INF/license.txt'  
- 
        exclude 'META-INF/NOTICE.txt'  
- 
        exclude 'META-INF/notice.txt'  
- 
        exclude 'META-INF/ASL2.0'  
- 
        exclude 'META-INF/NOTICE'  
- 
        exclude 'META-INF/LICENSE'  
- 
        exclude '!META-INF/MANIFEST.MF'  
- 
        exclude 'META-INF/MANIFEST.MF'  
- 
    }  
- 
  
- 
    sourceSets.main {  
- 
        jniLibs.srcDirs = ['libs']  
- 
    }  
- 
    productFlavors {  
- 
    }  
- 
  
- 
     
- 
 
- 
  
- 
    signingConfigs {  
- 
        release {  
- 
            storeFile file("**")  
- 
            keyAlias "**"  
- 
            keyPassword "**"  
- 
            storePassword "**"  
- 
        }  
- 
    }  
- 
  
- 
    buildTypes {  
- 
        debug{  
- 
            minifyEnabled false  
- 
            shrinkResources false  
- 
            signingConfig  signingConfigs.release  
- 
        }  
- 
        release {  
- 
            minifyEnabled true  
- 
            shrinkResources true  
- 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
- 
            signingConfig  signingConfigs.release  
- 
        }  
- 
    }  
- 
  
- 
}  
- 
  
- 
dependencies {  
- 
    compile fileTree(dir: 'libs', include: ['*.jar'])  
- 
    compile 'com.umeng.analytics:analytics:latest.integration'  
- 
    compile files('libs/httpclient-android-4.3.3.jar')  
- 
    compile files('libs/httpmime-4.3.5.jar')  
- 
    compile files('libs/jpush-sdk-release1.7.3.jar')  
- 
    compile files('libs/mframework.jar')  
- 
    compile files('libs/nineoldandroids-2.4.0.jar')  
- 
    compile files('libs/pinyin4j-2.5.0.jar')  
- 
    compile files('libs/ShareSDK-Core-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-QZone-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-SinaWeibo-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-TencentWeibo-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-Wechat-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-Wechat-Core-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-Wechat-Favorite-2.5.9.jar')  
- 
    compile files('libs/ShareSDK-Wechat-Moments-2.5.9.jar')  
- 
    compile files('libs/umeng-analytics-v5.6.4.jar')  
- 
    compile files('libs/swipemenulistview.jar')  
- 
    compile files('libs/xstream-1.4.7.jar')  
- 
    compile project(':**')  
- 
    compile project(':wheel')  
- 
}  
 
在使用友盟统计的时候,只需要在dependencies中添加
- 
compile 'com.umeng.analytics:analytics:latest.integration'  
 
不需要在lib中添加jar包,要不会有 zip无法打开,或是包重复的错误
以下是混淆文件  proguard-rules.pro 
配置完后,之间像,签名打包进行打包即可
三、多渠道打包
在项目的 androidmanifest.xml 中添加
<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />
而后在项目的build.gradle中添加即可
//多渠道打包
productFlavors {
    LianXiang {}
    Baidu {}
    AnZhi{}
    F360{}
    xiaomi {}
    MeiZu{}
    WanDouJia{}
    QQYingYongBao{}
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}
通过 build->generate signed apk  进行打包,即可得到多个渠道的apk包