Dexguard не шифрует классы и создает проблемы с манифестом - PullRequest
0 голосов
/ 20 ноября 2018

Я использую DexGuard, создаю проект в режиме релиза с этим:

proguardFile getDefaultDexGuardFile('dexguard-library-release-aggressive.pro')

Все было хорошо, но теперь мне нужно не шифровать другой класс, я добавил строки, чтобы не шифровать мой ExampleBuilder:

-verbose

# do not encrypt API package
-keep public class com.justexample.api** {
public protected private *;
}

#these 3 lines below I added
-keep public class com.justexample.ExampleBuilder.** {
    public protected private static *;
}

-repackageclasses com.justexample

И теперь, когда я пытаюсь использовать библиотеку, я получаю сообщение об ошибке:

error: attribute 'android:name' in <service> tag must be a valid Java class name.
Message{kind=ERROR, text=error: attribute 'android:name' in <service> tag must be a valid Java class name.

Сгенерированный манифест (из AAR, который влияет на dexguard), из которого эта ошибка, фрагмент где ошибка:

<service
        android:name="com.justexample.services.゚"
        android:exported="false" />

1 Ответ

0 голосов
/ 20 ноября 2018

android: имя должно содержать ссылку на ваш путь к классу, который представляет активность.Он не должен содержать никаких специальных символов или пробелов.

Я верю в ваш манифест под android: у тега name у вас есть дополнительный пробел и полная остановка (.)

попробуйте удалить его и проверить

<service
        android:name="com.justexample.services"
        android:exported="false" /> 

Если у вас есть конкретное имя для вашего класса обслуживания, укажите его полностью и отметьте, как показано ниже

  <service
            android:name="com.justexample.services.SampleIntentService"
            android:exported="false" /> 

Обновление: Из ваших комментариев

Уберите эту строку из Дексгарда и отметьте

-repackageclasses com.justexample
...