1. 程式人生 > >android 2.2 程式碼混淆

android 2.2 程式碼混淆

 2.3以上版本:AndroidSDK自帶proguard混淆

在Android SDK中自帶有proguard程式碼混淆器,但在預設的情況下該混淆器是沒有開啟的。該混淆器在SDK中的路徑是android-sdk-windows\tools\proguard

啟動android-sdk-windows\tools\proguard\lib\proguardgui.jar可以使用獨立UI的proguard。

ProGuard是一個免費的java類檔案壓縮,優化,混淆器.它探測並刪除沒有使用的類,欄位,方法和屬性.它刪除沒有用的說明並使用位元組碼得到最大優化.它使用無意義的名字來重新命名類,欄位和方法.  

ProGuard的使用是為了: 

1.建立緊湊的程式碼文件是為了更快的網路傳輸,快速裝載和更小的記憶體佔用.

2.建立的程式和程式庫很難使用反向工程.

3.所以它能刪除來自原始檔中的沒有呼叫的程式碼

4.充分利用java6的快速載入的優點來提前檢測和返回java6中存在的類檔案.

Eclipse中使用proguard的方法如下:

1.啟動程式碼混淆功能

新建Android專案工程裡面預設是帶有proguard.cfg的程式碼混淆配置檔案,如果沒有請從其它專案中copy一個過來。程式碼混淆功能預設是沒有啟動這個配置的,需要手動地在專案根目錄default.properties檔案裡面新增指定這個配置檔案如下:

1 # Project target. 
2 target=android-7 
3 # set proguard.config 
4 proguardproguard.config=proguard.cfg

要是基於2.2的版本那怎麼辦呢?

那我 悲催的 專案(基於2.2的sdk) 該如何 是好?(非得 殘忍的把 專案屬性設定為 2.3的麼?其實即使你改了,google 也不會為你把 proguard.cfg檔案補上的)所以不要這樣做,你只要 把 proguard.cfg 檔案 拷貝到 你的 舊專案裡就好了,然後混淆方法就和2.3的一樣了。

這邊要注意,這時候生產APK不能直接使用bin中的apk,必須使用Android Tools裡面的匯出才行,簽名或者不簽名都OK!


這裡再補充一個問題,再匯出的時候。由於匯入了android-support-v4.jar包,所以爆出了類似的錯誤。忘記截圖,借別人的用了。嘿嘿。

[2011-11-03 16:07:52 - AndroidViewPager] Proguard returned with error code 1. See console
[2011-11-03 16:07:52 - AndroidViewPager] Note: there were 95 duplicate class definitions.
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.app.ActivityCompatHoneycomb: can't find referenced method 'void invalidateOptionsMenu()' in class android.app.Activity
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.app.ActivityCompatHoneycomb: can't find referenced method 'void dump(java.lang.String,java.io.FileDescriptor,java.io.PrintWriter,java.lang.String[])' in class android.app.Activity
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find referenced class android.os.Parcelable$ClassLoaderCreator
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find referenced class android.os.Parcelable$ClassLoaderCreator
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.view.MenuCompatHoneycomb: can't find referenced method 'void setShowAsAction(int)' in class android.view.MenuItem
[2011-11-03 16:07:52 - AndroidViewPager] Warning: there were 3 unresolved references to classes or interfaces.
[2011-11-03 16:07:52 - AndroidViewPager]          You may need to specify additional library jars (using '-libraryjars'),
[2011-11-03 16:07:52 - AndroidViewPager]          or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-11-03 16:07:52 - AndroidViewPager] Warning: there were 3 unresolved references to program class members.
[2011-11-03 16:07:52 - AndroidViewPager]          Your input classes appear to be inconsistent.
[2011-11-03 16:07:52 - AndroidViewPager]          You may need to recompile them and try again.
[2011-11-03 16:07:52 - AndroidViewPager]          Alternatively, you may have to specify the options 
[2011-11-03 16:07:52 - AndroidViewPager]          '-dontskipnonpubliclibraryclasses' and/or
[2011-11-03 16:07:52 - AndroidViewPager]          '-dontskipnonpubliclibraryclassmembers'.
[2011-11-03 16:07:52 - AndroidViewPager] java.io.IOException: Please correct the above warnings first.
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.Initializer.execute(Initializer.java:308) 
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.ProGuard.initialize(ProGuard.java:210)
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.ProGuard.execute(ProGuard.java:85)
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.ProGuard.main(ProGuard.java:499)

