Android Studio 之 发布APK

前言:今天一个同事突然向我问到Android Studio 发布APK出现问题该怎么办,我解决了他的问题。然后想到既然如此,干脆就将自己掌握的一些关于发布APK的知识写出来,毕竟好记性不如烂笔头嘛!


一:发布APK的方式

我们用Android Studio 发布APK有两种,一种是单渠道(直接打包),一种是多渠道(同一项目,多个渠道,不同配置)。

二:直接打包流程

1:已有keystore,那么直接 找到 build--> Generate Singed APK...   然后选择你keystore(我的keystore是放在项目下面的keystore文件夹下的,如图),再填上你的密码和别名就可以了

2:没有keystore,新建一个 ,点击Create new .

这里只要输入几个必要项

Key store path(生产key文件的保存路径 )

Key store password(key 存储密码)

Key alias(key别名)

Key password(key密码)

可以输入机构或个人名字


生成好keystore之后的步骤就和上面一样就可以了。

 



三:多渠道打包

众所周知Android Studio 的一大特色就是这个多渠道打包,我最开始放弃eclipse并选择AS就是看重这点儿。废话不多说,要想多渠道打包,那么我们就得先了解一下我们AS的核心gradle。

(1)什么是gradle

gradle是一种依赖管理工具,基于groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域(DSL)特定语言

(2)整个项目的gradle配置文件build.gradle

<span style="font-family:SimSun;">buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}</span>
内容主要包含了两个方面:一个是声明仓库的源,我这里用的是jcenter(),可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优比。另一个是声明了android gradle plugin的版本,android studio 2.0正式版必须要求支持gradle plugin 2.0+的版本。

(3)app文件夹下这个module的gradle配置文件,是整个项目中最重要的build.gradle

<pre name="code" class="java">apply plugin: 'com.android.application'

android {
    //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
    lintOptions {
        abortOnError false
    }
    //签名
    signingConfigs{
        release{
            keyAlias 'ztlkey'
            keyPassword '732310'
            //我这里是把jks放在了我的项目下面的keystore文件夹下,用相对路径
            storeFile file('/keystore/android.jks')
            storePassword '732310'
        }
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.dingwei.testpushapk"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        // dex突破65535的限制
        multiDexEnabled true
    }
    buildTypes {
        release {
            //混淆
            minifyEnabled false
            //Zipalign优化
            zipAlignEnabled true

            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名
            signingConfig signingConfigs.release
        }
        debug{
            signingConfig signingConfigs.release
        }
    }
    //渠道Flavors,配置不同风格的app
    productFlavors {
        yingyongbao {
            applicationId "com.test.push.yingyongbao"
        }
        xiaomi {
            applicationId "com.test.push.xiaomi"
        }
        umeng {}
        baidu {}
        wandoujia {}
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
}

 这个配置文件里面我基本都写了注释的,相信有点基础的读者也能看得懂productFlavors就是我们所谓的多渠道,在里面我们可以尽情的配置我们想要的东西,如果什么都没写,像上面的baidu{}这样,那么系统打包的时候就会用defaultConfig里面的配置。如果配置了一些东西,比如上面的yingyongbao{},那么它会优先用多渠道里面的配置,之后才是defaultConfig的配置。简单点就是productFlavors的优先级高于defaultConfig。 

注意:我们进行多渠道打包的时候,如果每个渠道里面都需要用到不同的logo或者文字或者字体,那么我们该怎么才能做到呢?不要紧,下面为你详细解答。

1:举个简单例子比如 我yingyongbao这个渠道里面appname是“测试应用宝”,baidu这个渠道里面appname是 “测试百度”。这种情况下,我们必须要对appname也进行多渠道的配置(当然图片这些都可以,同理)。操作步骤如下:找到你的项目文件夹-->app-->src 在此文件夹里面两个文件夹一个yingyongbao,一个baidu(记住:此处的文件夹名称一定一定要和你productFlavors下面的名称一样)。因为我们这里只是修改appname,那么我就截了三张图,如下

相信聪明如你通过上面三张图片也知道该怎么去修改了吧。咳咳,我解释一下,我们看到的main这一张就是你项目的默认配置这些,里面包括代码,图片,以及其他的一些资源吧。我们要修改任何东西,就只需要把main复制一下,然后将文件夹名改成与productFlavors下面一样的,并且把我们需要修改的appname值改掉就行。其它的一些图片啊这些都是这么做的。

2.还有一种情况,比如我的多渠道里面都有微信支付的功能。那么问题来了,如果我们什么都不管,直接这样配置出来,打包之后你会发现支付成功之后它不会回调,这是为什么呢,原因很简单,微信支付它的回调默认是 包名.wxapi.WxPayEntryActivity这个类,我们多渠道之后并没有相关的配置,它就会找不到该文件夹。对于这种我们处理起来也很简单,操作如下:打开mainifest文件,将WXPayEntryActivity的声明改成下面这种方式就OK了。

<activity android:name="${applicationId}.wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"/>

(4)多渠道打包

经过以上步骤终于是吧配置搞好了,接下来就是收获成功的时候了。多渠道打包有三种方式,一种 build-->generate signed apk... 和单渠道一样,之后会略有区别 单渠道

多渠道 

选择我们需要的包 然后点击finish就万事大吉了。哈哈哈,弄了这么久,心情有点小激动。



另外两种我就小小提下:

1.用命令打包,找到AS底部栏的Terminal 然后指定到我们项目路径下  输入 gradlew assembleRelease (这是打真实包,打测试包就改为 assembleDebug)



2.用AS右侧的gradle打包,找到AS右侧的gradel,点开找到app-->build 这里面有 assembleDebug(所有的测试包)  assembleRelease(所有的真实包) assembleBaidu(百度真实包) assembleYingyongbao(应用宝真实包).... 想打那个包就找到它双击就可以了,是不是很简单啊! 

这种方式打好的包它的路径就在 项目文件下面 app-->build-->outputs里面


以上就是我所知道的AS发布APK的知识,有写得不好的地方请多包容,有写错的地方请指正出来(本人邮箱:844861961@qq.com),一切为了学习!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值