1. 程式人生 > >Android 程式碼混淆can’t find referenced class問題解決方案

Android 程式碼混淆can’t find referenced class問題解決方案

前面一文介紹了Android使用ProGuard程式碼混淆技術,不過對於某些引入了第三方jar包的專案可能在匯出的時候會報錯,這時就需要對proguard配置檔案進行一些研究才能解決問題了。

ProGuard 程式碼混淆後匯出警告:can’t find referenced class

20131004120218

一、這時候最簡單的解決方法:

對於有的第三方jar,可能已經進行過程式碼混淆了,在這裡就要保持,例如百度的地圖包jar。保持jar,避免混淆的程式碼如下:

-keep class com.baidu.mapapi.** {*;}

不混淆com.baidu.mapapi包中的所有程式碼,類名、方法、變數等。

在此感謝作者,解決了我的問題,其實最終方案很簡單,新增兩行就好了:

其實找不到引用的這個類是第三方包裡面的,而且很多時候我們只需要打亂自己的程式碼就行了,第三方包的程式碼就是否要打亂就不要管了。

我們可以使用:

-dontwarn com.xx.bbb.**
-keep class com.xx.bbb.** { *;}

引數來保持第三方庫中的類而不亂,-dontwarn和-keep 結合使用,意思是保持com.xx.bbb.**這個包裡面的所有類和所有方法而不混淆,接著還叫ProGuard不要警告找不到com.xx.bbb.**這個包裡面的類的相關引用

配置好後,重新打包,一切OK!而且程式能正確執行。

以上是本人在寫混淆配置檔案的時候遇到的錯誤解決方法

本人在專案中開發使用ant批量打包混淆的配置檔案已經上傳 點選開啟連結

http://download.csdn.net/detail/fancylovejava/8551463

記錄下,以後再做其他專案批量打包的時候可以借鑑下!

相關推薦

Android 程式碼混淆cant find referenced class問題解決方案

前面一文介紹了Android使用ProGuard程式碼混淆技術,不過對於某些引入了第三方jar包的專案可能在匯出的時候會報錯,這時就需要對proguard配置檔案進行一些研究才能解決問題了。 ProGuard 程式碼混淆後匯出警告:can’t find referen

Android程式碼混淆第三方jar,can't find referenced class解決

這個看似簡單的問題困擾了我好久了,我已經google了很多相關的資訊了,但是在我看來總覺得他們說得不夠全面,包括官方的文件(ps:可能是我的英語瞭解能力不夠好^_^),好吧在這裡我就來個比較全面、嚴密一點的分析吧,希望能幫到遇到同樣問題的你,獻醜了: 1. 問題的產生原因

android工程引入第三方jar包,發現混淆後無法簽名,並出現can't find referenced class

1 出現can't find referenced class的警告時,可以在proguard.cfg中新增-ignorewarnings或-dontwarn來解決。 2 對於有的第三方jar,可能已經進行過程式碼混淆了,在這裡就要保持(防止出現空指標或者其他莫名其妙的問題

Eclipse打包Android專案時用到proguard.cfg後,出現的Warning:can't find referenced class問題的解決方案

          這個看似簡單的問題困擾了我好久了,我已經google了很多相關的資訊了,但是在我看來總覺得他們說得不夠全面,包括官方的文件(ps:可能是我的英語瞭解能力不夠好^_^),好吧在這裡我就來個比較全面、嚴密一點的分析吧,希望能幫到遇到同樣問題的你,獻醜了:

can't find referenced class okhttp3.internal.http.HttpEngine錯誤解決

工程build apk時報錯 Error:11:23:00.724 [ERROR] [system.err] Warning: okhttp3.logging.HttpLoggingInterce

Eclipse打包Android項目時用到proguard.cfg後,出現的Warning:can't find referenced class問題的解決方式

引入 能夠 nbsp 路徑 方法 ont span rar font Warning: can‘t find superclass or interface Warning: can‘t find referenced class 這兩個問題的解決方法:

