2016-07-13 1 views
1

У меня есть класс AB в приложении для Android. Этот класс имеет один открытый интерфейс INF. Когда я пытаюсь сделать сборку выпуска с ProGuard включен, говорит, чтоКак сохранить открытый интерфейс внутри класса в proguard в android

ошибка: не удается найти класс символа INF

В я добавил мой proguard.cfg файл следующих строк:

-keep public interface com.some.somemore.AB$INF {*;} 
-keep class com.some.somemore.AB {*;} 

Пожалуйста, помогите, почему эта ошибка наступает.

public class AB { 

public interface INF { 
    public void Ready(); 
    public void Error(int error); 
    public void Click(); 
    public void Complete(); 
    public void Dismiss(); 
} 

}

Вот Краш Бревна

E/AndroidRuntime: FATAL EXCEPTION: main 
               Process: com.sliq.android.sliq, PID: 14828 
               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sliq.android.sliq/org.nexage.sourcekit.vast.activity.VASTActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.nexage.sourcekit.vast.a.e.a()' on a null object reference 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388) 
                at android.app.ActivityThread.access$800(ActivityThread.java:148) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:135) 
                at android.app.ActivityThread.main(ActivityThread.java:5312) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:372) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.nexage.sourcekit.vast.a.e.a()' on a null object reference 
                at org.nexage.sourcekit.vast.activity.VASTActivity.onCreate(Unknown Source) 
                at android.app.Activity.performCreate(Activity.java:5953) 
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128) 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)  
                at android.app.ActivityThread.access$800(ActivityThread.java:148)  
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)  
                at android.os.Handler.dispatchMessage(Handler.java:102)  
                at android.os.Looper.loop(Looper.java:135)  
                at android.app.ActivityThread.main(ActivityThread.java:5312)  
                at java.lang.reflect.Method.invoke(Native Method)  
                at java.lang.reflect.Method.invoke(Method.java:372)  
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)  
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)  

Я использую этот проект с открытым исходным кодом https://github.com/nexage/sourcekit-vast-android как модуль в моей студии проекта. Его сбой внутри проекта с открытым исходным кодом под названием VAST. Я добавил VAST в качестве зависимости от модуля внутри моего проекта студии. Я включил proguard для моего проекта студии, а также модуль VAST. Вот файл proguard.config я использую для VAST модуля:

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontskipnonpubliclibraryclassmembers 
-dontpreverify 
-dontshrink 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keep class org.nexage.sourcekit.vast.VASTPlayer {*;} 
-keep interface org.nexage.sourcekit.vast.VASTPlayerListener {*;} 
-keep class org.nexage.sourcekit.vast.model.** {*;} 
-keep class org.nexage.sourcekit.vast.processor.** {*;} 
-keep class org.nexage.sourcekit.vast.activity.** {*;} 
-keep class org.nexage.sourcekit.util.** {*;} 
+0

Опубликовать свой класс и код интерфейса –

ответ

0

Попробуйте с

-keepclassmembers class com.some.somemore.AB { *; } 

Надеется, что это помогает

+0

все еще такая же ошибка –

1

Вашего осуществления должны выглядеть следующим образом:

import com.my.packagename.AB; 

public class MainActivity extends ActionBarActivity implements AB.TestInterface { 

// other stuff 

@Override 
public void Ready() { 

} 

@Override 
public void Error(int error) { 

} 

@Override 
public void Click() { 

} 

@Override 
public void Complete() { 

} 

@Override 
public void Dismiss() { 

} 

} 

Вам необходимо импортировать родительский класс, надеясь, что это вам поможет.

+0

Вы имеете в виду, что класс AB должен быть импортирован в класс активности. Если да, то я уже импортировал его. Я получаю эту ошибку только при включенной proguard. Если я отключу его. Он работает –

+0

@PardeepKumar, создайте отдельный интерфейс вместо внутреннего класса. –

+0

Я могу попробовать это. Я просто хочу понять, что случилось с этим. –