我正在使用(新的?)AdMob SDK,使用this Google site上的说明。我们应该将GoogleAdMobAdsSdk-4.0.4.jar
文件集成到我们的项目中。问题是:我们如何使用Ant做到这一点?我在Eclipse中运行良好(它自动进入.classpath
文件),但是在ant release
时,它会抛出很多“无法找到”的问题。
我在哪里以及如何包含对该jar的引用?我怀疑我应该在build.xml
中这样做,但我不确定如何。
我将源文件夹复制到别处,这样就不会弄乱我的eclipse项目文件夹。
//编辑:
让我更具体一点:如果我将jar放入libs
文件夹,它会自动运行,但我想知道如果jar位于其他地方,我是否可以使用jar。 无论如何,我的问题已经解决了......我可以将其编译成libs 。我将此视为好奇心问题。不急。
这是.classpath文件,如下所示。让我说它只会在Eclipse中产生影响,但Ant似乎并没有使用它:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="src" path="/android_licensing"/>
<classpathentry kind="lib" path="C:/Users/David/Documents/program/eclipse/GoogleAdMobAdsSdk-4.0.4.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Ant错误:
compile:
[javac] C:\android-sdk-windows\tools\ant\main_rules.xml:384: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 35 source files to C:\Users\David\Documents\program\eclipse\MyApp\9-branch\aaa\bin\classes
[javac] C:\Users\David\Documents\program\eclipse\MyApp\9-branch\v9\src\net\myapp\ui\MainActivity.java:116: package com.google.ads does not exist
[javac] import com.google.ads.*;
[javac] ^
[javac] C:\Users\David\Documents\program\eclipse\MyApp\9-branch\v9\src\net\myapp\ui\MainActivity.java:143: cannot find symbol
[javac] symbol : class AdView
[javac] location: class net.myapp.ui.MainActivity
[javac] AdView adView;
[javac] ^
我已经尝试过查看main_rules,我可以看到它将libs文件夹声明为jar的位置,但是,我仍然想知道是否有一种简单的方法,每个项目的代码行来自定义它。< / p>
感谢。
答案 0 :(得分:2)
不幸的是,由于在main_rules.xml中处理jar的方式,这不容易做到:
<!-- Directory for the third party java libraries -->
<property name="jar.libs.dir" value="libs" />
<property name="jar.libs.absolute.dir" location="${jar.libs.dir}" />
<!-- create a path with all the jar files, from the main project and the
libraries -->
<path id="jar.libs.ref">
<fileset dir="${jar.libs.absolute.dir}" includes="*.jar" />
<path refid="project.libraries.jars" />
</path>
它在一个目录中查找,并从那里的所有文件构建路径。鉴于admob jar有一个嵌入的版本号,我建议你坚持在项目libs目录中保留一份副本。
如果使用SVN,可以使用外部定义将jar拉入子目录,并在-pre-compile中使用复制任务将最新的一个移动到libs中;这一切都取决于你与
共享代码的人数(或机器数)我无法想到一种优雅的方式,只需复制jar就可以减少维护工作量。