Dexguard不会加密类,并且会导致清单问题

时间:2018-11-20 08:38:44

标签: android dexguard

我使用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.

生成的清单(来自dexguard影响的AAR)是此错误的来源,片段是错误的地方:

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

1 个答案:

答案 0 :(得分:0)

android:name应该引用了代表活动的类路径。它不能包含任何特殊字符或空格。

我相信您在android:name标签下的清单中会保留一个额外的空格和句号(。)

尝试将其删除并检查

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

如果您对服务类别有一个特定的名称,请完整提及,并按如下所示进行检查

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

更新:根据您的评论

从Dexgaurd删除此行并检查

-repackageclasses com.justexample