Невозможно включить сторонние файлы jar в приложение Android с помощью плагина maven-android-plugin - PullRequest
3 голосов
/ 16 апреля 2011

Я пытаюсь использовать предоставленные образцы, но когда я добавляю другой jar-файл, уже созданный с помощью POJO, я больше не могу скомпилировать приложение

            <plugin>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>maven-android-plugin</artifactId>
                <version>2.8.4</version>
                <configuration>
                    <sdk>
                        <platform>9</platform>
                    </sdk>
                    <emulator>
                        <avd>23</avd>
                        <wait>10000</wait>
                        <!--<options>-no-skin</options>-->
                    </emulator>
                    <zipalign>
                        <verbose>true</verbose>
                    </zipalign>
                    <deleteConflictingFiles>true</deleteConflictingFiles>
                    <undeployBeforeDeploy>true</undeployBeforeDeploy>
                </configuration>
            </plugin>

Когда я использую созданную мной банку, я получаю эту ошибку OOM

    [INFO] solution is to recompile the class from source, using an up-to-date compiler
    [INFO] and without specifying any "-target" type options. The consequence of ignoring
    [INFO] this warning is that reflective operations on this class will incorrectly
    [INFO] indicate that it is *not* an inner class.
    [INFO]
    [INFO] UNEXPECTED TOP-LEVEL ERROR:
    [INFO] java.lang.OutOfMemoryError: Java heap space
    [INFO]  at com.android.dx.rop.code.RopMethod.calcPredecessors(RopMethod.java:153)
    [INFO]  at com.android.dx.rop.code.RopMethod.labelToPredecessors(RopMethod.java:95)
    [INFO]  at com.android.dx.dex.code.RopTranslator.pickOrder(RopTranslator.java:345)
    [INFO]  at com.android.dx.dex.code.RopTranslator.translateAndGetResult(RopTranslator.java:205)
    [INFO]  at com.android.dx.dex.code.RopTranslator.translate(RopTranslator.java:102)
    [INFO]  at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:289)
    [INFO]  at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
    [INFO]  at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
    [INFO]  at com.android.dx.command.dexer.Main.processClass(Main.java:369)
    [INFO]  at com.android.dx.command.dexer.Main.processFileBytes(Main.java:346)
    [INFO]  at com.android.dx.command.dexer.Main.access$400(Main.java:59)
    [INFO]  at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:134)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122)
    [INFO]  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
    [INFO]  at com.android.dx.command.dexer.Main.processOne(Main.java:313)
    [INFO]  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)
    [INFO]  at com.android.dx.command.dexer.Main.run(Main.java:185)
    [INFO]  at com.android.dx.command.dexer.Main.main(Main.java:166)
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] Chapter 06: Mobile Device Parent .................. SUCCESS [0.359s]
    [INFO] Chapter 06: Mobile Device Application ............. FAILURE [1:27.859s]

Я даже пытался увеличить память

 set JAVA_OPTS="%JAVA_OPTS% -Xmx512m -XX:MaxPermSize=768m"

Но почему-то все-таки кончились.

Теперь, когда я пытаюсь использовать другую банку от кого-то другого, произнесите Crest, который заявляет, что он работает "из коробки" с android:

    <dependency>
        <groupId>org.codegist.crest</groupId>
        <artifactId>codegist-crest</artifactId>
    </dependency>

Затем я пытаюсь собрать и получить эту ошибку:

    [INFO] trouble processing "javax/xml/bind/annotation/adapters/CollapsedStringAdapter.class":
    [INFO]
    [INFO] Ill-advised or mistaken usage of a core class (java.* or javax.*)
    [INFO] when not building a core library.
    [INFO]
    ...
    [INFO] If you are legitimately using some code that happens to be in a
    [INFO] core package, then the easiest safe alternative you have is to
    [INFO] repackage that code. That is, move the classes in question into
    [INFO] your own package namespace. This means that they will never be in
    [INFO] conflict with core system classes. JarJar is a tool that may help
    [INFO] you in this endeavor. If you find that you cannot do this, then
    [INFO] that is an indication that the path you are on will ultimately
    [INFO] lead to pain, suffering, grief, and lamentation.

Итак

  1. как определить, какие классы я могу использовать с приложением для Android?

  2. Как мне структурировать общий домен, который

1 Ответ

2 голосов
/ 18 мая 2011

Относительно ООМ: попробуйте установить MAVEN_OPTS = "- Xmx512m" вместо JAVA_OPTS

Относительно основного класса: информация, которую вы получили, довольно информативна. Jar, который вы включили, содержит несколько классов в основном пространстве имен, что недопустимо. Вы можете использовать jarjar как предложено.

  1. Вы можете использовать классы, которые перечислены здесь: http://developer.android.com/reference/packages.html
  2. кажется неполным вопросом
...