2017-05-30 30 views
9

Android projemi Kotlin'e dönüştürdükten sonra bir sürüm oluşturma yapılamıyor, bu hata Proguard ile ilgili görünüyor.Kotlin'de bir sürüm oluşturma yapılamıyor

Ben

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 

gibi 155 uyarıları görür ve ben Oluşturma başarılı false'için true build.grade bu direktifleri değiştirirseniz inşa

Error:Execution failed for task ':MyApp:transformClassesAndResourcesWithProguardForFreeRelease'. 
> Job failed, see logs for details 

ile başarısız olur.

minifyEnabled true 
shrinkResources true 

Sorunun ne olabileceği konusunda herhangi bir öneriniz var mı?

Düzenleme:

proguard dosyaları aşağıdaki gibidir:

proguard-android.txt

# This is a configuration file for ProGuard. 
# http://proguard.sourceforge.net/index.html#manual/usage.html 

-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 

# Optimization is turned off by default. Dex does not like code run 
# through the ProGuard optimize and preverify steps (and performs some 
# of these optimizations on its own). 
-dontoptimize 
-dontpreverify 

# If you want to enable optimization, you should include the 
# following: 
# -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* 
# -optimizationpasses 5 
# -allowaccessmodification 
# 
# Note that you cannot just include these flags in your own 
# configuration file; if you are including this file, optimization 
# will be turned off. You'll need to either edit this file, or 
# duplicate the contents of this file and remove the include of this 
# file from your project's proguard.config path property. 

-keepattributes *Annotation* 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgent 
-keep public class * extends android.preference.Preference 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
-keep public class com.android.vending.licensing.ILicensingService 


# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

# The support library contains references to newer platform versions. 
# Don't warn about those in case this app is linking against an older 
# platform version. We know about them, and they are safe. 
-dontwarn android.support.** 
-dontwarn io.codetail.animation.** 

imza yapılandırma olarak tanımlanır

# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in /home/francesc/droids/android-sdk-linux/tools/proguard/proguard-android.txt 
# You can edit the include path and order by changing the ProGuard 
# include property in project.properties. 
# 
# For more details, see 
# http://developer.android.com/guide/developing/tools/proguard.html 

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

-keep class com.nineoldandroids.** { *; } 
-dontwarn io.codetail.animation.** 

proguard-rules.txt

aşağıda gösterilen
signingConfigs { 
    myConfig { 
     Properties keyProps = new Properties() 
     keyProps.load(new FileInputStream(file('../release.properties'))) 
     storeFile file(keyProps["store"]) 
     keyAlias keyProps["alias"] 
     storePassword keyProps["storePass"] 
     keyPassword keyProps["keyPass"] 
    } 
} 

buildTypes { 
    release { 
     proguardFiles 'proguard-android.txt', 'proguard-rules.txt' 
     minifyEnabled true 
     shrinkResources true 
     signingConfig signingConfigs.myConfig 
    } 
} 
+0

yararlı olabilir https://stackoverflow.com/questions/33547643/how-to-use-kotlin-with-proguard/34159813#34159813 – Redman

+0

Etkinliğinizde herhangi bir özel görünüm var mı? Muhtemelen –

+0

, bunu sadece kaynak etkilediğinden "true" shrinkResources ayrılmak verebiliyor ancak kod – cyanide

cevap

0

deneyin bu konuda kimin sorumlu olduğunu undestand ProGuard olmadan yapı yapmak.

İlgili konular