解決:“java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut myMethod”問題!

Spring版本:2.5.6 AspectJ是Spring自帶的lib。 Jdk版本:1.7.0_17 在配置沒問題的情況下,報:java.lang.IllegalArgumentException:

'latin-1' codec can't encode character 的解決方案

分析一個字串,並更新資料庫的時候,出現瞭如下錯誤: 'latin-1' codec can't encode character u'\u017e' in position 11: ordinal not in range(256) 進行了一些研究發現,原因是,資料庫的編碼

程式碼混淆與反射的衝突(小小解決方案)~!

程式碼混淆與反射的衝突 反編譯Android的程式碼,大部分人都知道了,防反編譯的方法也大部分都知道了(儘管它不一定一直有效,但起碼像我這種水平的人,沒辦法看到混淆之後的Java程式碼, 最可惡的是沒有註釋= =)。 最近才發現,我的程式碼在很久之後設定了混淆,也在很久之前不知道什麼時候不小心把程式碼混淆給

java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut aspectJMethod

嚴重: Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'indexController' defined i

AspectJ報錯:error at ::0 can't find referenced pointcut XXX

概述 在Spring boot專案中,使用Aspectj實現AOP面向切面程式設計,以處理一些請求日誌或者對某些方法進行一些監控的時候,報了【can't find referenced pointcut】的錯誤。 報錯資訊如下: Initialization of bean failed; nest

在練習 spring aop遇到“java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut myM

       遇到這個問題的時候是在, 使用 ssh 做spring aop 日誌功能的時候遇到.     轉  原文地址   在網上找了很多答案,都不知道再說什麼,後來找到一個 跟我場

android studio Gradle如果不能找依賴的包(Gradle can't find dependency (Android support library)),教你如何解決

升級android studio1.0.0正式版以後,突然發現Gradle不能夠新增其他的依賴包,折騰來許久終於找到了解決的辦法,特發帖紀念,留給後面的同學學習。 如果你的android studi

android ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener"

I/art: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java

解決Ubuntu下執行SDK Manager 出現:android:can't find sdkmanager.jar問題!!

只能說自己太小白了!!!!花了一天時間,師傅一分鐘不到解決了。不能對著文件照本宣科!官網的文件上只有一個android,我就只輸入了這個命令。必須是: ./android 唉,傷心明顯被師傅鄙視死了。。。。。你們在tools目錄下試試這個命令~加上前面的./就完事了。 由

Proguard打包混淆報錯:can't find superclass or interface

在Eclipse打包工程時報如下錯誤: [2014-01-06 08:58:44 - emp_android] Proguard returned with error code 1. See co

Android studio中遇到Can't find bundle for base name configd, locale zh_CN解決辦法

最近一個專案中需要從properties中讀取資訊,結果報Can't find bundle for base name configd, locale zh_CN,百度許久不得解google一下解決問題參考地址點選開啟連結 解決辦法: 1.將main資料夾新增到資原始檔(

redis-dump之cant find gem redis-dump

cti 服務器 cron rvm 工具 編寫 再次 except allow 基於上篇博文CentOS6.10安裝redis-dump小插曲繼續下面的介紹 一、redis-dump工具簡單說明 退出bash shell窗口重新登錄bash [root@MQ1-S ~]# f

NC65 外部交換平臺報錯:java.lang.Exception:can't find user pfxx

問題現象:通過外部交換平臺傳送xml檔案                   手動載入能正常傳送,但是通過程式碼拼xml檔案傳送卻報錯了 原因是:程式碼傳送的URL裡面少寫了制單人屬性:operator 解決方法:傳送url調整,新增operator 屬性 即制單人 需

Android Toast顯示 Can't create handler inside thread that has not called Looper.prepare()問題

今天在開發的時候 在子執行緒中呼叫了一個Toast結果報錯 Can’t create handler inside thread that has not called Looper.prepare() 錯誤程式碼示例: public void sho