一、在Android studio
中有两种的方式可以进行打包
(1)第一种方式
build->generate signed apk
![](https://img-blog.csdn.net/20160314144447971?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
而后选择要进行打包的项目,next 进行选择签名文件,填写密码 next
![](https://img-blog.csdn.net/20160314144632753?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在下面打包有两种选择,一种是release 一种是debug ,在debug的状态下是不会进行签名和混淆的,
只有选择release的状态下才会进行签名和混淆
![](https://img-blog.csdn.net/20160314144812370?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
点击finish即可签名打包成功
(2)第二种方式
在build variants 里面将要打包的项目进行选择 debug 或是 release
![](https://img-blog.csdn.net/20160314145049591?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
而后在项目的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包