<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 混淆 **Android Studio:**? 只需在build.gradle(Module:app)中的buildTypes中增加release的編譯選項即可,如下: ~~~ buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } ~~~ 這個proguard-android.txt是sdk中groguard默認的文件,具體地址在:/opt/sdk/tools/proguard/proguard-android.txt? 而proguard-rules.pro是AS中專用的proguard配置文件,其實只是后綴名不同,與Eclipse中的proguard-project.txt是一樣的,配置規則相同,后面會詳細提到。? 老版本開啟混淆的命令是runProguard,現在統一用minifyEnabled命令了,將其設為true就好了。? 編譯的時候可以使用命令: ~~~ ./gradlew assembleRelease ~~~ 或者用上一篇生成簽名apk的辦法都可。 **Eclipse:**? 在project.properties文件中開啟proguard配置(放開注釋),如下: ~~~ proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt ~~~ 同樣,生成簽名時代碼就會被混淆。 **混淆語法**? 請參考${sdk.dir}/tools/proguard/proguard-android.txt文件,需要注意的是文件中雖然有了不混淆Parcelable的語句,如下: ~~~ -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } ~~~ 但是還是要自己把繼承自Parcelable的類寫進來避免混淆,否則會出現BadParcelableException異常。 ~~~ -keep class com.linc.datatype.XXInfo {*;} ~~~ 為微信分享而引入的jar包,我們不需要對其進行混淆,也需要在proguard-android.txt中注明,如下: ~~~ -keep class com.tencent.** { *; } -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;} -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;} ~~~ 為了驗證是否混淆成功,可以使用下面的反編譯工具驗證。 * * * ## 反編譯 主要用到三個工具:? dex2jar:將dex文件轉為jar文件? jd-gui:反編譯jar文件? AXMLPrinter2.jar:反編譯xml文件 使用方法參見[《反編譯apk文件,得到其源代碼的方法》](http://blog.csdn.net/lincyang/article/details/6333974 "反編譯") 對于Ubuntu64位,運行jd-gui或許會報錯:? 嘗試解決如下: ~~~ $ sudo apt-get install libgtk2.0-0:i386 libnss3:i386 libcurl3-gnutls:i386 libidn11:i386 libpango1.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 librtmp0:i386 libxft2:i386 ~~~ 又報錯: ~~~ $ /opt/sdk/tools/jd-gui: error while loading shared libraries: libXxf86vm.so.1: cannot open shared object file: No such file or directory ~~~ 解決辦法如下: ~~~ $ sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6 ~~~ 參考:? [http://blog.csdn.net/lincyang/article/details/6333974](http://blog.csdn.net/lincyang/article/details/6333974)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看