AndroidStudio使用心得-打包发布
来源:互联网 发布:专业淘宝差评师 编辑:程序博客网 时间:2024/06/06 04:57
转: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查看)
至此,全系列就结束了,欢迎大家拍砖
- AndroidStudio使用心得-打包发布
- AndroidStudio使用心得-打包发布
- AndroidStudio多渠道打包心得
- AndroidStudio 1.3使用心得
- AndroidStudio 使用心得
- AndroidStudio多渠道打包使用
- AndroidStudio使用心得-引入so
- 关于androidStudio使用多渠道打包
- 使用AndroidStudio实现多渠道打包
- 使用py2exe打包发布
- AndroidStudio使用心得-引入第三方library
- 使用AndroidStudio打包的那些事
- AndroidStudio下使用友盟多渠道打包
- AndroidStudio使用gradle打包并实现多渠道打包
- 使用maven打包发布源码
- 使用maven打包发布源码
- vs2010 程序发布打包新手教程(个人心得)
- Installshield2008使用心得(打包web工程)
- 养生习惯
- (!)Python 各种测试框架简介
- C# Stream 和 byte[] 之间的转换,字符串可以转换成byte[]
- Binary Tree Preorder Traversal
- 白话设计模式之--模板方法
- AndroidStudio使用心得-打包发布
- UITableview 的自适应高度
- ndoutils(ndo2db)安装难点
- 有关时间
- 17-集合框架-22-常用对象API(集合框架-TreeSet集合)
- android应用程序如何调用支付宝接口
- 如何学习大数据技术?
- ad safe3.5.4.721汇编日志和笔记:
- html传参数给js