移动端服务器i-jetty下载编译安装及问题解决系列

  由于新项目需要在一台Android平台的设备中布署WEB服务器并提供内网接入者通过浏览器访问WEB程序,遂考虑了Google的开源项目Jetty for Android,本来由于没有接触过已经做好心理准备会遇到一系列的问题,但猜到了开始却没猜到结局,过程相当坎坷。这也是这篇随笔出现的原因,一来为自己长记性,二来吧,对于Jetty for Android,网路上那些群魔乱舞的资料实在是太让我无语了,毫无用处的博文实在是太多太多,有些在看的时候把人都看懵圈了,所以本篇随笔以作整理之用。

  首先惯例环境说明:Windows XP sp3 (苦逼公司)、JDK1.7、Apache Maven 3.2.5、Git 2.6.4、eclipse luna 4.4.2。

  关于环境的准备这里就不作说明了,相信作为软件开发人员,不管老手菜鸟以上这些工具应该都玩得666的,怎么会没有安装不会配置呢。但还是要确定以下字段已声明在系统变量,并将"import"文字后说明的目录引入到Path属性中:

  JAVA_HOME    -- java jdk root path  --import:\bin;\jre\bin

  MAVEN_HOME     -- maven root path --import:\bin

  ANDROID_HOME  -- android sdk root path --import:\tools;\platform-tools

  1,Download

  参考Jetty for Android项目主页利用Git将i-jetty代码同步到本地。

$ git clone https://github.com/jetty-project/i-jetty.git

  在查看Jetty for Android项目主页时,注意到页面中在说明Depedencies时并没有说明Maven 的版本,但项目中Pom清单默认所依赖的类库Jar包的版本若与当前系统使用的Maven 的版本互相不兼容,后面编译项目时会出现一系列的问题,这点需要注意,关于项目中类库的版本与Maven版本的支持关系在下面有说明。

  2,Building

  本项目包含apk项目及war项目,下载完毕首先做的不应该是打开eclipse 来 Import Maven Project,不然等着你的将会是恶梦连篇,而首先要做的应该是修改项目Pom文件以适应本地环境,再使用Maven同步相应的依赖类库项,确定本地环境能适应项目的编译过程。

  项目中默认在使用老得不能再老的Android API 4 平台,作者也是够念旧的,我们暂时不改动它就用<platform>4</platform>,但请确认系统中已经下载了API 4 的SDK Platform,否则参考此亲提供的下载Android API 4 platform

  注意解压时不要直接解压到ANDROID_HOME中,参考SDK的目录结构,应在platforms,samples,system-images目录中建立android-4放置相应文件,tools目录内文件请对位入座。

  此时我们还需要根据Maven 版本来修改项目中的Pom文件,例如我的为Apache Maven 3.2.5:i-jetty\i-jetty\i-jetty-ui\pom.xml

      <plugin>
          <groupId>com.jayway.maven.plugins.android.generation2</groupId>
          <artifactId>android-maven-plugin</artifactId><!-- 改这里 -->
          <version>3.8.2</version><!-- 再改这里 -->
          <extensions>true</extensions>
          <configuration>
              <sdk>
                  <platform>4</platform>
              </sdk>
              <deleteConflictingFiles>true</deleteConflictingFiles>
              <extractDuplicates>true</extractDuplicates>
              <undeployBeforeDeploy>true</undeployBeforeDeploy>
          </configuration>
          <executions>
            <execution>
              ...
            </execution>
          </executions>
       </plugin>
    <profiles>
        <profile>
            <id>sign</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                        <artifactId>android-maven-plugin</artifactId><!-- 还有改这里 -->
                        <configuration>
                            <sign>
                                <debug>false</debug>
                            </sign>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

  * 注:maven-android-plugin在3.0.0版本开始已经更名为android-maven-plugin,而项目中还在使用maven-android-plugin : 2.9.0-beta-5,作者年龄暴露无遗。

  若是其它Maven 版本具体请参考以下的版本支持修改范围:

  Maven 3.0.3 -- android-maven-plugin : 3.0.0

  Maven 3.0.5 -- android-maven-plugin : 3.3.0~3.5.3

  Maven 3.1.1 -- android-maven-plugin : 3.8.0~3.8.1

  修改完毕,命令行定位到i-jetty\i-jetty目录开始编译apk:

  mvn clean install

  此时Maven会根据Pom清单同步依赖项到Maven的本地repository中,到这里你就开始祈祷吧...   --(此处根据网速快进若时间)--   如果一切正确无误将会出现以下的编译结果:

    

  3,Using i-jetty

  检查i-jetty-ui\target\发现已经编译成功的APK -- i-jetty-3.2-SNAPSHOT.apk ,安装到设备中:

  adb install -s "C:\Documents and Settings\Administrator\i-jetty\i-jetty\i-jetty-ui\target\i-jetty-3.2-SNAPSHOT.apk"

  4,Building console

  继续编译WEB项目,同样是修改Pom清单适应本地编译环境:i-jetty\console\webapp\pom.xml -- 第70行开始

     <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <!-- Convert the compiled classes into a clases.dex. -->
          <execution>
            <id>generate-dex</id>
            <phase>process-classes</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>java</executable>
              <arguments>
                <argument>-jar</argument>
                <!-- 改为从android api 4 解压出来的dx.jar的正确路径需要用来将clss文件打包成dex文件 -->
                <argument>${env.ANDROID_HOME}/build-tools/android-4.4/lib/dx.jar</argument>
                <!--<argument>-JXmx1024M</argument>-->
                <argument>--dex</argument>
                <argument>--verbose</argument>
                <argument>--core-library</argument>
                <argument>--output=${project.build.directory}/classes.dex</argument>
                <argument>--positions=lines</argument>
                <argument>${project.build.directory}/classes/</argument>
                <argument>${project.build.directory}/generated-classes/</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

  

  修改完毕,命令行定位到i-jetty\console\webapp目录开始编译war:

  mvn clean install

  又是一阵焦急的等待...

    

 5,Using console

  adb push "C:\Documents and Settings\Administrator\i-jetty\console\webapp\target\console-3.2-SNAPSHOT.war" /storage/sdcard0/jetty/webapps/

 6,Browser console

  查看设备WiFi Connector Information并从浏览器中访问

