1. 程式人生 > >Android 生成Release版本時,混淆問題的解決

Android 生成Release版本時,混淆問題的解決

今天在生成release版本的apk時,出現了編譯失敗,百度以後,發現是混淆配置出現錯誤

Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class 
Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.Request
              .........
Warning:okio.Okio: can't find referenced class java.nio.file.Files
Warning:okio.Okio: can'
t find referenced class java.nio.file.Path ......... Warning:rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef: can't find referenced class sun.misc.Unsafe Warning:rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef: can't find referenced

從上面的log中可以看到有三個包配置不正確,第一個是okhttp,第二個是okio,第三個是rx,開啟app下proguard-rules.pro,配置如下內容,便可以編譯成功。

okhttp

# okhttp
-keepattributes SourceFile,LineNumberTable
-keep class com.parse.*{ *; }
-dontwarn com.parse.**
-dontwarn com.squareup.picasso.**
-keepclasseswithmembernames class * {
    native <methods>;
}

okio

# Okio
-dontwarn com.squareup.**
-dontwarn okio.**
-keep public class org.codehaus.* { *; }
-keep public
class java.nio.* { *; }

rx

# RxJava RxAndroid
-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;
}

通過如上配置,可以正常生成release版本的apk了。以後出現類似的問題,只要找到對應的混淆規則新增,就可以了。。。希望對大家有用,下一篇文章,我會整理一下一些實用頻率很高的混淆配置。

相關推薦

Android 生成Release版本混淆問題的解決

今天在生成release版本的apk時,出現了編譯失敗,百度以後,發現是混淆配置出現錯誤 Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class Warning:c

C#.NET常見問題(FAQ)-如何生成release版本的程序生成debug版本的程序

項目 style bug 在頂部 image 還要 es2017 郵箱 在線 除了右擊項目在生成中配置改成Release還要在頂部切換成Release ? ?更多教學視頻和資料下載,歡迎關註以下信息: 我的優酷空間: http://i.youku.com

安裝mysql 8.0版本使用front連接報1251錯誤或者navicat 連接報錯2059解決方案

with clas 解決 ring class func eve 刷新 IE 這個錯誤出現的原因是在mysql8之前的版本中加密規則為mysql_native_password,而在mysql8以後的加密規則為caching_sha2_password。 解決此問題有兩

安裝mysql 8.0版本使用navicat 連接報1251錯誤解決方案

sha cal TE roo oot string XP 規則 nat 今天安裝mysql8 使用navicat 連接時報錯 1251 這個錯誤出現的原因是在mysql8之前的版本中加密規則為mysql_native_password,而在mysql8以後的加密規則為ca

正確生成浮點型的方法解決sqlachemy Float浮點型的坑生成float型別長度和精度均為0導致查詢不到結果!

問題描述 在使用flask_sqlachemy時,給price欄位選擇了Float型別,資料庫用的mysql,生成資料庫表後,發現   from sqlalchemy import Float,Column price = Column(Float,default=0.00) &

PowerDesigner 15進行逆向工程生成資料庫圖表註釋的comment的生成解決PowerDesigner逆向工程沒有列註釋

 使用PowerDesigner預設配置逆向工程是沒有註釋(name列為英文,comment列是空的),這樣的不方便檢視欄位具體是什麼意義,將註釋一同匯出,方便檢視欄位具體的意義,如下圖    註釋列匯出步驟 1、新建指令碼DBMS,選擇選單:Tools→Resou

Androidrelease按Home鍵再按桌面icon出現app重新啟動的問題

在專案開發中遇到了按Home鍵,再按桌面icon時出現app重新啟動的問題,這個時候我們將啟動的那個activity(一般為廣告頁面GuideActivity)的啟動模式android:launchMode="singleTask"去掉即可,但是有些APP很奇怪,debug版

解決Android 原始碼編譯“audio_processing_impl”報錯“fatal error: list: No such file or directory”問題

我的系統是Linux Mint 17,使用的平臺是Tiny4412,編譯的是友善之臂提供的Android 4.2.2 原始碼。之前編譯沒有問題,今天編譯時,報出這個錯誤,查遍 百度/Google 都沒解決,後來發現是我之前手賤多配置了一個環境變數 NDK_ROOT 導致的問

