ApkTool工具的安装

/ 默认分类 / 没有评论 / 718浏览

1:ApkTool工具的安装与使用

1.1 Window下安装
@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul

rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
    set BASENAME=apktool
    goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion

rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
    rem Directory, rebuild
    set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
    rem APK file, unpack
    set fastCommand=d
)

:load java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %* rem Pause when ran non interactively for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pause

1.2 Linux下安装
#!/bin/bash
#
# Copyright (C) 2007 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This script is a wrapper for smali.jar, so you can simply call "smali", # instead of java -jar smali.jar. It is heavily based on the "dx" script # from the Android SDK

# Set up prog to be the path of this script, including following symlinks, # and set up progdir to be the fully-qualified pathname of its directory. prog="$0" while [ -h "${prog}" ]; do newProg=/bin/ls -ld <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span>

newProg=`expr <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">".* -&gt; \(.*\)$"</span>`
<span class="hljs-keyword" style="font-weight: bold;">if</span> expr <span class="hljs-string" style="color: rgb(221, 17, 68);">"x<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">'x/'</span> &gt;/dev/null; <span class="hljs-keyword" style="font-weight: bold;">then</span>
    prog=<span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span>
<span class="hljs-keyword" style="font-weight: bold;">else</span>
    progdir=`dirname <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span>`
    prog=<span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${progdir}</span>/<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span>
<span class="hljs-keyword" style="font-weight: bold;">fi</span>

done oldwd=<span class="hljs-built_in" style="color: rgb(0, 134, 179);">pwd</span> progdir=dirname <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span> cd "${progdir}" progdir=<span class="hljs-built_in" style="color: rgb(0, 134, 179);">pwd</span> prog="${progdir}"/basename <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span> cd "${oldwd}"

jarfile=apktool.jar libdir="$progdir" if [ ! -r "$libdir/$jarfile" ] then echo basename <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">$prog</span>"</span>": can't find $jarfile" exit 1 fi

javaOpts=""

# If you want DX to have more memory when executing, uncomment the following # line and adjust the value accordingly. Use "java -X" for a list of options # you can pass here. # javaOpts="-Xmx512M -Dfile.encoding=utf-8"

# Alternatively, this will extract any parameter "-Jxxx" from the command line # and pass them to Java (instead of to dx). This makes it possible for you to # add a command-line parameter such as "-JXmx256M" in your ant scripts, for # example. while expr "x$1" : 'x-J' >/dev/null; do opt=expr <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">$1</span>"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">'-J\(.*\)'</span> javaOpts="${javaOpts} -${opt}" shift done

if [ "$OSTYPE" = "cygwin" ] ; then jarpath=cygpath -w <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">$libdir</span>/<span class="hljs-variable" style="color: rgb(0, 128, 128);">$jarfile</span>"</span> else jarpath="$libdir/$jarfile" fi

# add current location to path for aapt PATH=$PATH:<span class="hljs-built_in" style="color: rgb(0, 134, 179);">pwd</span>; export PATH; exec java $javaOpts -jar "$jarpath" "$@"

1.3 Mac OS X:安装

#!/bin/bash
#
# Copyright (C) 2007 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This script is a wrapper for smali.jar, so you can simply call "smali", # instead of java -jar smali.jar. It is heavily based on the "dx" script # from the Android SDK

# Set up prog to be the path of this script, including following symlinks, # and set up progdir to be the fully-qualified pathname of its directory. prog="$0" while [ -h "${prog}" ]; do newProg=/bin/ls -ld <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span>

newProg=`expr <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">".* -&gt; \(.*\)$"</span>`
<span class="hljs-keyword" style="font-weight: bold;">if</span> expr <span class="hljs-string" style="color: rgb(221, 17, 68);">"x<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">'x/'</span> &gt;/dev/null; <span class="hljs-keyword" style="font-weight: bold;">then</span>
    prog=<span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span>
<span class="hljs-keyword" style="font-weight: bold;">else</span>
    progdir=`dirname <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span>`
    prog=<span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${progdir}</span>/<span class="hljs-variable" style="color: rgb(0, 128, 128);">${newProg}</span>"</span>
<span class="hljs-keyword" style="font-weight: bold;">fi</span>

done oldwd=<span class="hljs-built_in" style="color: rgb(0, 134, 179);">pwd</span> progdir=dirname <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span> cd "${progdir}" progdir=<span class="hljs-built_in" style="color: rgb(0, 134, 179);">pwd</span> prog="${progdir}"/basename <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">${prog}</span>"</span> cd "${oldwd}"

jarfile=apktool.jar libdir="$progdir" if [ ! -r "$libdir/$jarfile" ] then echo basename <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">$prog</span>"</span>": can't find $jarfile" exit 1 fi

javaOpts=""

# If you want DX to have more memory when executing, uncomment the following # line and adjust the value accordingly. Use "java -X" for a list of options # you can pass here. # javaOpts="-Xmx512M -Dfile.encoding=utf-8"

# Alternatively, this will extract any parameter "-Jxxx" from the command line # and pass them to Java (instead of to dx). This makes it possible for you to # add a command-line parameter such as "-JXmx256M" in your ant scripts, for # example. while expr "x$1" : 'x-J' >/dev/null; do opt=expr <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">$1</span>"</span> : <span class="hljs-string" style="color: rgb(221, 17, 68);">'-J\(.*\)'</span> javaOpts="${javaOpts} -${opt}" shift done

if [ "$OSTYPE" = "cygwin" ] ; then jarpath=cygpath -w <span class="hljs-string" style="color: rgb(221, 17, 68);">"<span class="hljs-variable" style="color: rgb(0, 128, 128);">$libdir</span>/<span class="hljs-variable" style="color: rgb(0, 128, 128);">$jarfile</span>"</span> else jarpath="$libdir/$jarfile" fi

# add current location to path for aapt PATH=$PATH:<span class="hljs-built_in" style="color: rgb(0, 134, 179);">pwd</span>; export PATH; exec java $javaOpts -Djava.awt.headless=true -jar "$jarpath" "$@"

1.4:基本命令使用

apktool d testapp.apk