Proguard говорит мне: «Пожалуйста, сначала исправьте вышеупомянутые предупреждения».Как обращаться с ссылками на внешние банки? - PullRequest
15 голосов
/ 10 ноября 2011

Как я могу адресовать предупреждения?

В журнале написано

 [proguard] Note: duplicate definition of library class...
 ...
 [proguard] Note: there were 370 duplicate class definitions.
 [proguard] Initializing...
 [proguard] Warning: abc.cba..: can't find superclass or interface xyz.zyx....
 ...
 [proguard] Note: the configuration refers to the unknown class 'android.app.backup.BackupAgentHelper'...
 ...
 [proguard] Warning: library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlSerializer...
 ...

proguard.cfg

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class !testAppH23.** { *; }

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

Вот сборка Android Ant для Androidс Proguard Включен консольный журнал.Пожалуйста, смотрите ссылку журнал консоли сборки ant

Вот мой build.xml (в основном это оригинальный скрипт ant для Android).Смотрите ссылку TestAppH23 Android Ant Build с включенной Proguard

local.properties

sdk.dir=C:\\androiddev\\android-sdk-windows

build.properties

proguard.config=proguard.cfg
key.store=testapph23-release.keystore
key.alias=alisname
key.store.password=storepassword
key.alias.password=aliaspassword

default.properties

target=android-7

Мои извинения за длинный пост.Приветствуются любые указания в правильном направлении.

ОБНОВЛЕНИЯ1 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="testAppH23.activity"
      android:versionCode="1"
      android:versionName="1.0">
    <application
        android:icon="@drawable/home"
        android:theme="@android:style/Theme.NoTitleBar"
        android:label="@string/app_name"
        >
        <activity
            android:name=".start.StartActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Translucent"
            android:screenOrientation="portrait"
            android:launchMode="singleTask"
            >
            <intent-filter>
                <action
                    android:name="android.intent.action.MAIN"
                    >
                </action>
                <category
                    android:name="android.intent.category.LAUNCHER"
                    >
                </category>
            </intent-filter>
        </activity>
        .....
        <service android:name="com.abc.myjar.papi.PIntentService"></service>

        <service android:name=".service.XyzService"></service>

    </application>


    <uses-library android:name="org.apache.http.entity"/>
    <uses-library android:name="org.apache.http.james.mime4j"/>

    <uses-permission android:name="android.permission...."/>

    <uses-sdk android:minSdkVersion="7" />

</manifest>

1 Ответ

24 голосов
/ 11 ноября 2011

Вы должны заверить ProGuard в том, что некоторые подозрительные конструкции во входных jar-файлах в порядке.

Код вашей программы содержит копии или лучшие версии классов времени выполнения Android в пакете org.xmlpull.v1.Если все в порядке:

-dontwarn org.xmlpull.v1.**
-dontnote org.xmlpull.v1.**

Код вашей программы содержит копии классов времени выполнения Android в org.apache.http.Если все в порядке:

-dontnote org.apache.http.**

Ваш программный код в примерах пакетов относится к AWT, которого нет в Android.Если все в порядке:

-dontwarn java.awt.**

Ваш драйвер PostgreSQL ссылается на многие классы javax, которых нет в Android.Если все в порядке:

-dontwarn org.postgresql.**

И так далее ...

Ср.Руководство по ProGuard> Устранение неполадок

Наконец, ваша конфигурация задает -keep public class !testAppH23.** { *;}, который не позволяет сокращать все публичные классы, кроме тех, что в testAppH23, и их открытые / защищенные / закрытые члены класса./ оптимизировано / затемненный.Это может привести к некоторым (безобидным) заметкам о классах дескрипторов.Для согласованности вы можете удалить «public» для классов или добавить «public protected» для членов класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...