原因:

  1. Android Compatibility library referencing classes that only exist in recent versions of the Android API  
解決方法:在專案的proguard.cfg檔案中新增
  1. -dontwarn **HoneycombMR2  
  2. -dontwarn **CompatICS  
  3. -dontwarn **Honeycomb  
  4. -dontwarn **CompatIcs*  
  5. -dontwarn **CompatFroyo  
  6. -dontwarn **CompatGingerbread  
具體要dontwarn哪些條目,可以根據報錯來進行相應的修改

這些解決了,就麼有問題了,順利的混淆成功!

相關推薦

安全程式設計之Android APK打包程式碼混淆

第一步:在專案工程目錄下的proguard-rules.pro檔案中配置自定義的混淆規則 #注意: #1.引用外部的jar包 如果不是自己寫的最好不混淆它們,因為外部jar包有可能已經混淆過 #2.不要混淆XML佈局中使用的自定義控制元件類,混淆後加載佈局會報找不到該控制

Android開發之程式碼混淆

應用混淆(ProGuard) ProGuard是一個免費的JAVA類檔案壓縮,優化,混淆器。 它探測並刪除沒有使用的類,欄位,方法和屬性,它刪除沒有用的說明並使用位元組碼得到最大優化,它使用無意義的名字重新命名類,欄位和方法。 我們先來介紹下ProGuard 我們為啥要使用ProGu

Android輕鬆實現程式碼混淆

1、簡介 程式碼混淆(Obfuscated code)亦稱花指令,是將計算機程式的程式碼,轉換成一種功能上等價,但是難於閱讀和理解的形式的行為。 混淆的目的是為了加大反編譯的成本,但是並不能徹底防止反編譯。 2、如何開啟混淆 通常我們需要找到

android學習之程式碼混淆小結

