普通视图

发现新文章,点击刷新页面。
昨天以前首页

一个上传apk到fir的gradle插件

2015年8月1日 23:19

声明,这不是广告,没有任何利益瓜葛。

App内测需要把安装把安装包放在一个地方进行托管,方便内测人员下载。国内有蒲公英,fir,等等这些网站可以用。

最近fir上了新版本了,上了新的api,新界面,本以为它们会提供gradle的上传工具,结果没有,而且它们新版本还不好用,原本的下载统计浏览统计都没有了,结果上传很慢,甚至上传不了,我便写了一个gradle的上传工具。

先介绍使用方法吧

使用方法

插件目前只有唯一一个task

uploadFir –上传apk到fir

集成插件本插件,你要按照如下方法使用

编辑build.gradle

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
buildscript {
 repositories {
 jcenter()
 }

 dependencies {
 classpath 'com.squareup.okhttp:okhttp:2.2.0'
 classpath 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
 classpath 'org.json:json:20090211'
 classpath 'me.isming:firup:0.4.1'
 }
}

apply plugin: 'me.isming.fir'

fir {
 appId = "" //app的appid,在fir中可以找到
 userToken = "" //fir用户的token,也在在fir中找到

 apks {
 release {
 // 要上传的apk的路径,类似下面
 sourceFile file("/project/main/build/outputs/apk/xxx.apk")
 name "" //app的名称
 version "3.3.0" //app的版本version
 build "330" //app的版本号
 changelog "" //更新日志
 icon file("....../res/drawable-xxhdpi/icon_logo.png") //app的icon的路径
 }
 }
}

####运行

$ ./gradlew uploadFir

你也可以在本任务的基础上,在你的build脚本中增加以下内容:

1
uploadFir.dependsOn assembleRelease //后面为你生成apk的任务

这样就可以在执行上传到fir之前首先会生成一个最新的安装包了

本插件基于fir.im官方提供的api文档进行编写,时间匆忙,可能还有一些地方不够完善,还有许多地方可以优化,欢迎star,fork,共同完善。

也可以给我提意见,我来优化。

还有一些代优化的点没有做,后面有空会做,version,build,icon通过程序自动做,而不用手工填写。

项目托管在github上面,生成的jar放在jcenter上面。

github地址:https://github.com/sangmingming/gradle-fir-plugin

原文地址:http://blog.isming.me/2015/08/01/gradle-fir-plugin/,转载请注明出处。

看完评论一下吧

加速Android Studio/Gradle构建

2015年3月18日 22:56

已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里跟大家分享一下。

开启gradle单独的守护进程

在下面的目录下面创建gradle.properties文件:

  • /home/<username>/.gradle/ (Linux)
  • /Users/<username>/.gradle/ (Mac)
  • C:\Users\<username>\.gradle (Windows)

并在文件中增加:

1
org.gradle.daemon=true

同时修改项目下的gradle.properties文件也可以优化:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects.
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

同时上面的这些参数也可以配置到前面的用户目录下的gradle.properties文件里,那样就不是针对一个项目生效,而是针对所有项目生效。

上面的配置文件主要就是做, 增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。

修改android studio配置

在android studio的配置中,开启offline模式,以及修改配置。实际上的配置和上面的一大段一样,主要是在这个地方配置的只会在ide构建的时候生效,命令行构建不会生效。

开启offline

设置运行模式和VM配置

命令行构建

基于上面的配置,命令行构建时在命令后面加上这个参数即可 --daemon --parallel --offline

引入依赖库时使用aar

使用网上第三方的依赖库时尽量使用aar,可以在mavenhttp://gradleplease.appspot.com/或者githuhttps://github.com/Goddchen/mvn-repo搜索。

自己的库模块也可以打包成aar,关于这个可以参考stormzhang的文章http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/

后记

经过这样一番折腾,我原来需要4,5分钟才能构建完成的项目,现在只需要30秒左右就可以构建完成了。当然了,如果你这样还是不可以的话,那么,你应该换电脑了,ssd的硬盘,更大的内存,必须的上了。

看完评论一下吧

❌
❌