Xamarin.Forms与嵌入式资源和Proguard有关的问题

时间:2019-02-07 18:53:25

标签: xamarin.forms proguard

我有两个不同的应用程序,都使用Xamarin.Forms项目根目录中包含的文件。这些文件在“构建操作”下设置为“嵌入式资源”,然后使用下面的代码提取。

var assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream("test.text.json");

除了涉及Proguard之外,此方法对所有编译选项(例如AoT和LLVM)都适用。如果使用Proguard编译应用程序,它将立即强制关闭,而无法读取文件。

到目前为止,我已经尝试使用自定义的proguard.cfg文件为项目中的类创建异常,该文件在VS 2017中设置为我的“ ProguardConfiguration”。

-dontobfuscate
-keep class com.companyname.test** { *; }
-keeppackagenames com.companyname.test**

这没有产生任何结果。该应用程序仍然立即崩溃。只要没有在本地加载任何文件,其他所有使用Proguard的应用程序都可以正常工作。我应该使用其他方式来加载文件还是可以排除Proguard配置中的其他内容以使其工作?

编辑:只需更新此帖子即可引起人们对解决方案的注意。原来我已经解决了这个问题,但是由于某种原因,它似乎又回来了。这是日志输出:

android.view.InflateException: Binary XML file line #20: Binary XML file 
line #20: Error inflating class android.support.v7.widget.FitWindowsFrameLayout

这是我已经在我的常规Proguard规则中添加的内容,而无需在项目中添加特殊的Proguard配置。这次,作为解决方案,我仅将这两行添加到我的proguard.cfg文件中:

-keep public class android.support.v7.widget.** { *; }
-dontwarn android.support.**

感谢阿伦·托马(Alen.Toma)向我指出正确的方向。

0 个答案:

没有答案