AS离线开发和如何离线状态下利用gradle来编译android工程

来源:互联网 发布:mysql查询每月数据 编辑:程序博客网 时间:2024/05/21 06:21

首先,网上大部分的开发资料都是教我们如何去在android studio上怎么离线开发。这个我也总结下流程。

1.点到preferences->build tools->gradle 下有一个 offline working 如图


2.运行的时候会出现各种乱七八糟的问题。

简单列下碰到的几个问题和对应解决办法:(注:我的工程是从eclipse转换过来)

2.1 出现各种方法找不到的情况

  一般是由于方法数超过了65535 导致解决办法:

  2.1.1defalultConfig中增加一句 multiDexEnabled true 。

  2.1.2然后对应在你继承了的Application中覆盖父类的方法attachBaseContext(Context con)方法。调用super方法之后需要调用 MultiDex.install(this).

 2.1.3 需要添加android-support-multidex.jar的依赖。

  具体解决办法可以参考http://blog.csdn.net/yuanzeyao/article/details/41809423

2.2 出现9patch的图片异常问题。

  解决办法,直接在as里面可以对9patch图片进行直接修改,可以勾选show bad patches 看看这个九宫格的问题,实际上是因为9patch图片转过来,拉升的属性丢失,需要重新设置。

2.3 jni丢失

 解决办法:在 sourceSets.main里面设置 jniLibs.srcDirs = ['libs'] 这样的话不用切换之前so所在文件的位置。

2.4 还有一些小问题,基本上都是可以直接谷歌解决了。


到重点了:

离线编译android工程

首先,gradle的编译过程是相对简单很多的。基本上AS下的gradle.build就已经做好了编译工作了,我们要做的,就是把这个编译环境配置好,用于离线打包。

在线的情况下,我们只需CD到对应主工程(Module)目录,注意不是project目录。这个目录下面直接调用 gradle build(gradle的环境搭建相对简单,直接跳过)。

但是在离线情况调用,就会出现

http://bbs.csdn.net/topics/391927983?page=1#post-401003857

connection to https://jcenter.bintray.com refused. 一看这个错误大概也知道这个过程是依赖联网的。

然后还好有个大神出现,只需要gradle build --offline加上后面的离线参数即可执行离线编译了。

但是又出现了一个问题。

不能解析在project下面build.gradle 配置的gradle插件版本。很奇怪,为什么在AS下没问题,但是在离线编译的时候就出现cannot resolve呢?

于是出现了

解决办法1:

下载maven,配置好maven环境,搭建maven本地仓库,将对应的jar发布到本地仓库,gradle.build脚本中将本地路径配置。

http://www.coderli.com/gradle-maven-local-repositories/ 

http://blog.csdn.net/mao520741111/article/details/48374367 

参考该博文。

http://wiki.jikexueyuan.com/project/gradle/dependency-management-basics.html wiki说明。

解决办法2:

将对应的mavencentral() 调整为 mavenLocal之后,出现了在 某某文件夹下找不到某个文件的提示。如图


如果有外网的情况,可以调用一次在线build。这样会在 c://users/xxx/下面生成一个.m2的隐藏文件夹,这样可以将这个文件夹拷贝到内网对应的文件夹。

当然这个还是可能会出现某些文件找不到的情况,只需要找到android studio中xxx\gradle\m2repository文件夹,拷贝对应的文件夹或者文件到对应目录。因为他编译都是依赖你的AS来生成的。这样就可以正常编译了。


总结下,gradle大法确实好,但是用起来不是那么简单。还是得去看看关于gradle的各方面概念,最好那本书来看看,了解他的编译过程都如何做的,这样出现某些编译问题也能够及时解决。

0 0
原创粉丝点击