Skip to content

Commit 5076a65

Browse files
committed
init project
0 parents  commit 5076a65

File tree

6 files changed

+137
-0
lines changed

6 files changed

+137
-0
lines changed

d8

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#!/bin/bash
2+
#
3+
# Copyright (C) 2017 The Android Open Source Project
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Set up prog to be the path of this script, including following symlinks,
18+
# and set up progdir to be the fully-qualified pathname of its directory.
19+
prog="$0"
20+
while [ -h "${prog}" ]; do
21+
newProg=`/bin/ls -ld "${prog}"`
22+
newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
23+
if expr "x${newProg}" : 'x/' >/dev/null; then
24+
prog="${newProg}"
25+
else
26+
progdir=`dirname "${prog}"`
27+
prog="${progdir}/${newProg}"
28+
fi
29+
done
30+
oldwd=`pwd`
31+
progdir=`dirname "${prog}"`
32+
cd "${progdir}"
33+
progdir=`pwd`
34+
prog="${progdir}"/`basename "${prog}"`
35+
cd "${oldwd}"
36+
37+
jarfile=d8.jar
38+
libdir="$progdir"
39+
mainClass="com.android.tools.r8.D8"
40+
41+
if [ ! -r "$libdir/$jarfile" ]; then
42+
# set d8.jar location for the SDK case
43+
libdir="$libdir/lib"
44+
fi
45+
46+
47+
if [ ! -r "$libdir/$jarfile" ]; then
48+
# set d8.jar location for the Android tree case
49+
libdir=`dirname "$progdir"`/framework
50+
mainClass="com.android.tools.r8wrappers.D8Wrapper"
51+
fi
52+
53+
if [ ! -r "$libdir/$jarfile" ]; then
54+
echo `basename "$prog"`": can't find $jarfile"
55+
exit 1
56+
fi
57+
58+
# By default, give d8 a max heap size of 2 gigs. This can be overridden
59+
# by using a "-J" option (see below).
60+
defaultMx="-Xmx2G"
61+
62+
# The following will extract any initial parameters of the form
63+
# "-J<stuff>" from the command line and pass them to the Java
64+
# invocation (instead of to d8). This makes it possible for you to add
65+
# a command-line parameter such as "-JXmx256M" in your scripts, for
66+
# example. "java" (with no args) and "java -X" give a summary of
67+
# available options.
68+
69+
declare -a javaOpts=()
70+
71+
while expr "x$1" : 'x-J' >/dev/null; do
72+
opt=`expr "x$1" : 'x-J\(.*\)'`
73+
javaOpts+=("-${opt}")
74+
if expr "x${opt}" : "xXmx[0-9]" >/dev/null; then
75+
defaultMx="no"
76+
fi
77+
shift
78+
done
79+
80+
if [ "${defaultMx}" != "no" ]; then
81+
javaOpts+=("${defaultMx}")
82+
fi
83+
84+
if [ "$OSTYPE" = "cygwin" ]; then
85+
# For Cygwin, convert the jarfile path into native Windows style.
86+
jarpath=`cygpath -w "$libdir/$jarfile"`
87+
else
88+
jarpath="$libdir/$jarfile"
89+
fi
90+
91+
exec java "${javaOpts[@]}" -cp "$jarpath" "$mainClass" "$@"

j2s

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/sh
2+
3+
main(){
4+
local file="$1"
5+
local wd=`pwd`
6+
local lib_dir="$wd/lib"
7+
8+
if [ ! -f $file ]; then
9+
echo $1 not exist!;
10+
exit 1
11+
fi
12+
13+
local path=`dirname $file`
14+
local name=`basename $file`
15+
cd $path
16+
17+
javac $file
18+
$wd/d8 ${file//java/class}
19+
java -jar "$lib_dir/baksmali.jar" d classes.dex
20+
21+
local smali_path="$path/out/${name//java/smali}"
22+
23+
less $smali_path
24+
}
25+
26+
main "$1"

j2s.gif

403 KB
Loading

lib/baksmali.jar

1.22 MB
Binary file not shown.

lib/d8.jar

15.8 MB
Binary file not shown.

readme.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# J2S
2+
3+
Java to Smali CLI
4+
5+
![alt text](j2s.gif)
6+
7+
## Usage
8+
9+
```sh
10+
./j2s path-to-java-file
11+
```
12+
13+
## Library
14+
15+
- [baksmali](https://bitbucket.org/JesusFreke/smali/downloads/)
16+
17+
- [d8](https://developer.android.com/tools/releases/platform-tools):
18+
- MacOS: `~/Library/Android/sdk/build-tools/35.0.0/lib/d8.jar`
19+
20+
## Licence

0 commit comments

Comments
 (0)