本人是在集成Ant和Maven多渠道打包中遇到 了问题: 项目有Is Library项目,打包时打不到类,打包后缺引用项目中的东西,所以用了以下方法。
首先说明 ,这是一个笨办法,不过确实没办法解决,只能这样了。
我的情况 是这样的,用maven打包时只打把在pom.xml依赖的包(或一个项目)打进apk里,如果不采用maven来管理则会出问题,但是有的时候第
三方的项目不一定是maven项目或者其它原因就不能在依赖里做,扯远了。说正题,咱们的Android项目可以通过Is Library的方式加到Libraries中,这样
就可以达到重用或者模块化的开发,但是在Ant打包的时候(除eclipse自带的)就不会被打到Apk里面,所以只能在打包前先把第三方的项目或者jar编译
到我们的主项目中来再执行打包。
如果有Is Library项目,在project.properties中会生成“android.library.reference.1=../JUIBase”这样的代码,当然也可以多个2、3等等,这个时候我们可以
拿到“=”后面的值就是Is library项目的地址。通过这个地址来编译到本地目录下,然后再打包,代码如下。
Maven集成Ant打包见:Android之Maven集成Ant多渠道打包
Ant核心代码:
- <!-- third project -->
- <property name="thirdProject" value="../UIBase" />
- <!-- 编译需要的jar; 如果项目使用到地图服务则需要maps.jar -->
- <property name="android-jar" value="${sdk-platform-folder}/android.jar" />
- <!-- 外部类库所在目录 -->
- <property name="external-lib" value="libs" />
- <property name="external-lib-ospath" value="${basedir}/${external-lib}" />
- <!-- 编译后的文件放置目录 -->
- <property name="outdir-target" value="target" />
- <!-- 生成class目录 -->
- <property name="outdir-classes-ospath" value="${basedir}/${outdir-target}" />
- <!-- Compile this other project. -->
- <target name="compileLibrary">
- <mkdir dir="${outdir-classes-ospath}/classes" />
- <javac encoding="GBK" target="1.6" extdirs="" srcdir="${thirdProject}" destdir="${outdir-classes-ospath}/classes" bootclasspath="${android-jar}" includeantruntime="on" source="1.6">
- <classpath>
- <fileset dir="${external-lib-ospath}" includes="*.jar" />
- </classpath>
- </javac>
- <echo>libs_classpath..${external-lib-ospath}</echo>
- </target>
- <target name="maven-apk" depends="deploy, compileLibrary">
- <!-- 通过 执行maven命令来打apk包,前提是先配置maven到环境变量 -->
- <exec command="mvn.bat">
- <arg value="-f" />
- <arg value="${basedir}/pom.xml" />
- <arg value="compile" />
- <arg value="package" />
- </exec>
- <echo level="verbose">--------BUILD SUCCESSFULL---------</echo>
- </target>