Tag: ProGuard

Kotlin,proguard,Android架构组件

我有一个在那里有一个实时数据变量的视图模型。 我的活动观察它,以更新用户界面。 在调试中,这一切都很好。 当启用proguard时,它不再观察livedata的变化。 我已检查实时数据是否正确更新。 但是,观察者回调从来没有被调用过。 有关如何配置Proguard和什么可能是错误的任何提示? 我试图保持我的包类没有成功: -keep class com.example.myapp.** { *; } 这里是ViewModel: class SplashViewModelImpl : JapetViewModel(), SplashViewModel { private val isTimeUp = MutableLiveData<Boolean>() init { isTimeUp.value = false Observable.timer(2000L, TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe { isTimeUp.postValue(true) } } override fun isTimeUp(): LiveData<Boolean> = isTimeUp } 而活动: class SplashActivity : MyBaseActivity() { lateinit var […]

Kotlin:ProGuard擦除属性属性

TL; DR :在启用了proguard的情况下,使用反射时,我的属性看起来是私有的,不可为空且没有注释,尽管proguard配置应该保留所有这些属性。 我有一些简单的data class与公共属性作为我的Android应用程序中的数据模型。 后来,当做所述类的泛型[de]序列化时,我像这样过滤属性列表: val properties = instance::class.memberProperties .filter { it.visibility == KVisibility.PUBLIC } // && some other conditions, unrelated here .filterIsInstance<KMutableProperty<*>>() 它正常工作在我的调试版本(我的意思是选择我想要的属性)。 但是,在执行释放构建时,如果proguard处于活动状态, 则结果为空 。 为了检查原因,我记录了关于一个类的属性的所有相关内容 – 显示它们的visibility字段读取PRIVATE (并且所有其他属性在调试版本上保持不变)。 我已经有一个线程在proguard配置保持所有的模型: -keepclassmembers class * extends com.models.package.name.BaseModel { *; } 我之前试过这个,结果相同: -keep class com.models.package.name.** { *; } 为什么/ proguard如何影响房屋的可见度? 我应该修改配置吗? 还是我在这里错过了别的东西? 更新 :似乎知名度不是唯一的事情。 prop.returnType.isMarkedNullable也不起作用,对于声明为空的属性返回false […]

Kotlin,Proguard和lambda

我有一个整洁的功能,在视图上做一些事情: fun<T : View> Activity.withView(nr : Int, fn : T.()->Unit) { (findViewById(nr) as T?)?.fn() } 现在,当我在我的活动中使用这个函数: withView<Spinner>(R.id.spinner_toolbar) { adapter = AdapterIndeksuDlaSpinnera(this@NewMainActivity, PlaylistIndex) …一切正常,直到我使用ProGuard。 我可以看到AdapterIndeksuDlaSpinnera如预期的AdapterIndeksuDlaSpinnera受到了损坏,但是当程序用“无法加载类AdapterIndeksuDlaSpinnera”(同时它应该抱怨损坏的适配器名称)进行编程时,程序失败。 我能够通过禁用所有可以在我的withView使用的适配器来创建速度解决方法 -keep class pl.qus.xenoamp.adapter.** { *; } 但我不觉得这是一个好的解决方案(我不知道其他类可以以这种方式失败!)。 所以任何人都可以解释什么是问题,我应该添加什么样的ProGuard行来解决在withView使用的其他类的类似withView ?

kotlin android proguard错误

我试图建立一个apk和proguard,但它失败的消息,如: Error:ProGuard: [radis] Warning: kotlin.dom.EventListenerHandler: can't find superclass or interface org.w3c.dom.events.EventListener Error:ProGuard: [radis] Warning: kotlin.dom.CloseableEventListener: can't find referenced class org.w3c.dom.events.EventTarget Error:ProGuard: [radis] Warning: kotlin.dom.CloseableEventListener: can't find referenced class org.w3c.dom.events.EventListener Error:ProGuard: [radis] Warning: kotlin.dom.DomPackage: can't find referenced class org.w3c.dom.events.MouseEvent Error:ProGuard: [radis] Warning: kotlin.dom.DomPackage: can't find referenced class org.w3c.dom.events.Event 我在我的proguard.cfg中添加了-twtwarn on kotlin.dom。**,但是没有帮助。

与Proguard和Kotlin“找不到引用类”

我遇到了proguard和kotlin的一个奇怪的问题。 我逐渐将一个项目编程转换为kotlin – 目前为止,这个项目已经非常好了,但是在转换某些类时,我却遇到了proguard错误。 我还不能确定这些类的特殊属性是如何破坏的 – 它们似乎与其他类没有区别。 作为一个例子InputStreamWithSource只是: package org.ligi.passandroid.model import java.io.InputStream class InputStreamWithSource(val source: String, val inputStream: InputStream) 它完全在IDE中工作 – 我可以部署到一个设备 – 也所有的UI测试运行良好。 只是当试图组装发布项目我得到proguard错误我不明白: Warning: org.ligi.passandroid.ui.FileUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource Warning: org.ligi.passandroid.ui.FileUnzipControllerSpec: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource Warning: org.ligi.passandroid.ui.InputStreamProvider: can't find referenced class org.ligi.passandroid.model.InputStreamWithSource Warning: org.ligi.passandroid.ui.InputStreamProvider: […]

Kotlin:需要编程Kotlin数据类?

我有一个数据类定义如下 package com.mypackage.model object Model { data class News(val photo: String, val title: String, val description: String) } 当我使用Proguard(即发布版本)进行编译时,我收到并存储在模型中的数据全部为空。 他们仍然在那里即ArrayList listOfNews有预期的检索大小。 但是他们所有的内容都是空的。 调试构建这是好的。 为了解决这个问题,我使用这个proguard规则,并解决了这个问题。 -keep class com.mypackage.model.** { *; } 这是预期的吗? 即所有数据类应该被保护?

Proguard – 不要混淆Kotlin数据类

在我的项目中,我使用AutoValue来处理旧的模型类。 我开始使用Kotlin,我想使用数据类而不是AutoValue。 我想在我的数据层中禁用所有Data类的模糊处理,但要保留包中的其他类的模糊处理。 有没有办法做到这一点? 我希望在我的Proguard文件中有这样的东西: -keepclassmembers data class example.data_layer.** { *; }

Kotlin是否提供额外的安全性?

当我们在Java中开发Android应用程序时,我们可以选择混淆代码并构建APK。 Kotlin有没有什么先进的功能可以做到这一点?

Kotlin和Proguard

在将我的Android项目转换为Kotlin后,我无法构建发布版本,错误似乎与Proguard有关。 我看到155个警告 Warning:com.example.app.activity.MainActivity$1: can't find referenced field 'android.view.View decorView' in program class com.example.app.activity.MainActivity Warning:com.example.app.activity.MainActivity$2: can't find referenced field 'android.os.Handler handler' in program class com.example.app.activity.MainActivity 并且构建失败 Error:Execution failed for task ':MyApp:transformClassesAndResourcesWithProguardForFreeRelease'. > Job failed, see logs for details 如果我在build.grade中将这些指令从true更改为false,则构建成功。 minifyEnabled true shrinkResources true 有什么问题可能是什么建议? 编辑: proguard文件如下: ProGuard的-android.txt # This is a configuration file for ProGuard. # […]

Kotlin Proguard规则枚举?

您好,有人可以请告诉我,如果有任何具体的规则需要科姆林类与枚举? 简单的例子 data class Passenger( var type: Type?, var id: Int, var age: Int ) { companion object { const val AGE_NOT_SET = -1 } enum class Type { ADULT, CHILD, INFANT } constructor() : this(null, 0, 0) } 如果将对象初始化为Passenger(CHILD, 123456, 4)转换为Json,然后再解析回POJO,则会导致Passenger(null, 0,0) 我有 -keepclassmembers,allowoptimization enum * { public static **[] values(); public static ** […]