adb shell
[email protected]:/ $ netcfg

  

时间: 2024-10-24 18:02:06

移动端服务器i-jetty下载编译安装及问题解决系列的相关文章

Linux中服务器软件为什么需要编译安装

为什么服务器软件需要编译安装?一个流传很广的说法是编译安装性能更好,其实这是个谣言. 服务器CPU事实已经被Intel垄断了,就那么几种型号,编来编去生成的机器码是一样的.Intel宣传自己的编译工具Intel C++ Compiler 比GCC编译出来性能要提升10%-20%,这就是一广告,生产环境很少用人用它,何况它还要收费. 性能真不是问题,比如 strip 命令可以大大减小可执行文件的size,但是我装过几千遍软件,都没有见有人在安装脚本里面使用. 软件需要编译安装的真实理由有如下3点:

perl6的介绍与下载编译安装

遇到perl6 一直想认真的学习一门脚本语言或者与之类似的语言,因为相对与c++/c来说,一些工作可以很方便的用脚本语言来解决,比如对于日志文件的处理,自动ftp上传. 也看过不少语言的介绍,比如python,ruby,erlang,go等等,由于本人是c语言入门,后来学习中转向了c++,所以习惯了c/c++的编程风格,对于python的 语言风格无法认同,tab缩进区分代码块什么的简直反人类...喜欢python的不要打我...至于erlang,纯粹的函数式语言,用起来挺绕的,不是觉得很方便,

Linux 邮件服务器原理介绍,编译安装Postfix实现本地的邮件服务。

一.邮件服务器基本的工作原理 用户(MUA)通过SMTP协议将邮件发送到服务器(MTA),服务器分解发现如果是本地的邮件传输则通过lmtp来传送,如果是远程邮件将调用本地的客户端使用SMTP协议向对方服务器传送. 当对方的服务器接收到邮件之后,发现如果不是本机所负责的域,则将邮件交给本机的邮件客户端,根据邮件目标域请求DNS解析,将邮件发送到目标服务器,或者丢至下一跳此过程称为邮件中继,如果发现是本机负责区域内的用户,则SMTPD将邮件转交给MDA,由MDA把邮件传递到用户的邮筒. 用户通过MU

Apache服务器最新版下载、安装及配置(win版)

windows 7 64位 Apache 2.4.10 服务器软件 (这个下载过程稍后提到) Apache的下载: 1 登录http://httpd.apache.org/download.cgi 这个地址,找到2.4.10,如下图位置: 2 进入如下界面后,选择第一项ApacheHaus,这是个第三方下载平台,在它的网站下载独立的Apache会是一个压缩包 另外四个中,第二个也是独立的Apache下载地址,另外三个是集成开发环境. 小编选的第一个. 3 在新的界面中,会发现VC9和VC11字样

Apache服务器最新版下载、安装及配置

1.登录http://httpd.apache.org/download.cgi 这个地址 2. 进入如下界面后,选择第一项ApacheHaus,这是个第三方下载平台,在它的网站下载独立的Apache会是一个压缩包 另外四个中,第二个也是独立的Apache下载地址,另外三个是集成开发环境. 3.在新的界面中,会发现VC9和VC11字样,通过阅读相关内容得知,VC9是指用VS2008编译的代码,而VC11是用VS2012编译的,而用VS2012编译的无法在windows xp和server 200

下载编译安装Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理

http://blog.csdn.net/gangchengzhong/article/details/52910225 [注意,在编译make时出现的错误并不是文章中说的openssl的版本问题,而是./configure的时候没有指定openssl的安装地址  --with-ssl=/usr/local/ssl] ===>    http://coolio.blog.51cto.com/680971/1400912

邮件服务器(二)——centos6.5编译安装postfix-2.11.1

一.安装前的准备工作: 1.卸载系统默认安装postfix # service postfix stop # chkconfig postfix off # rpm -e postfix --nodeps 2.安装所需的rpm包,这包括以下这些 db4-devel, openssl-devel, cyrus-sasl-devel 二.启动依赖的服务:1.启动mysql数据库,并给mysql的root用户设置密码: # service mysqld start # chkconfig mysqld

redis5.0编译安装

1.下载源码 https://redis.io/ 2.将源码上传到服务器中,进行编译安装 a)可以使用rz进行上传(sz是将服务端的文件下载到本地)b)tar -xzvf 5.0-redis.tar 3.可以查看READER.me文件,该文件有编译步骤 make MALLOC=jemalloc 4.将运行文件和配置文件放入/usr/local/redis目录下 mkdir -p /usr/local/redis/bin /usr/local/redis/conf cp redis-benchma

在win7系统上,使用3台CentOS 6, (编译安装http2.4、php、mysql)

实验要求:搭建lamp (1) 三者分离于三台主机: (2) 一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress: (3) xcache (4) mpm为worker机制: 物理机使用win7系统,在VMware虚拟机中准备了3台centos6.7的linux系统: 其中IP地址设计: web服务器地址为:192.168.255.60 php服务器地址为:192.168.255.61 mysql数据库服务器地址为:192.168.255.62 分别在每台服务器上编