java idea无法linux启动bathttps 但startup.bat却能linux启动bat

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

第三步:IDEA的配置

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

  当然你可以在命令框里面自己去手动的敲代码也可以写一个.bat文件一劳永逸......这里我就介绍写.bat文件的方法

  就是上图所示的三个东东啦,有了这三个东东把他们拖到你windows服务的debug文件夹里面,点\Framework64\ framework 4.0版本的在这个文件夹里面找到InstallUtil这个东东就可以了,接下来的事情就是去跑你的windows服务吧~~~

   还有一点需要的注意的是这个InstallUtil是要区分版本的,你在windows上的这个是不能跑在windows server上的所以跑什么平囼就去那个平台找对应的InstallUtil

PS:可以在windows服务里面写坏事情,嘿嘿比如只要一开机就linux启动bat这个服务,然后直接关机~~或者直接打开浏览器来到蜀雲泉的博客\(^o^)/~

}

目前主流的自动化打包工具时 antmaven,gradle

maven工具中有自己的依赖仓库维护,很多开源支持包在上面都有维护(国内的除外)

gradle是近年来发展起来自动化构建应用解决 ant 构建上的繁瑣代码,并且也支持读取maven的配置形式依赖maven的支持包结构

好了,平时你们使用 eclipse 发布的时候不要说你没用过自动构建,eclipse 的 android项目是用ant的构建方式如果你要加渠道发布,你就需要自己写 ant 的脚本

maven自动构建,目前大多数用在 javaweb 项目安卓项目用的不多。

其中根目录是一个project下面的app目录是其中一个module。

gradle项目产生文件(自动编译工具产生的文件)
IDEA项目文件(开发工具产生的文件)
其中一个module复用父项目的设置,可与父项目拥有相同的配置文件
自动构建时生成文件的地方
自动完成gradle环境支持文件夹
gradle 项目自动编译的配置文件
gradle 运行环境配置文件
gradle 项目的子项目包含攵件
  1. .gradle .idea 是在分别在 gradle IDEA 运行时候会生成的文件,一般这样的文件也不会纳入源代码管理之中
  2. app文件夹,是其中一个module里面的文件内容与父类差鈈多,若没有定义则在项目中使用父类的设置(意思就是,里面也能包含build.gradle、gradle.properties、setting.gradle 等相关gradle文件怎么理解?其实每一层都是一个module整个项目昰一个大的 module 而已)
  3. gradle 文件夹,用于保存gradle 下载路径的配置文件位置用于没有gradle环境的环境初始化使用
  4. build.gradle 项目的编译环境配置,比如制定项目依赖嘚lib包
  5. local.properties 配置android NDK,SDK的地方恩,非android项目可能没有这个文件这个路径根据不同想电脑不同,一般也不会纳入源代码管理之中一般可以写一个local.properties.simple 攵件,告知需要修改该文件名并写上本地SDK NDK 路径simple文件纳入源码管理之中。
  6. setting.gradle 子项目包含文件声明当前目录下含有什么module,当然你的app底下加上這样的文件也能继续在app底下加module。和我第点说的整个project就是一个大的module,每个module下面还能包含相应的module如果你理解这个了,其实app目录单独作为┅个项目管理也是可以的,把相应的配置文件配上而已相当于主目录应用
  7. gitignore 该文件是源码管理的配置文件,不在该文讲解

    build.gradle文件,这个module嘚项目编译文件该module依赖什么插件对该目录进行编译都在此配置,比如android与android-library其他内容可继承父类的

上面介绍了gradle项目的目录结构,以及module的模式接下来,了解一下IDEA如何与gradle项目关联上来的

idea的项目,在建立或者导入的时候就已经确定他是基于什么自动构建工具的项目。新建的時候使用 gradle androiw module 说明他是 gradle 自动构建的项目,那么导入的时候也是一样我们看看下面的项目导入图,在选择项目地址之后我们看到一下的内嫆。

你可能会想想gradle里面的依赖包,我不知道有哪些怎么办。好吧你私下里就骂骂作者吧,上传了源码不上传自动构建相关的文件導致项目依赖不完整,还得找资料自己完善所以这里也希望广大开源代码爱好者,在分享你的作品的时候希望能够分享完整的项目信息,别只有源码让人跑不起来项目(牢骚说多了)。

恩是不是似曾相识?你没看错在新建项目的时候也有这个选择,这个是选择自動编译的工具的方式

如果你到官方下载 gradle 绿色包,解压到某个目录你可以使用 gradle distribution,并设定 Gradle home 目录这样 IDEA 构建编译项目的时候,就使用你设定嘚gradle版本进行

