2011-05-27 2 views
3

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

Признаки: -создание проекта Android DX скомпилировать все банки каждый раз, когда проект построен - нет причин для этого, один раз должно быть достаточно, любой, как он это делает каждый раз, каждая сборка может занять много времени вместо того, чтобы принимать секунды, требуется несколько минут.

Реальная проблема:

-Добавление несколько Баночки вызвать затмение к аварии - теперь это с этими настройками (тяжелые баночки) -Xms256m -Xmx1024m -XX: + UseParallelGC -XX : PermSize = 256M -XX: MaxPermSize = 512M

(который на самом деле дает лучшую производительность, так что если затмению компилировать медленно вы можете добавить -XX: + UseParallelGC это поможет) (я не мог установить его в любом highr, чем это , размер кучи java достигает 750 м, когда крушение eclipse, gc не работает во время DX компилирует банку, он пытается между ними, но процессор занят, что не позволяет ему, поэтому в то время, когда он добирается до четвертых пятых банок, каждый из которых имеет 3 МБ, у него есть что-то вроде 600 МБ в куче, вот почему я used gcoverheadlimit)

Компиляция каждого из них или нескольких из них будет скомпилировать его хорошо (в рамках одного и того же проекта Android), проблема в том, что я не могу найти способ их компиляции отдельно (тогда мне нужно будет установить apks на клиентское устройство), и когда я скомбинирую их вместе, сбой Eclipse.

Я попытался скомпилировать их один за другим, используя cmd и DX, хотя он построен, когда я строю проект в eclispe, он перестраивает его, так что это все равно, что я ничего не делал, пытался также сверлить банки DEX-файлам, не помогло.

я красный много сообщений относительно к Java размер кучи, это не мой случай, я даже использовал gcoverheadlimit, слишком много банок приводит к краху, если кто-то есть идеи/решения я салютует его/ее ...

Подводя итог всему: Я хочу конвертировать java-банки в формат Dalvik, а затем добавить его в качестве ресурса в проект Android, поэтому, когда проект будет выполнен, ему не нужно будет преобразовывать банки в формат Dalvik, потому что это уже сделано.

+0

любое обновление по этому вопросу? Я столкнулся с той же проблемой, когда я создаю apk, используя банку размером ~ 9 МБ – JeffE

+0

привет, есть ли какие-либо обновления по этому поводу? Я также использую много файлов jar, и он продолжает говорить об ошибке размера кучи во время преобразования в apk. Если да, сообщите мне об этом. Благодарим вас заранее. =) – AuroraBlaze

ответ

2

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

Признаки: скомпилирование большой банки и нескольких банок, приводящих к сбою в затмении, когда оно не выдает сообщение об ошибке: проблема с записью вывода: opcode == null, преобразование в формат Dalvik не выполнено с ошибкой 2.

Причина: DX не может обрабатывать больше, чем может содержать в строке 16 бит, таким образом, нет возможности включить (по крайней мере, не в среднее время) больше, чем длину этой строки.

Результат: невозможно запрограммировать сложные приложения для Android как один APK.

Совет для разработчиков Android (я не совсем уверен, как вы его построили): вы можете использовать arraylist для этих строк, каждый из которых записывается в свою очередь в файл classes.dex, тогда будет нет предела написанию кода для одного APK и/или добавлению столько фляжек, сколько нужно разработчику, это предположение, поэтому сделать это будет нелегко, но не слишком сложно, определенно не тем, кто сделал Android, согласен?

Обходное решение: извините, но у меня пока нет обходного пути, мне понадобилось некоторое время, чтобы понять эту проблему, потому что Eclipse разбился, и я не получил «opcode == null», сообщение об ошибке, поэтому я подумал что это вопрос затмения, я буду рад получить второе и третье мнение по этому поводу.

0

После баночки были построены затем добавить их в качестве внешних JAR-файлы ...

В Eclipse выберите меню «Project» -> «Свойства», затем «Java Build Path». Выберите вкладку «Библиотеки», затем нажмите кнопку «Добавить внешние JAR ...», затем просмотрите и добавьте их.

+0

Хотелось бы, чтобы все было так просто, чтобы строить банки - это легкая часть, их импортировать достаточно просто, тяжелая часть состоит в том, чтобы согласовать их с форматом Dalvik и добавить их в проект Android, который должен быть построен на одном APK, если у кого-то есть идея обойти это ... – Ben

+0

@Ben: Извините, я не должен был его импортировать - это не то, что нужно делать. Добавьте их в путь сборки Java. Я отредактировал свой ответ, чтобы показать это. После добавления в качестве внешних JAR-модулей они не включены в процесс сборки Project. – Squonk

+0

Первое спасибо за ответ, я прикину его, я в значительной степени стал мастером импорта банок, я использовал все методы, доступные в eclipse, однако моя проблема заключается не в добавлении банок, моя проблема в том, что вы компилируете андроид проект все ресурсы преобразуются в Dalvik, используя DX, в этом крушении затмения конверсии, и это связано с тем, что я добавляю слишком много банок, но я должен иметь их все, и, как я уже говорил, преобразование этих банок в dalvik занимает слишком много времени, каждый раз, когда я компилирую проект, он берет все банки, которые я добавил, и преобразовываю их в Dalvik, я должен найти обходное решение для этого – Ben

0

У меня была та же проблема. Было много сообщений «Dx processing ...» в подробном выводе, и для создания classes.dex потребовалось около 3-4 минут (3,4 Мб). Это было очень медленно, и я почувствовал бунт. Затем я сделал исследование и выяснил, что причиной проблемы были неправильные настройки JVM eclipse (eclipse.ini). BTW, я получил эту неприятную конфигурацию из некоторого ответа stackoverflow с более чем 100 принимающими.

Пожалуйста, убедитесь, что eclipse.ini не содержит следующую строку:

 

    CompileThreshold=5 

я удалил эту строку и теперь компиляция занимает ~ 10 секунд !!! Кроме того, теперь я использую ParallelGC вместо G1GC в конфигурации eclipse, потому что он более стабилен и не разбивает мою среду IDE.

Итак, ваша главная задача - пересмотреть ваш eclipse.ini и избавиться от всех подозрительных и экспериментальных параметров.

Смежные вопросы