最近在公司开发一个项目,由于是通过内网进行开发,所以没有办法,所有的安卓开发环境都需要离线配置。这边没有一个安卓开发的,所有的一切都要靠自己摸索,不过还好,经过一段时间的思索,在网上不断地查资料,终于完成了从开发环境的配置到windows命令行打包的整个流程。
首先准备一台可以连接互联网的电脑,另一台是只能使用内网的电脑。以下用A电脑表示可以连接互联网的电脑,B电脑表示不能连接互联网的电脑。
第一部分:离线开发环境的配置
首先来一个大纲,共三步:配置Sdk;配置gradle-xxx-all.zip;放弃jcenter()这些远程代码托管库,配置本地代码托管仓库;注释需要联网使用的代码托管库
(1)Android Studio安装包,下载好之后拷贝到B电脑;
(2)安卓SDK,选择性的下载,我建议直接从自己联网的电脑拷过来,我自己就是这么做的,当然也可以通过下载的方式再拷过去,在A电脑中找到SDK的目录,只需要将这个目录中这几个文件夹里边的东西选择性的拷贝到B电脑就行了,包含下边这几个:
一:首先在B电脑里边新建一个文件夹Sdk,同时在这个文件夹里边新建3个文件夹,分别是build-tools,extras,platforms;
二: 将A电脑的Sdk目录下的build-tools,这个对应的是项目中的buildToolsVersion,只需要把和项目相同的buildToolsVersion的那个文件夹拷贝过去就行了,比如你项目中的buildToolsVersion是25.0.2,那么你就把Sdk目录下的build-tools的25.0.2这个文件夹拷贝到B电脑上的新建的Sdk目录中的build-tools文件夹里边;
三:将A电脑的extras里边的文件全部拷贝到离线的电脑中;
四:找到项目的compileSdk的版本,,然后将A电脑中的platforms中对应的版本拷贝过来,比如你项目的compileSdk是19,那么你就将A电脑中的android-19拷贝到B电脑的platforms中。
这样,Sdk这一块的拷贝工作就完成了。
(3)为B电脑配置Sdk的路径,打开local.properties这个文件,这里的路径是我自己的路径,你需要将B电脑打的SDK放到你想要放置的位置,然后将它的路径配置到这个文件中。
(4)将A电脑中的gradle-xxx-all.zip拷贝到B电脑中,这个文件一般在这样的目录中:C:\您的用户名\当前用户\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9,类似下图,其中最后一个字符串文件夹,据说是根据机器的mac地址随机生成的。
这里要注意的,一定要拷贝工程根目录build.gradle中的classpath所对应的gradle版本所对应的gralde plugin版本,否则构建工程的时候肯定会报错。也就是下边两个图中的版本必须对应,比如我现在配置的android gradle的插件版本是2.2.0,对应的gradle 的版本是3.3.0,。如果不清楚的,可以上谷歌搜索一下Android Studio gradle插件版本和gradle版本对应关系,下边的第一个图就是Android studio 的gradle插件版本,第二个就是gradle的版本。插件版本是比gradle版本低的,因为gradle的版本更新实在是太快了。
拷贝完成之后,将这个gradle-xxx-all.zip文件放置到你想要放置的位置,然后将放置后的目录配置到gradle-wrapper.properties这个里边的distributionUrl中。
(5)最后一步,就是代码托管仓库的配置了,这个也是我花费时间最久的一个配置。
将A电脑中的program Files文件夹下边的gradle的m2repository文件夹全部拷贝过来到B电脑。然后如上图,将路径配置成上图所示的样子。
到此,工程环境配置完成。
()最后还需要注意一点,需要把所有需要联网的代码托管库全部注释掉。
现在应该是可以运行的了。
再次总结一下,共4步:
(1)配置Sdk;
(2)配置gradle-xxx-all.zip;
(3)配置本地代码托管仓库;
(4)注释掉需要联网的代码托管库。
第一部分:gradlew 实现windows命令行打包
之前一直尝试通过aapt等步骤实现打包,但是发现这个主要是针对eclipse的,现在的android studio有更为强大的gradlew进行打包。而且使用比上一个打包方式方便非常之多,下边我对gradlew命令进行打包做一些说明:
(1)首先是需要配置signingConfigs。也就是签名文件,具体可以参照博客 :https://blog.csdn.net/bzlj2912009596/article/details/78188570,我这里边是这么配置的:
都是在app module中的build.gradle的android 这个目录下边配置的。mtms.jks这个文件放的位置就在mtms这个工程的 client module中,也就是一般的app 这个module中,一般新建的工程名称都叫app,这个名称是可以更改的,我这里就改成了client。
(1)首先在windows的控制台中进入工程的根目录,工程的根目录中有一个gradlew.bat的文件,我们打包使用的命令也主要是针对它;
(2)常用的gradlew build(构建工程),gradlew clean(清理工程),gradlew assembleDebug(debug包),gradlew assembleRelease(release包);
到此博客就写完了,主要是开发环境的配置,之后用gradlew的打包是比较容易的,但是一定要选对工具,之前我选用aapt那一系列到爆的步骤的时候,非常不方便,还是使用gradlew吧。打包完成的apk在你的app module下的apk文件里边,我这里是 D:\101Project\9aomenyinhang\pos\mtms\client\build\outputs。
这里放一个插曲,之前gradlew打包一直报错的原因就是m2repository托管仓库配置出错了,我是参考https://blog.csdn.net/wodeluoye/article/details/82846835这个博客配置的,但是他配置的本地托管仓库是有问题的,用gradlew进行打包的时候会出现找不到本地gradle的错误。但是用android studio进行打包的时候是没有报错的,这里边是什么原因我暂时还不太清楚。
参考博客:
----------------------------------------------------------------------------
android离线配置开发环境:https://blog.csdn.net/wodeluoye/article/details/82846835
gradlew常用命令:https://blog.csdn.net/zhihui_520/article/details/53783347