这两个文件做了什么事情呢:

  1. 判断本地用户目录下的 ./gradle 目录下是否存在该版本,不存在该版本走第3点,存在走第4点
  2. 利用 ./gradle 目录丅对应的版本的 gradle 进行相应自动编译操作

看了上面的原理应该明白了,如果你自己下载 gradle 让idea 导入项目的时候使用那么其他人就不知道你使鼡什么版本的gradle版本进行自动编译,如果使用 项目目录自带的 gradlew 的话gradlew 就会自动完善 gradle 的安装,若需要更新 gradle 的版本只需要修改 gradle/wrapper/gradle-wrapper.properties 文件内的下载链接即可。而且gradlew的版本和 android 版本是需要适配的在自己电脑维护需求不同版本的 gradlew 也是一个麻烦的事情。

而且这样的好处也有一个当你在新电腦上下载你的源码进行编译时,你完全可以不依赖IDE开发工具直接在项目目录下使用 ./gradlew build 即可对源码进行编译,因为它会自动下载 gradle 进行调用,可鉯使得新电脑较快完成项目开发环境适配(对网络依赖较强希望带上vpn,这就是为什么你们在新建项目时需要去下载gradle还比较慢的原因,峩们一起来 f-u-c-k-g-f-w

既然可以选择使用 gradlew 来管理 gradle 或者手动指定 gradle 工具那么已经存在的项目如何更改?

这个问题我曾在 idea 13 版本上有找到,但是在 idea 14 上面沒找到相应的变更设置谁要是找到了,记得留言告知我一声

在导入项目或者新建项目的时候,idea 会根据 build.gradle 文件更新 *.iml 项目文件有时候,你會发现新增一个jar包,但是无法读取jar包内容因为对于 gradle 来说,jar包属于项目外依赖包括maven拓展包,都是属于项目外依赖需要修改build.gradle 文件,当伱加入新的 jar包或者添加了 maven支持包,在idea上面都会提示需要进行同步

恩上图你看到的,是我模拟添加一个jar包之后随便加了一个空格,文件上提示需要进行 gradle 项目与 idea项目文件同步点击 sync now 之后,idea 会根据 gradle 文件重新更新 .idea 目录以及 *.iml 文件让idea 可以识别引入的 资源。

这也就是为什么有人说加入一个jar包确没有自动提示而重新打开idea之后就能够提示使用jar内的方法了,因为重新打开idea开发工具会重新同步 build.gradle 的内容

gradle只是一个自动化编譯工具,它需要以来插件来识别这是什么项目用什么方式去编译的。我们来看看 build.gradle 与 app/build.gradle 的设置看看

这个插件的版本号与gradle调用编译时是有依賴关系的,插件的版本越高需要更多gradle的新特性,新的gradle特新就需要新版本的gradle才能支持

这时候,回到上一节的内容如果要使用android项目自动編译的新特性,如果选择不同的gradle指向方式那么你就要做不同的处理

  • 下载不同版本的gradle对不同的项目的不同版本做插件与gradle的对应维护,如果其他人使用你的项目你还要告知他使用什么版本以上的gradle才能使用这个插件。

具体的插件依赖可点击

先来看看eclipse的完整目录与IDEA的完整目录結构(当然,IDEA看的目录时基于module的目录设置的而不是根据总项目的目录设置的)

按照Android开发的目录,区分为以下的目录格式:

上面所展示的內容就是目前Android用到的所有资源文件类型为什么要把项目根目录列出来?这个到后面渠道包的时候需要用到可是也可能也会问到,为什麼项目根目录会有两级src 第一级我的理解是项目源码相关都在这里,第二级认为是主项目源码在 main 目录,根据系统完善性应该针对主项目添加测试项目的源码,所以新的代码里面在 main 目录同级的地方会有 tests 目录用于测试项目的目录源码维护。如果有渠道还可以为渠道包新建项目目录去坐项目自定义。

1. 其中adil是跨进程通信使用的

3. jnilibs文件就是平时jni接入使用的 *.so库。需要里面是需要包含平台文件夹的入下图所示

当峩们要从eclipse里面转移到as的时候,是可以通过gradle来从新定义以上路径的在module/build.gradle文件里面有这么一段设置默认设置,如果按照缺省可以不写。

所示需要适应eclipse的目录格式可以写成:

你一定奇怪,为什么libs 的jar包没有目录呢没错,还记得我上面写过的对于 gradle android 项目来说,jar包和library支持属于android项目的外部支持,通通由 Gradle 配置文件去管理上图的最后一段说明这一切。

说到 library 不得不说说项目类型。

如果是一个普通android项目会是这样的代碼:

#1 依赖项目相对路径的jar包,当然你可以换成全路径

#或者依赖libs目录下的所有jar包

#2 依赖maven仓库中的支持包(目前很多好的都在maven进行管理,比如 v4v7支持包)

有时候,你可能新加入一个

很多开源仓库不懂怎么加maven插件添加不在这篇文章的讨论范围了。你在搜搜可否

ant 的的编译目录基於当前工作目录进行,如果你需要自定义渠道你需要编写 ant 脚本代码,去替换当前目录的文件而且当前目录的文件你还需要进行保存一佽。若出错了你还得在本地目录进行恢复。

gradle 的编译方式是根据基础项目内容,以及渠道信息 将相关代码文件拷贝合并到 build 目录下,然後在build 目录下进行编译在此设计小文件多文件的平凡拷贝更新,则正常编译速度让很多人觉得IDEA 开发比 Eclipse 的卡,其实这也是他实现的方式造荿

但是 gradle 项目却提供了很多eclipse 不方便提供的功能。比如渠道模式

在build.gradle 中有这样的设定 productFlavors 这样的设定当改设定存在,则 main 主代码渠道不在进行打包全部依赖渠道进行编译安装调试

看到我的 productFlavors 中定义了两个版本,一个是线上测试餐饮版一个是线上测试大众版。你看了可能举得这么萣义没什么用,你看到大括号里面了么? applicationID恩,没错这就是可以重新定义他的包名,在这括号里面能够重新定义defaultConfig里面的所有配置每個渠道的版本号都能单独维护。不需要你写ant脚本去替换而且每个渠道也是同时可以编译

记得在目录详解的目录上,设定的是 main 渠道的目录恩,没错现在我设定的是渠道的目录。这个怎么说还记得我设定主目录的设定代码么?

没错你看到的,所有android相关的文件都在某個root下面。

那么我们渠道上面设置的的路径也是基于如此路径进行文件分类的。

恩没错,设定了渠道的内容编译渠道的时候,不同的渠道就会依据主项目然后替换自己的内容。 比如上图的String你需要替换的只要写入你需要替换的String name,这么value的值就会在这个渠道就会替换过来包括drawable等二进制文件,他会进行替换操作比如说,你给应用宝打包的应用linux启动bat欢迎页是应用宝的给其他应用商城的是其他图片,就可唍全放置在渠道文件夹内

如何检查是否合并?检查 build 文件内的合并内容具体的不细说,你应该能找到比如某个渠道替换的文件,找到那个渠道相应的文件查看即可如果时Value的值,那就查看value文件内对应的name是否已经变更成功

说到这个,不得不提你有时候双击报错信息,咑开了某个文件或者某个图片(.9图较多),想对其进行修改你发现它是只读状态,不可修改恩,没错这个编译文件经过 gradle 拷贝到build 相應渠道目录下才开始进行编译,在那个目录下的文件都是只读状态并非你的源代码文件。你可以根据提示信息找到你自己的源文件进行修改

你可能会问,这么多渠道包那我要调试,究竟默认使用哪个渠道呢看下图:

恩,你没看错在项目下面,有个选择编译版本的哋方。这样你想调试那个渠道的版本都可以轻松进行了。

gradle 在编译时候有些东西跟java虚拟机相关记得一开头的项目文件 gradle.properties 么?这个是设定 gradle 茬运行时的编译环境

在渠道编译的时候,默认情况下一个渠道会启用一个java 虚拟机进行编译,在java 虚拟机linux启动bat关闭的过程是非常耗时的,gradle 提供了守护进程的模式进行编译从头到尾就使用一个java 虚拟机(jvm)

至于什么是守护进程模式,资料比较多我就不解析了,可看这里

同時根据你自己的电脑内存,你还可以定义虚拟机的内存数大小这个其实会关乎你电脑卡不卡的问题,电脑内存太小编译虚拟机内存呔多,也许你切换个环境都会觉得举步维艰吧

很多教程,都写编译打包版本使用命令

可是,都不会告诉你更好的提高效率。官方提供release 版本与debug版本的区别编译

一般我们要编译所有渠道的 release版本会使用如下命令:

你肯定会问,如果我基于一个稳定版本新增一个渠道,我呮想打包一个渠道怎么办?之行下面的命令看看

这会列表所有 gradle tasktask的概念我就不解释了,很多gradle教程已经说了

我只要打包 onlinetestcatering 渠道,只要之行這样的命令就可以了

以上内容,就是我针对 IDEA 并使用 Gradle 构建的一些深入理解与提升的内容关于 NDK 代码编译,以及代码混淆配置打包 key 的设置,很多教程都已经解答过了我也就不在说明了。

}

我要回帖

更多关于 linux启动bat 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信