Android studio混淆第三方jar包時報錯
今天在做專案的混淆打包的時候。報錯:
Warning:Exception while processing task java.io.IOException: The same input jar [D:\xxApplication\app\libs\universal-image-loader-1.9.5-sources.jar] is specified twice. Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'. > Job failed, see logs for details
仔細看了下報錯資訊,是在混淆libs資料夾下的 universal-image-loader時候報錯了。我是這麼寫的:
-libraryjars libs/universal-image-loader-1.9.5.jar
-libraryjars libs/universal-image-loader-1.9.5-sources.jar
我看大家都是這麼寫的,為啥別人沒有報錯,我的報錯了。我就去查了下universal-image-loader的混淆。看到還有一種寫法:
-dontwarn com.nostra13.universalimageloader.** -keep class com.nostra13.universalimageloader.** { *; }
於是我將之前的刪除了,換成了上面的這種方式。,重新打包。結果打包成功了。看來上面的那種方式對我行不通。暫時不知道原因。以後我libs下的jar包我都打算用下main這種方式忽略混淆:
以 -dontwarn com.nostra13.universalimageloader.**
-keep class com.nostra13.universalimageloader.** { *; }為例,
意思是不混淆com.nostra13.universalimageloader包下的各個類及類裡面的所以域和方法。
把上面的包名換成自己想要忽略的jar下面暴露的包名即可
下面貼出我的混淆檔案:
# Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # 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 *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ############################################# # # 對於一些基本指令的新增 # ############################################# # 程式碼混淆壓縮比,在0~7之間,預設為5,一般不做修改 -optimizationpasses 5 # 混合時不使用大小寫混合,混合後的類名為小寫 -dontusemixedcaseclassnames # 指定不去忽略非公共庫的類 -dontskipnonpubliclibraryclasses # 這句話能夠使我們的專案混淆後產生對映檔案 # 包含有類名->混淆後類名的對映關係 -verbose # 指定不去忽略非公共庫的類成員 -dontskipnonpubliclibraryclassmembers # 不做預校驗,preverify是proguard的四個步驟之一,Android不需要preverify,去掉這一步能夠加快混淆速度。 -dontpreverify # 保留Annotation不混淆 -keepattributes *Annotation*,InnerClasses # 避免混淆泛型 -keepattributes Signature # 丟擲異常時保留程式碼行號 -keepattributes SourceFile,LineNumberTable -keepattributes EnclosingMethod # 指定混淆是採用的演算法,後面的引數是一個過濾器 # 這個過濾器是谷歌推薦的演算法,一般不做更改 -optimizations !code/simplification/cast,!field/*,!class/merging/* ############################################# # # Android開發中一些需要保留的公共部分 # ############################################# # 保留我們使用的四大元件,自定義的Application等等這些類不被混淆 # 因為這些子類都有可能被外部呼叫 -keep public class * extends android.app.Activity -keep public class * extends android.app.Appliction -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.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class * extends android.view.View -keep public class com.android.vending.licensing.ILicensingService # 保留support下的所有類及其內部類 -keep class android.support.** {*;} # 保留繼承的 -keep public class * extends android.support.v4.** -keep public class * extends android.support.v7.** -keep public class * extends android.support.annotation.** # 保留R下面的資源 -keep class **.R$* {*;} # 保留本地native方法不被混淆 -keepclasseswithmembernames class * { native <methods>; } # 保留在Activity中的方法引數是view的方法, # 這樣以來我們在layout中寫的onClick就不會被影響 -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } # 保留列舉類不被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } # 保留我們自定義控制元件(繼承自View)不被混淆 -keep public class * extends android.view.View{ *** get*(); void set*(***); public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); } # 保留Parcelable序列化類不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } # 保留Serializable序列化的類不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; !private <fields>; !private <methods>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # 對於帶有回撥函式的onXXEvent、**On*Listener的,不能被混淆 -keepclassmembers class * { void *(**On*Event); void *(**On*Listener); } # webView處理,專案中沒有使用到webView忽略即可 -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public boolean *(android.webkit.WebView, java.lang.String); } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.webView, jav.lang.String); } #EventBus 3.0 混淆配置 -keepattributes *Annotation* -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe <methods>; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } #---------------------------------1.實體類--------------------------------- -keep class com.hisw.baoshanapplication.entity.** { *; } # Only required if you use AsyncExecutor -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { <init>(java.lang.Throwable); } ####################universal-image-loader######## #-libraryjars libs/universal-image-loader-1.9.5.jar #-keep class com.nostra13.universalimageloader.** {*;} #-dontwarn com.nostra13.universalimageloader.** #butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; } #fastjson -keepattributes Signature -dontwarn com.alibaba.fastjson.** -keep class com.alibaba.fastjson.**{*; } #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} #okio -dontwarn okio.** -keep class okio.**{*;} #Glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } #Retrofit -dontwarn retrofit2.** -keep class retrofit2.** { *; } #RxJava -dontwarn sun.misc.** -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode; } ## ########## 個推混淆 ########## ## ---------------------------------- -dontwarn com.igexin.** -keep class com.igexin.** {*;} # universal-image-loader 混淆 -dontwarn com.nostra13.universalimageloader.** -keep class com.nostra13.universalimageloader.** { *; } #-libraryjars libs/GetuiSDK2.9.0.0.jar #-libraryjars libs/universal-image-loader-1.9.5.jar #-libraryjars libs/universal-image-loader-1.9.5-sources.jar #-libraryjars libs/GetuiSDK2.9.0.0.jar -libraryjars libs/arm64-v8a/libgetuiext2.so -libraryjars libs/armeabi/libgetuiext2.so -libraryjars libs/armeabi-v7a/libgetuiext2.so -libraryjars libs/mips/libgetuiext2.so -libraryjars libs/mips64/libgetuiext2.so -libraryjars libs/x86/libgetuiext2.so -libraryjars libs/x86_64/libgetuiext2.so
單曲迴圈《真實》
每日語錄:
我什麼都沒有忘,但是有些事只適合收藏,不能說,也不能想,卻又不能放。——史鐵生 《我與地壇》
是的。。有些事情就是這樣,忘不得,也碰不得。然後你和這件事。和這件事情相關的人也會越來越遠。是怎麼也拉不近的距離。相識的那一天我們應該怎麼也猜不到,我們可以生疏到這樣。不過即使這樣,我也不後悔和你相遇,不知道你怎麼想的。但願你也可以這樣想。
相關推薦
Android studio混淆第三方jar包時報錯
今天在做專案的混淆打包的時候。報錯:Warning:Exception while processing task java.io.IOException: The same input jar [D:\xxApplication\app\libs\universal-ima
Android Studio 載入第三方jar包並提高該jar包優先順序
framework原始碼編譯出來的jar路徑如下: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar droidlogic原始碼編譯(vendor/amlogic/frameworks/core/ja
解決Android Studio載入第三方jar包,出現包重複載入的問題:
from: http://blog.csdn.net/yy1300326388/article/details/43759267 通過Maven中央庫新增第三方jar包的時候,出現了重複載入jar包的問題,解決辦法很簡單去掉一個不讓它去載入就OK了 一、錯誤
Android Studio引用第三方jar包(例如:使用LitePal)
如何使用LitePal的教程網上很多,不過對於新手,這些教程中遺漏了將第三方jar包拷貝到app-》libs路徑下後,還需要add as library。 這時操作步驟如下: 選中匯入的
Android Studio匯入第三方jar包或依賴工程的方法
一 匯入jar包的方法 1.開啟自己的工程,將需要匯入的jar包copy到libs資料夾下 2.在匯入的jar包處單擊選單 Add As Library 3.點選ok 4.然後這裡就出現了
Android Studio載入第三方jar包
Android Studio剛釋出,相信很多朋友和我一樣,開始嘗試用其開發專案,但新東西總會遇到這樣或那樣的問題,其中令我頭的就是引入第三方的jar包無法編譯的問題,因為是新東西,相關的資訊都比較少,解決問題令我花費了相當長的時間,為了避免各位同仁再走彎路,在此將解決步驟列出來。 1、將jar包放入
android工程引入第三方jar包,發現混淆後無法簽名,並出現can't find referenced class
1 出現can't find referenced class的警告時,可以在proguard.cfg中新增-ignorewarnings或-dontwarn來解決。 2 對於有的第三方jar,可能已經進行過程式碼混淆了,在這裡就要保持(防止出現空指標或者其他莫名其妙的問題
關於Android Studio導出jar包的問題
導出 jar unity android studio 之所以說這個問題,還是因為最開始以為Unity開發要用再說一下我的環境Win7 x64VS2015Unity5.2.2Android Studio 2.3.2JDK1.8我現在Unity與Android相結合是把Android項目導出aa
【我的Android進階之旅】解決Android Studio 運行gradle命令時報錯: 錯誤: 編碼GBK的不可映射字符
定義 編碼 string pretty 出現 mage watermark build issue 原文:【我的Android進階之旅】解決Android Studio 運行gradle命令時報錯: 錯誤: 編碼GBK的不可映射字符 1、問題描述 最近在負責公司基礎
Android Studio 如何打JAR包(修訂版)
AndroidStudio專案打包成jar 前言:在eclipse中我們知道如何將一個專案匯出為jar包,現在普遍AndroidStuido開發,這裡一步一步詳加介紹AS專案打包成jar,jar和arr的使用 在這裡先補充一下我在編譯時遇到的問題: ① Android 打
轉: 錯誤: 編碼GBK的不可對映字元 - Android Studio 生成javadoc文件時報錯
1.執行Tools工具中的Generate JavaDoc報錯 想將專案生成一個幫助文件,結果生成doc時(如下圖所示), 報下面錯誤 錯誤: 編碼GBK的不可對映字元 錯誤: 編碼GBK的不可對映字元 * 璁劇疆SurfaceView鐨勭粦瀹氬叧緋? 解決
android studio開發 匯出Jar包並在unity3d中使用
【匯出JAR包】 首先模組專案只能是library,而不能是application。如果除了打包程式碼還有資源的話,需要打包成aar包。 1、在app目錄下的 build.gradle檔案中 添下程式碼: apply plugin: 'com.android.lib
android studio如何匯出jar包以及如何將多個jar包合併
android studio現在jar包方式的引用可能越來越少,大部分都是通過gradle引入github專案依賴即可,不過今天還是講一講jar包的匯出和合並,算是記錄下吧。一、建立一個新的library專案,專案名為mylibrary。找到build.gradle檔案,檔案
【Android】匯入第三方jar包Could not find class 異常解決
這幾天做一個通訊錄APP,在漢字排序的時候用到了開源專案pinyin4j,在java project中使用正常,無奈在android project中總是報異常 下面給出解決方法: 1、在工程目錄下新建一個externLib資料夾,將jar包拷貝到該資料夾 重新整理之後會
使用Android Studio打包生成Jar包的方法(親測可用)
首先我們來說下打成jar包的分類:1.application應用打成jar包2.內庫打成jar包不管是那種打包jar包都得變成內庫,所以當一種方法講解了。打jar包之前得讓你的專案成內庫:如何變成內庫呢?看下內庫檔案的圖示如下圖:如下兩點:先將你專案gradle檔案最上面的a
Android Studio如何引用jar包
1、新增compile,這裡是指引用程式碼託管庫(以下稱資源庫)下的開源專案 我們可以開啟我們專案目錄下的build.gradle,如下圖 其中的第16行repositories就是我們使用的資源庫的庫配置。這個庫除了我們看到的
android studio工程打jar包
1.將你的工程專案轉成Model或Libray 在build檔案中配置修改,意思是將該工程修改為庫的形式 原來 apply plugin: ‘com.android.application’ 修改後 apply
Android studio 匯入eclipse專案 執行時報錯
Error:Android Packager: [sport5] java.io.IOException: Cannot pack file E:\444\libs\production\sport5\sport5.unaligned.apk into itself 這幾天
Android Studio 如何打JAR包(親測)
//在android studio終端執行生成JAR包 // mac 環境下 ./gradlew makeJar // win 環境下 gradlew makeJar 如提示許可權問題:chmod +x gradlew ====================
Android studio中匯出jar包
1.module的gradle檔案頂部依賴為apply plugin: 'com.android.library'2.gradle中不能有appID,如果有註釋掉3.在gradle檔案的最下面android{}和dependencies{}的外面新增下面程式碼://下面的的都