Включая Google AdMob SDK для использования с Ant - PullRequest
4 голосов
/ 28 апреля 2011

Я использую (новый?) AdMob SDK, используя инструкции на этом сайте Google . Мы должны интегрировать файл GoogleAdMobAdsSdk-4.0.4.jar в наш проект. Проблема в том, как нам это сделать, используя Ant? Я отлично работаю в Eclipse (он автоматически переходит в файл .classpath), но с Ant он выдает много проблем с «не может найти», когда ant release ing.

Где и как мне включить ссылку на эту банку? Я подозреваю, что должен сделать это в build.xml, но я не уверен, как.

Я копирую исходную папку в другое место, чтобы она не мешала моей папке с проектом eclipse.

// отредактировано:

Позвольте мне быть более конкретным: он работает автоматически, если я просто помещаю банку в папку libs, но я хотел знать, могу ли я использовать банку, если баночка находится где-то еще. Во всяком случае, моя проблема решена ... Я могу скомпилировать ее в 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>

Муравьиная ошибка:

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-файлов, но все же мне интересно, есть ли простой способ для каждой строки кода проекта настроить это. 1026 *

Спасибо.

1 Ответ

2 голосов
/ 28 апреля 2011

К сожалению, это нелегко сделать из-за способа обработки jar-файлов в main_rules.xml:

<!-- 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>

Он просматривает один каталог и строит путь из всех файлов в нем. Учитывая, что jar admob имеет встроенный номер версии, я бы посоветовал вам сохранить копию в каталоге libs проекта.

Если вы используете SVN, вы можете использовать внешнее определение, чтобы вытащить jar в подкаталог, и использовать задачу копирования в -pre-compile, чтобы переместить последнюю версию в библиотеки; все зависит от того, сколько человек (или машин) вы делитесь кодом с

Я не могу придумать элегантный способ, который создает меньше обслуживания, чем просто копирование банки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...