解決Android首次啟動APP顯示空白頁或者黑屏時間長的問題

問題描述: 第一次啟動app(冷啟動,如果不明白冷啟動和熱啟動的話,可以百度一下),會出現白屏或者黑屏,而且當代碼量增多的時候,出現的時間很長。這樣的使用者體驗多不好。下面我寫了一個小例子,先模擬一下該問題的效果圖,以及解決問題後的效果圖。處理前有空白頁如圖1,

Android Studio在打包release版本遇到國際化的問題

在要打包的專案的build.gradle中的android{}中新增如下程式碼即可解決 lintOptions{ checkReleaseBuilds falseabortOnError falsedisable 'MissingTranslation'}即可解決

徹底解決Android Studio每次版本升級Refresing 卡住的問題

每次升級Android studio,gradle都會相應的升級,你當前的專案就會重新構建,然而,如下圖1所指 每次都會要Refreshing很久,這裡它主要是重新去按照2所指的地址去下載最新的g

VS2010 開發VC++ 生成release版本動態庫配置

方案 .com ima AS 分享圖片 In inf 分享 ++ 1、選擇項目→屬性→配置管理器→活動解決方案配置→選擇Release →關閉。 2、常規→輸出目錄(中間目錄)填入輸出路徑。 3、重新生成。 VS2010 開發VC++ 生成release版本動態庫配置

VS 提示:請考慮使用 app.config 將程式集“XXX”從版本“XX”重新對映到版本“XX”解決衝突並消除警告。

具體提示如下: 請考慮使用 app.config 將程式集“System.Web.Http.WebHost, Culture=neutral, PublicKeyToken=31bf3856ad364e35”從版本“5.0.0.0”[D:\Code…(專案路徑就省略了)\bi

Android 應用在後臺跳轉 Activity 會自動切換應用至前臺

本部落格 demo 見:demo。 平常用手機的時候經常碰到這種情況,用首屏廣告舉個栗子~很多應用都會有首屏廣告 activity A,假設此應用是 app C,如果此時要使用別的應用,就會使得 app C 在後臺執行。可是當 

Android換Gradle版本碰到的問題

我們在換Gradle時總會碰到如下的情況: Error:Failed to find target with hash string ‘android-28’ in: Install missing platform(s) and sync project 提示我們確實 android-xx

android 相容不同版本懸浮框許可權解決

1,4.4以下使用TYPE_SYSTEM_ALERT,需要許可權android.permission.SYSTEM_ALERT_WINDOW; 2,4.4到7.0,使用TYPE_TOAST,不需要額外許可權;(既然TYPE_TOAST不需要

mybatis generator生成對映檔案執行多次導致xml檔案生成錯誤設定table schema也無效

在maven中集成了MBG以後,生成xml等對映檔案時,會生成多次。由於xml檔案是追加,導致xml檔案有多次生成的結果。 原因: 1):在資料庫伺服器上,不同的資料庫中表名相同的表多張。(有幾個同名的表,就會生成幾次) 2):mysql驅動升級到8.x,造成設定sch

Android Studio3.X版本之後Android SDK的安裝

Android Studio3.X的版本,老出問題 但很多問題,都是由於無法訪問谷歌伺服器造成的 前段時間AS忽然間崩潰,解除安裝重灌,卻發現SDK怎麼都裝不上 後來才知道,原來AS3.X之後的安裝包不

自己生成aar包含有第三方依賴匯入專案使用

自己專案中需要打包一個aar,這個aar含有第三方依賴。生成aar後,匯入主專案,結果報錯,第三方的類找不到。。。。  aar生成時,包含有第三方依賴,比如第三方的OkGo;aar專案的gradle: api ('com.lzy.net:okgo:3.0.4'){tran

Eclipse 使用 android.support.v7 包遇到的問題s

在編寫android的程式碼時經常需要考慮低版本的相容性問題,eclispe中建立android工程minimum sdk的版本小於target的版本時,有可能會自動生成一個appcompat_v7的工程。 1. Android 匯入android.suppo