AndroidStudio使用心得-打包发布

转:http://m.blog.csdn.net/blog/r17171709/40860389

到了最重要的环节了,这也是gradle真正出场的环节。作为自动化构建工具,他有什么好处,与maven、ant之间有什么联系区别什么的,这里我们就不讨论了。

我一般在AndroidStudio里面在terminal中进行命令输入。无论你选择在cmd里面去输入还是在AndroidStudio里面输入,都请先安装gradle,可能要翻墙,大家自己寻找翻墙软件

装好gradle,需要在环境变量path下面配置一下路径,配置完之后请重启电脑(这边我就纳闷了,java跟android配置Path时候都不需要重启,gradle为什么不重启就不行呢)


重启之后回来,在cmd里面验证一下是否配置成功,输入gradle -v,如果有相应版本信息,证明ok


这时候启动AndroidStudio,在设置中进行如下设置


这时候,就可以在terminal里面玩了,同样也先验证下正确性,同样输入gradle -v

如果结果跟之前一致,那么就OK了


好了,我们下面正式开始打包工作

先在build.gradle里面加上这句话,否则在build的时候会出现lint检查错误,注意,需将所有module都加上这句话,我这里面2个module都要加上

lintOptions {
        abortOnError false
    }

然后,在terminal 里面输入gradle clean,这个命令可以把之前打包所产生的所有文件全部清除

success之后,输入gradle build

build过程中出现fail什么的,原因也是比较明显的,经过相应google,还是可以比较容易解决的

举个例子,刚才我漏加一个module的lint错误忽略,就会报错了



说的还是很清楚的,在library模块里面lint发现错误了。

同样经过一会之后,build也显示success了,这时候我们进入项目目录里面去看看/AndroidStudioDemo/app/build/outputs/apk,这里面有三个文件,都是没有签名的测试版与正式版


现在我们要发布正式版了,要加上签名,怎么搞呢

先把我们的key放到app目录下,不然加配置文件时候会找不到key,


添加相应的配置文件,signingConfigs节点这是在把我们key相关信息描述出来,然后buildTypes里面进行引用

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"
    defaultConfig {
        applicationId "com.renyu.androidstudiodemo"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    signingConfigs {
        myConfig{
            storeFile file("android.keystore")
            storePassword "abcd1234"
            keyAlias "android.keystore"
            keyPassword "abcd1234"
        }
    }
    buildTypes {
        release {
            signingConfig  signingConfigs.myConfig
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:21.0.0'
    compile files('libs/pinyin4j-2.5.0.jar')
    compile project(':library')
}

这时候,再次gradle clean与gradle build,我们得到的包就跟之前有所区别了


多了一个app-release.apk,这个就是带签名的正式版。

一般情况下,我们还会发布到各个应用市场,这时候我们怎么分渠道打包呢,其实也很简单,虽然我找了很多说明,但是都不适合,最后自己瞎搞了一套

1.在任意目录下创建你要生成的每个渠道包的manifest,我这边创建百度跟豌豆荚的

我放出其中一个渠道包manifest作为示例分析

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.renyu.androidstudiodemo.bd" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="channel_third"
            android:value="bd" />
        <activity
            android:name="com.renyu.androidstudiodemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
注意这边有2个注意点,渠道包们package不能相同,不然报错,我们这边就随便搞个名称,反正最后打包的时候都会改掉;还有一个就是渠道名称meta-data,主包的meta-data会被拷贝到这个子渠道包里面去,所以key值不能相同

下面再把主manifest贴出来对比下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.renyu.androidstudiodemo" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="channel"
            android:value="channelvalue" />
        <activity
            android:name="com.renyu.androidstudiodemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

最后上配置文件,继续build.gradle

sourceSets {
        main {
            manifest.srcFile 'src/main/AndroidManifest.xml'
        }
        bd {
            manifest.srcFile 'src/main/channel/AndroidManifest_bd.xml'
        }
        wdj {
            manifest.srcFile 'src/main/channel/AndroidManifest_wdj.xml'
        }
    }
    productFlavors {
        bd {
            packageName='com.renyu.androidstudiodemo.bd'
        }
        wdj {
            packageName='com.renyu.androidstudiodemo.wdj'
        }
    }
sourceSets就是配置刚才我们自定义的那2个manifest文件,对应productFlavors文件里面的包名,然后gradle clean 和gradle build

这时候就生成了2组共8个包


我们来检验下,表面上看上去是ok的,我们打开豌豆荚包的manifest,注意包名跟渠道参数, 均符合预期(这边注意,打出来的包在apkTool里面无法正常反编译,请使用RootExplorer进入/data/app目录下找到相应app,进入manifest查看)


至此,全系列就结束了,欢迎大家拍砖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值