之前一直沒有對程式碼混淆有一個很明確的認識,今天重新對程式碼混淆做了一番瞭解,並記錄一下在Androidstudio上是如何做程式碼混淆的。 第一步: buildTypes { release { minifyEnabled true prog

Android 專案的程式碼混淆Android proguard 使用說明

簡介Java程式碼是非常容易反編譯的。為了很好的保護Java原始碼,我們往往會對編譯好的class檔案進行混淆處理。ProGuard是一個混淆程式碼的開源專案。它的主要作用就是混淆,當然它還能對位元組碼進行縮減體積、優化等,但那些對於我們來說都算是次要的功能。官網地址:htt

Android 中的程式碼混淆

在Android開發工作中,我們都或多或少接觸過程式碼混淆。比如我們想要整合某個SDK,往往需要做一些排除混淆的操作。 本文為本人的一些實踐總結,介紹一些混淆的知識和注意事項。希望可以幫助大家更好的學習和使用程式碼混淆。 什麼是混淆 關於混淆維基百科上該詞條的解釋為 程式碼混淆(Obfuscat

android 2.2 程式碼混淆

 2.3以上版本:AndroidSDK自帶proguard混淆 在Android SDK中自帶有proguard程式碼混淆器,但在預設的情況下該混淆器是沒有開啟的。該混淆器在SDK中的路徑是android-sdk-windows\tools\proguard 啟

《第一行程式碼 Android2版》下載

2018年11月02日 14:08:44 無人寵 @ 閱讀數:3 標籤: 程式設計 資料 區塊

Android逆向-java程式碼基礎(2

0x00 前言 由於是對java語言的複習,所以進度會很快,而且會以smali為主,java只是順便提一下,如果對java有興趣詳細研究的,可以下載pdf仔細的看。 這篇主要涉及到基本資料型別,int,float,char,以及運算。 連結:ht

android xUtils 2.6.14 jar 下載 使用 和混淆

一、ViewUtils         你受夠了重複冗長的findViewById了嘛?你受夠了各種監聽事件的綁定了嘛?在這裡,你只需要一句註解,如@ViewInject、@OnClick,就能輕鬆擺脫小白似的程式碼,大大的上了一個檔次。 二、HttpUtils  

第一行程式碼Android技巧2——隨時隨地退出程式

    如果程式執行後有多個Activity壓在程式棧,但是想在任何一個Activity退出程式,並銷燬所有Activity,該怎麼辦呢?     解決思路是,新建一個活動管理器類,每次新建一個Activity時,就把新建的例項交給該管理器類進行管理,在必要的時候,隨時呼叫

Android 微信 支付寶支付,2程式碼實現支付

作者簡介 微信公眾號(高質量文章推送):走向全棧工程師 作者:陳博易 宣告:本文是個人原創,未經允許請勿轉載 商業合作請在微信公眾號回覆:聯絡方式 前言 現在的多數App都離不開整合阿里支付寶支付和微信支付

第一行程式碼+Android+第2版 筆記

Android四大元件: 1活動(Activity):應用程式的門面,即在應用中看得到的東西; 2服務(Service):執行在後臺,即使使用者退出了應用,服務仍然是可以繼續執行的; 3廣播接收器(BroadcastReceiver):接收和發出電話、簡訊等訊息; 4內容提

Android Studio 2.3之後在程式碼中加入Cpp

在一個新建的專案下實驗,這個可能Android Studio支援C++,可以在建立專案部的時候勾選直接可以在裡面形成支援的專案剩下就是自己將MainActivity的System.loadLibrary()提取出來,形成工具類,自己在修改cpp目錄下的程式碼或者新增新的c++

Android第一行程式碼第二版:5.3.2傳送有序廣播,在安卓8上無法接收廣播我個人的處理方法

希望有大佬能教我別的方法,我明前只能想到這個方法啦。多謝! 書上的原始碼是 Intent intent = new Intent("com.example.weiru.broadcasttest.MY_BROADCAST") ; sendOrderedBroadcast

Android——4.2 - 3G移植之路之 reference-ril .pppd 撥號上網 (三)

而且 init.rc nal null ann 源代碼分析 suggest cdma 初始化 Android的RIL機制中的 reference-ril.c 即為廠商提供的驅動接口。這個驅動源代碼各個廠商都是有提供的,網上也有下載。我如今用的就是huawe

Android studio 2.2新特性介紹,ConstraintLayout完全解析

穩定 iss 項目 ide 了解 需要 應用 let 左右 轉載郭霖大神的文章,轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/53122387 我正常寫隨筆,都是看了別人的文章,自己使用,把自己的體驗心得,

泛泰A820L (高通MSM8660 cpu) 3.4內核的CM10.1(Android 4.2.2) 測試版第二版

卸載 反饋 span lin clas wan 系統分區 漢化 sof 歡迎關註泛泰非盈利專業第三方開發團隊 VegaDevTeam (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大師) loogeo

Android Studio2.2.3 使用教程-入門篇

android最近學習下Android APK的內容,保持學習的一些文章:Android Studio 2.2.3工具使用:http://blog.csdn.net/qq_16313365/article/details/52537397待續本文出自 “專註嵌入式多媒體技術” 博客,請務必保留此出處http:

Android Studio2.2.3 通過JNI引用ffmpeg庫小結

android studio;ffmpeg;ndk;jni修改步驟:首先通過NDK14編譯出libffmpeg.so ,將include目錄取出通過AS建立基於jni的工程項目,將include目錄放到cpp下;創建jniLibs/armeabi目錄,將libffmpeg.so放到裏邊 3.配置CMak