3

我有一个项目正在使用新的RenderScript 支持库,并且还使用 proguard 进行混淆。

使用普通的 RenderScript SDK (android.renderscript.*) 时,Proguard 在代码上工作得很好。当在 proguard 不运行的非发布版本中编译时,代码与 RenderScript 支持库一起工作得很好。

但是,将两者放在一起,结果是这样的:

Warning: android.support.v8.renderscript.RenderScript: can't find referenced class android.os.SystemProperties
Warning: android.support.v8.renderscript.RenderScript: can't find referenced class android.os.SystemProperties
Warning: android.support.v8.renderscript.RenderScriptThunker: can't find referenced method 'android.renderscript.RenderScript create(android.content.Context,int)' in class android.renderscript.RenderScript
      You should check if you need to specify additional program jars.
Warning: there were 2 unresolved references to classes or interfaces.
         You may need to specify additional library jars (using '-libraryjars').
Warning: there were 1 unresolved references to program class members.
         Your input classes appear to be inconsistent.
         You may need to recompile them and try again.
         Alternatively, you may have to specify the option 
         '-dontskipnonpubliclibraryclassmembers'.

我对proguard的了解已经足够危险了。我了解到的一件事是警告/错误消息中的建议往往不一定指向问题的实际原因。这一次也不例外:在警告中实施建议的更改不会导致输出发生任何变化。

RenderScript 支持库可以与 proguard 一起使用吗?如果是这样,是否需要在我的 proguard 配置中添加一些魔法才能使其正常工作?

4

3 回答 3

3

-不要警告 android.support.v8.**

昨天真的遇到了。。。

于 2013-10-23T04:25:41.143 回答
1

对于安卓X

-keep class androidx.renderscript.** { *; }

于 2019-07-17T05:42:50.270 回答
0

结合前两个分析器,在任何使用 Renderscript 的现代应用程序中,您应该将以下内容添加到您的proguard-rules.pro文件中。

# Render Script
-keep class android.support.v8.renderscript.** { *; }
-keep class androidx.renderscript.** { *; }

这将处理使用 Android 支持库或 Android X 的两个应用程序

于 2019-11-18T07:49:07.947 回答