用Github、Travis-CI集成发布app遇到的坑

纸上得来终觉浅,绝知此事要躬行

一、参考资料

下面的教程很棒,很细致地讲解了每个步骤,对他们的付出表示感谢!

  1. 基于Travis CI搭建Android自动打包发布工作流

  2. 用Travis CI给Android项目部署Github Release

  3. Travis CI官方文档

二、遇到的坑

1. ruby版本

ruby需要1.9.3以上版本

2. 用代理才能访问网络的情况下。

在命令行下输入:set http_proxy=url,后面的url是你的代理地址,如:http://192.168.0.1:8081什么的。设置完后就可以直接使用gem命令了。

示例:set http_proxy=192.168.0.1:8081

设置完成以后,gem就可以访问网络了。但是可能还是不能下载Travis!

3. 替换gem的source

由于数据源可能无法下载,需要替换成下面的淘宝的数据源:

gem source --remove https://rubygems.org/
gem source --add https://ruby.taobao.org/

如果不行,可以替换成国内某大学的数据源http://ruby.sdutlinux.org/

当在命令行输入gem source时,有且仅有一个数据源时,如下表示数据源配置成功。

> *** CURRENT SOURCES ***
 
> http://ruby.sdutlinux.org/

4. travis login

安装完travis,需要先登陆travis
命令行输入:travis login

travis login

We need your GitHub login to identify you.
This information will not be sent to Travis CI, only to api.github.com.
The password will not be displayed.

Try running with --github-token or --auto if you don't want to enter your passwo
rd anyway.

然后输入github的帐号和密码。或者使用token登录,我没用token,待以后尝试。

5. permission denied

报错信息如下所示:

$ java -Xmx32m -version
java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
$ javac -J-Xmx32m -version
javac 1.7.0_76
$ ./gradlew build connectedCheck
/home/travis/build.sh: line 45: ./gradlew: Permission denied
The command "./gradlew build connectedCheck" exited with 126.
Done. Your build exited with 1.

在.travis.yml里添加下面

before_install:
     - chmod +x gradlew

6. lint error

travis在运行的时候报错如下:

Fix the issues identified by lint, or add the following to your build script to proceed with errors:
  ...
  android {
      lintOptions {
      abortOnError false
          }
  }

按照提示,在项目app目录下的build.gradle内android标签下添加上述信息。

7. decrypt error

报错信息如下:

$ java -Xmx32m -version
java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
$ javac -J-Xmx32m -version
javac 1.7.0_76
$ openssl aes-256-cbc -K $encrypted_d3d6449b1a56_key -iv $encrypted_d3d6449b1a56_iv -in dexter0218.jks.enc -out dexter0218.jks -d
bad decrypt
140307727189664:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:532:
The command "openssl aes-256-cbc -K $encrypted_d3d6449b1a56_key -iv $encrypted_d3d6449b1a56_iv -in dexter0218.jks.enc -out dexter0218.jks -d" failed and exited with 1 during .
Your build has been stopped.

这里卡了很久,最后还是从官方文档encrypting-files里看出了端倪。

Caveat

There is a report of this function not working on a local Windows machine. Please use a Linux or OS X machine.

简而言之:Windows不支持这个功能,请使用Linux或者OS X生成.enc加密文件。

最后在虚拟机里安装Linux,再安装ruby(1.9.3以上),再安装Travis,再加密key。此时的加密生成的.enc文件上传后,才能被Travis正常解密。

8. Linux里的ruby安装

折腾半天,最后还是通过源码编译安装

下载,解压,然后执行:

$ ./configure
$ make
$ sudo make install

你可能感兴趣的:(用Github、Travis-CI集成发布app遇到的坑)