Сбой Android — layoutopt

#android

#Android

Вопрос:

Я пытаюсь использовать layoutopt (из SDK) для макетов в моем проекте.

Каждый раз, когда я запускаю layoutopt на макете, в котором где-то есть ‘android: layout_weight’, я получаю это исключение:

 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
        at java.lang.String.substring(Unknown Source)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.getAt(DefaultGroovyMethods.java:2794)
        at org.codehaus.groovy.runtime.dgm$213.doMethodInvoke(Unknown Source)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
        at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:44)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at Script5.run(Script5.groovy:15)
        at com.android.layoutopt.uix.rules.GroovyRule$1.call(GroovyRule.java:50)
        at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:105)
        at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:212)
        at com.android.layoutopt.uix.rules.GroovyRule.run(GroovyRule.java:65)
        at com.android.layoutopt.uix.LayoutAnalyzer.applyRules(LayoutAnalyzer.java:246)
        at com.android.layoutopt.uix.LayoutAnalyzer.analyze(LayoutAnalyzer.java:233)
        at com.android.layoutopt.uix.LayoutAnalyzer.analyze(LayoutAnalyzer.java:238)
        at com.android.layoutopt.uix.LayoutAnalyzer.analyze(LayoutAnalyzer.java:221)
        at com.android.layoutopt.uix.LayoutAnalyzer.analyze(LayoutAnalyzer.java:153)
        at com.android.layoutopt.uix.LayoutAnalyzer.analyze(LayoutAnalyzer.java:128)
        at com.android.layoutopt.cli.Main.analyze(Main.java:61)
        at com.android.layoutopt.cli.Main.analyzeFiles(Main.java:53)
        at com.android.layoutopt.cli.Main.main(Main.java:46)
  

У кого-нибудь есть идея, почему это происходит?

Комментарии:

1. Добавили ли вы атрибут android:weightSum в родительский макет?

2. Спасибо за комментарии. Я нашел проблему, проблему со схемами. Я покажу пример в тот момент, когда смогу опубликовать (низкая репутация)

Ответ №1:

Извините, но я нашел свою проблему.

В макете у меня было 2 схемы, указывающие на одно и то же место:

 <LinearLayout android:layout_height="59dp"
    android:layout_width="321dp" android:background="@android:color/transparent"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal">
</LinearLayout>
  

Я не знаю, как это произошло, возможно, ошибка или что-то в этом роде, я этого не писал.
В любом случае, это привело к сбою layoutopt.

Спасибо за попытку помочь