Search code examples
androideclipsemaventycho

Tycho can't find Android Development Tools bundles


I'm trying to build a plugin+feature that has a dependency on com.android.ide.eclipse.adt bundle. For that I've added ADT repository to the master pom.xml:

<repository>
  <id>adt</id>
  <layout>p2</layout>
  <url>http://dl-ssl.google.com/android/eclipse</url>
</repository>

Now the build fails with this error:

[INFO] Adding repository http://dl-ssl.google.com/android/eclipse
[INFO] Fetching site.xml (0B of 1,8kB at 0B/s) from http://dl-ssl.google.com/android/eclipse/
[INFO] 1 operation remaining.
[INFO] Fetching site.xml (1,8kB of 1,8kB at 0B/s) from http://dl-ssl.google.com/android/eclipse/
[INFO] Adding repository http://dl-ssl.google.com/android/eclipse
[INFO] Resolving dependencies of MavenProject: me.fixpoint.eared:me.fixpoint.eared.plugin:0.0.4-SNAPSHOT @ D:\Projects\eared\plugin\pom.xml
[INFO] Cannot complete the request.  Generating details.
[INFO] Cannot complete the request.  Generating details.
[INFO] {osgi.ws=win32, osgi.os=win32, osgi.arch=x86_64, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: me.fixpoint.eared 0.4.0
[ERROR]   Missing requirement: me.fixpoint.eared 0.4.0 requires 'bundle com.android.ide.eclipse.adt 0.0.0' but it could not be found
[ERROR]
[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from me.fixpoint.eared 0.4.0 to bundle com.android.ide.eclipse.adt 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from me.fixpoint.eared 0.4.0 to bundle com.android.ide.eclipse.adt 0.0.0.", "No solution found because the problem is unsatisfiable."]

I've tried following advice from this thread: https://groups.google.com/group/adt-dev/tree/browse_frm/month/2012-07/39c71d32169b9569?rnum=51&_done=/group/adt-dev/browse_frm/month/2012-07?&pli=1 and creating a p2 update site at http://dl.dropbox.com/u/1236385/adt, but the error is the same:

[INFO] Adding repository http://dl.dropbox.com/u/1236385/adt
[INFO] Fetching content.jar (0B of 18,09kB at 0B/s) from http://dl.dropbox.com/u/1236385/adt/
[INFO] 1 operation remaining.
[INFO] Fetching content.jar (3,97kB of 18,09kB at 0B/s) from http://dl.dropbox.com/u/1236385/adt/
[INFO] Adding repository http://dl.dropbox.com/u/1236385/adt
[INFO] Fetching artifacts.jar (0B of 783B at 0B/s) from http://dl.dropbox.com/u/1236385/adt/
[INFO] 1 operation remaining.
[INFO] Fetching artifacts.jar (783B of 783B at 0B/s) from http://dl.dropbox.com/u/1236385/adt/
[INFO] Resolving dependencies of MavenProject: me.fixpoint.eared:me.fixpoint.eared.plugin:0.0.4-SNAPSHOT @ D:\Projects\eared\plugin\pom.xml
[INFO] Cannot complete the request.  Generating details.
[INFO] Cannot complete the request.  Generating details.
[INFO] {osgi.ws=win32, osgi.os=win32, osgi.arch=x86_64, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: me.fixpoint.eared 0.4.0
[ERROR]   Missing requirement: me.fixpoint.eared 0.4.0 requires 'bundle com.android.ide.eclipse.adt 0.0.0' but it could not be found
[ERROR]
[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from me.fixpoint.eared 0.4.0 to bundle com.android.ide.eclipse.adt 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from me.fixpoint.eared 0.4.0 to bundle com.android.ide.eclipse.adt 0.0.0.", "No solution found because the problem is unsatisfiable."]

Why can't it find com.android.ide.eclipse.adt?

Just in case, here's link to the master POM.


Solution

  • Old-style update sites only have incomplete metadata about the dependencies of artifacts. Tycho however needs complete dependency metadata for its dependency resolution mechanism, and therefore cannot use old-style update sites. The dropbox site may be in a modern p2 repository format, but it contains the same, incomplete metadata. (In p2 speak, these entries with incomplete metadata are called "partial IUs".) Before Tycho 0.18.0 these partial IUs were silently dropped, leading to the described resolution problem. This has been improved in Tycho 0.18.0: Since that version, Tycho fails with an error message that points to the repository containing the incomplete metadata.

    To solve your problem, it would be best to ask the project to offer a proper p2 repository. p2 offers different publisher applications to do this. In theory, you could also call the publisher applications yourself, but this should really only be a temporary workaround.