Wednesday, October 12, 2011

使用Proguard和Vpon時廣告出不來

今天遇見一個技術問題︰

即使在已匯入Vpon JAR檔的狀況下,
在做Proguard(程式碼模糊混淆)產出程式,
Vpon仍會顯示沒有正確的Adapter接收廣告
造成廣告無法正常顯示的問題。

出錯的LOG如下︰

Caught an exception in adapter:
java.lang.Exception: Invalid adapter
    at com.adwhirl.a.a.a(Unknown Source)
    at com.adwhirl.AdWhirlLayout.d(Unknown Source)
    at com.adwhirl.b.run(Unknown Source)

這個問題後來我發現︰
如果直接使用debug模式輸出程式時,
Vpon廣告是能顯示的。
原來是被Proguard混淆時,
打亂了廣告接收器(Adapter)。

解決方法︰
在Proguard腳本(proguard.cfg)中加入以下程式碼
-dontwarn com.vpon.**
-dontwarn javadoc.**
-dontwarn properties.**
-dontwarn com.adwhirl.**
-keep class com.vpon.** { *; }
-keep class javadoc.** { *; }
-keep class properties.** { *; }
-keep class com.adwhirl.** { *; }
 

上面這些是adOn.jar和adwhirl.jar裡所有的套件名稱,
在劇本裡下這些指令就能跳過混淆這2組jar檔,
讓廣告順利產出。

相關文章︰


2 comments:

Anonymous said...

請問一下!使用Proguard會影響ITelephony.aidl文件嗎?如果會的話,那proguard.cfg要增加什麼參數?

小鰻 said...

這部份我沒有相關經驗。

我比較直接的做法都是直接將apk檔輸出,如果有衝突(譬如檔案包不出來),再依錯誤訊息去找相關討論。

抱歉沒能幫上忙,可能真的要從Proguard官網去追溯相關文章。