Android - Proguard не может найти классы Android - PullRequest
0 голосов
/ 12 сентября 2011

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

[javac]     /MyPath/LocationReceiver.java:34: cannot find symbol
[javac] symbol  : class Intent
[javac] location: class com.myPath.LocationReceiver
[javac]     public final void onHandleIntent(Intent intent) {

Куда мне обратиться?В моем файле build.xml указаны все правильные пути для Android.

Мой файл сборки -

<property name="src.dir"     value="src/com"/>
<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="input.jar.file" value="${build.dir}/temp.jar"/>
<property name="obfuscated_sdk.jar.file" value="${build.dir}/MyName.jar"/>
<property name="proguard-home" value="/MyPath/proguard4.6" />
<property name="android-home" value="/MyPath/android-sdk" />
<property name="android-version" value="8" />
<property name="android-platform-specific" value="${android-home}/platforms/android-${android-version}" />
<property name="android-jar" value="${android-platform-specific}/android.jar" />

<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="build-sdk" depends="clean" description="compiles the sdk java files"> 
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}"
             destdir="${classes.dir}"
             source="1.6"  
                 debuglevel="lines">
            <classpath>
                <path>
                    <pathelement location="${android-jar}" /> 
                </path>
            </classpath>
    </javac>
</target> 

<target name="create.input.jar" depends="build-sdk"> 
    <jar destfile="${input.jar.file}" basedir="${classes.dir}">
        <manifest>
            <attribute name="MyName" value="v1.0"/>
        </manifest>
    </jar>
</target> 

<target name="Obfuscate" depends="create.input.jar" description="shrink compiled classes">
    <taskdef resource="proguard/ant/task.properties" classpath="/MyPath/proguard4.6/lib/proguard.jar" />
    <proguard>
        -libraryjars "/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar"
        -libraryjars "/MyPath/android-sdk/platforms/android-8/android.jar" 
        -injars      ${input.jar.file}
        -outjars     ${obfuscated_sdk.jar.file}  

</proguard>
    <delete file="${input.jar.file}"/>
    <delete dir="${classes.dir}"/>
    <delete dir="bin"/>
</target>

1 Ответ

0 голосов
/ 12 сентября 2011

Это звучит как проблема пути к классам. Вероятно, это не имеет никакого отношения к ProGuard, поскольку система сборки Android вызывает это только при экспорте подписанного файла .apk. Также я считаю, что Eclipse использует свою собственную систему сборки и не использует build.xml.

Что попробовать:

  1. Убедитесь, что вы создали свой проект как проект Android. Если нет, начните сначала.
  2. Щелкните правой кнопкой мыши имя проекта в проводнике пакетов и выберите «Инструменты Android»> «Исправить свойства проекта».
  3. Откройте свойства проекта, выберите Android и убедитесь, что у вас выбрана цель сборки проекта. Затем выберите «Путь сборки Java» и убедитесь, что библиотека Android отображается на панели «Библиотеки».
...