ANT baue für Android Proguard Obfuscation

Kann jemand mit Probe / einfache Obfuscation ANT Aufgabe für Android teilen? Vorausgesetzt, dass ich komplett APK habe und ich brauche einfach passieren * Klasse hru Proguard und dann bereiten * .dex zu APK zu bauen

  • Set Hintergrundbild und XML-Ressource
  • Wie bekomme ich die neueste Version von ConstraintLayout für Android?
  • Verursacht durch: retrofit.RetrofitError: Methode POST muss einen Anforderungskörper haben
  • "EVP_DecryptFinal_ex: falsche endgültige Blocklänge" während der Entschlüsselung
  • Effizienz von getDrawable (): ist das Drawable zwischengespeichert vom Framework?
  • Wie kann man den Fehler lösen "com.android.internal.R kann nicht gelöst werden", wenn ich die Android-Datei 'MultiAutoCompleteTextView.java',
  • CardView Eckenradius
  • Android-Statusleiste scrolling mit Koordinator-Layout, so dass Status-Icons überlappende Symbolleisten-Titel
  • NullPointerException beim Aufruf von getSupportActionBar () aus dem Inneren von Fragment (ActionBarCompat)
  • Wie man android Sperrbildschirm hinzufügt
  • SQLite-Abfrage aus mehreren Tabellen mit SQLiteDatabase
  • Android Build fehlgeschlagen mit build.xml: 479: SDK hat keine Build Tools installiert
  • 4 Solutions collect form web for “ANT baue für Android Proguard Obfuscation”

    Ich habe gefunden:

    1. Holen Sie sich Proguard – kopieren Sie proguard.jar in das bekannte Verzeichnis (sagen MyProject / proguard)
    2. Bereiten Sie proguard.cfg vor und beschreiben Sie was und wie optimieren / verschleiern. Dieser Vorgang wurde im Handbuch von Proguard sorgfältig beschrieben
    3. Vorbereiten der folgenden ANT's build.xml (oder smth wie diese) – great thanx zu diesem Kerl

    UPDATE komplette build.xml

    <?xml version="1.0" encoding="UTF-8"?> <project name="MyProject" default="zipalign" basedir="."> <property name="target" value="android-8"/> <!--property file="default.properties" /--> <property name="encoding" value="UTF-8"/> <!-- dirs --> <property name="sdk.dir" location="Location of Android SDK"/> <property name="proguard.dir" value="proguard" /> <property name="src.dir" value="src"/> <property name="gen.dir" value="gen"/> <property name="res.dir" value="res"/> <property name="assets.dir" value="assets"/> <property name="libs.dir" value="libs"/> <property name="out.classes.unoptimized.dir" value="out"/> <property name="out.classes.optimized.dir" value="out/optimized"/> <!-- files --> <property name="manifest.file" value="AndroidManifest.xml"/> <property name="signed.apk" value="${ant.project.name}-signed.apk"/> <property name="unsigned.apk" value="${ant.project.name}-unsigned.apk"/> <property name="final.apk" value="${ant.project.name}.apk"/> <property name="android.jar" value="${sdk.dir}/tools/platforms/${target}/android.jar"/> <property name="unoptimized" value="unoptimized.jar" /> <property name="optimized" value="optimized.jar" /> <property name="proguard.config" value="${proguard.dir}/proguard.cfg"/> <!-- tools --> <property name="dx.jar" value="${sdk.dir}/platform-tools/lib/dx.jar"/> <property name="aapt" value="${sdk.dir}/platforms/${target}/tools/aapt.exe"/> <property name="zipalign" value="${sdk.dir}/tools/zipalign.exe"/> <property name="jarsign" value="jarsigner.exe location is here"/> <property name="keystore" value="Your key store is here"/> <property name="keyalias" value="Your key alias is here"/> <path id="android.antlibs"> <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" /> <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" /> <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" /> <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" /> <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" /> </path> <taskdef name="setup" classname="com.android.ant.SetupTask" classpathref="android.antlibs" /> <setup import="false"/> <!--taskdef name="aaptexec" classname="com.android.ant.AaptExecLoopTask" classpathref="android.antlibs" /--> <target name="clean" description="Removes output files created by other targets."> <echo>Cleaning...</echo> <delete dir="${out.classes.unoptimized.dir}" verbose="true" /> <delete dir="${out.classes.optimized.dir}" verbose="true" /> </target> <target name="dirs"> <echo>Creating output directories if needed...</echo> <mkdir dir="${out.classes.unoptimized.dir}" /> <mkdir dir="${out.classes.optimized.dir}" /> </target> <!-- Compiles this project's .java files into .class files. --> <target name="compile" depends="dirs" description="Compiles project's .java files into .class files"> <echo>Compiling sources...</echo> <javac encoding="${encoding}" target="1.6" debug="true" extdirs="" destdir="${out.classes.unoptimized.dir}" bootclasspathref="android.target.classpath" includeantruntime="true"> <src path="${src.dir}" /> <src path="${gen.dir}" /> <classpath> <fileset dir="${libs.dir}" includes="*.jar" /> </classpath> </javac> </target> <target name="preobfuscate" depends="compile"> <echo>Preparing to obfuscation...</echo> <jar destfile="${unoptimized}" basedir="${out.classes.unoptimized.dir}" includes="**/**" excludes="optimized/**" /> </target> <!-- Obfuscation with ProGuard --> <target name="optimize" unless="nooptimize" depends="preobfuscate"> <echo>Proguard obfuscation...</echo> <java jar="${proguard.dir}/proguard.jar" fork="true" failonerror="true"> <jvmarg value="-Dmaximum.inlined.code.length=16" /> <arg value="@${proguard.dir}/proguard.cfg" /> <arg value="-injars ${unoptimized}" /> <arg value="-outjars ${optimized}" /> <arg value="-libraryjars ${android.jar}" /> </java> <unzip src="${optimized}" dest="${out.classes.optimized.dir}" /> <!-- Delete optimized jar (now unzipped into bin directory) --> <delete file="${optimized}"/> <delete file="${unoptimized}"/> </target> <target name="dex" description="Converting JVM bytecodes into Dalvik bytecodes" depends="optimize"> <echo>Converting bytecodes to Dalvik VM bytecodes...</echo> <java jar="${dx.jar}" fork="true"> <arg line="--dex --verbose --output=${out.classes.optimized.dir}/classes.dex ${out.classes.optimized.dir}"/> </java> </target> <target name="aapt" depends="dex" description="compile resources"> <echo>Packing resources...</echo> <exec executable="${aapt}" logerror="true" osfamily="windows"> <arg line="p -f -M ${manifest.file} -I ${android.jar} -S ${res.dir} -A ${assets.dir} -F ${out.classes.optimized.dir}/${unsigned.apk} -m -J ${gen.dir}"/> </exec> </target> <target name="sign" depends="aapt" description="sign apk"> <input message="Please enter keystore password (store:${keystore}):" addproperty="keystore.password" /> <echo>Signing apk...</echo> <exec executable="${jarsign}" logerror="true" osfamily="windows"> <arg line="-verbose -keystore ${keystore} -storepass ${keystore.password} -signedjar ${out.classes.optimized.dir}/${signed.apk} ${out.classes.optimized.dir}/${unsigned.apk} ${keyalias}"/> </exec> </target> <target name="zipalign" depends="sign" description="zip align"> <echo>Aligning apk...</echo> <exec executable="${zipalign}" logerror="true" osfamily="windows"> <arg line="-f -v 4 ${out.classes.optimized.dir}/${signed.apk} ${final.apk}"/> </exec> </target> </project> 
    1. Diese ANT-Task muss den Eclipse Builders (Properties / Builders) Tasks nach Java Builder und vor dem Android Packungs-Builder hinzugefügt werden.

    2. Drücken Sie "Build All" (es ist besser, aus Automatische Build-Check in Eclipse-Menü)

    Der Android-Build-Prozess kompiliert zuerst Java-Quelldateien (.java) in Java-Klassendateien (.class) und konvertiert diese Klassendateien in den Dalvik-Code (classes.dex) und vervollständigt diesen Dalvik-Code in einer APK-Datei.

    ProGuard liest und schreibt Java-Klassendateien, also muss es in diese Pipeline zwischen dem Kompilierungsschritt und dem Konvertierungsschritt eingefügt werden. Es liest oder schreibt nicht Dalvik-Code selbst, also kann es nicht an der APK-Datei arbeiten.

    Die Android SDK-Dokumentation auf ProGuard diskutiert, wie man den Verschleierung Schritt in der Ant-Build für Android-9 aktivieren. Kurz gesagt, müssen Sie eine Zeile "proguard.config = proguard.cfg" der Datei default.properties hinzufügen und dann "Ant Release" ausführen.

    Achtung : Barmaleys Antwort ist ab Jahr 2011 und scheinen für Android SDK Tools Version entweder 8 oder 10 gültig zu sein.

    Ich habe versucht, diese Lösung mit Android SDK Tools Version 18.1.1 anzupassen, aber fehlgeschlagen auf dem Fehler:
    taskdef class com.android.ant.SetupTask cannot be found

    Irgendwann, was ich tat, war das:

     rm build.xml android update project -p . 
    • Wenn du nicht die SDK-Tools in deinem PATH hast, musst du den vollständigen Pfad zum Android-Tool verwenden, zum Beispiel unter Windows: C: \ Android \ sdk \ tools

    Dies schuf eine neue build.xml, die mit den aktuellen SDK Tools kompatibel ist, und scheinen eine Menge der manuellen Arbeit zu automatisieren, die in der Antwort von barmaley beschrieben wird.

    Danach konnte ich eine ant release ausführen, die sich um die Erstellung und Verschleierung der Resultat-Kapsendatei kümmerte.

    Um die Verschleierung über Ameise zu automatisieren, musst du:

    1. Proguard Obfuscator aktivieren (offensichtlich)
    2. Erstellen Sie eine ant.properties Datei und füllen Sie sie mit den entsprechenden key.store-Params aus (siehe diese Antwort für Details).

    Der ProGuard-Obfuscation-Prozess benötigt .class-Dateien, so dass Sie keine Ant vor IDE-Build (.java) oder nach (.dex packed) starten können.

    Werfen Sie einen Blick auf diesen Beitrag, wo es erklärt wird, wie fügen Sie die proGuard Schritt in Ihrem globalen Ant-Build:

    http://www.androidengineer.com/2010/07/optimizing-obfuscating-and-shrinking.html

    Wenn Sie den IDEA-Build wirklich nutzen möchten, können Sie folgendes ausprobieren.

    • Nachdem der IDEA den apk mit apktool ausgepackt hat.
    • Konvertieren Sie die .dex-Dateien in .class mit dex2jar
    • Führen Sie proGuard als vorherige Post zeigen Sie

    Tut mir leid, dass ich euch nicht die Links von apktool und dexjar anhabe, aber da ich Neuling bin, kann ich nicht mehr als einen Hyperlink posten.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.