mirror of
https://github.com/revanced/Apktool.git
synced 2025-01-12 13:06:02 +01:00
commit
d4fc7fa9ba
@ -7,7 +7,7 @@ jdk:
|
|||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get update -qq
|
||||||
- sudo apt-get install -qq libstdc++6:i386 lib32z1 expect
|
- sudo apt-get install -qq libstdc++6:i386 lib32z1 expect
|
||||||
script: "./gradlew build fatJar proguard"
|
script: ./scripts/travis-ci/run-tests.sh
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
@ -1,98 +0,0 @@
|
|||||||
The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
|
|
||||||
and released under the following license:
|
|
||||||
|
|
||||||
*******************************************************************************
|
|
||||||
Copyright (c) 2010 Ben Gruver (JesusFreke)
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products
|
|
||||||
derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*******************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
Various portions of the code are taken from the Android Open Source Project,
|
|
||||||
and are used in accordance with the following license:
|
|
||||||
|
|
||||||
*******************************************************************************
|
|
||||||
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.
|
|
||||||
*******************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
The smali mojo plugin is (very loosely) based on an unknown mojo plugin with
|
|
||||||
the following license:
|
|
||||||
|
|
||||||
*******************************************************************************
|
|
||||||
Copyright 2001-2005 The Apache Software Foundation.
|
|
||||||
|
|
||||||
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.
|
|
||||||
*******************************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
The RadixTree implementation in the "util" project is taken from
|
|
||||||
http://code.google.com/p/radixtree/ (version .3), and is used with minor
|
|
||||||
modifications in accordance with the following license:
|
|
||||||
|
|
||||||
*******************************************************************************
|
|
||||||
The MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2008 Tahseen Ur Rehman
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
*******************************************************************************
|
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
apply plugin: 'fatjar'
|
apply plugin: 'eu.appsatori.fatjar'
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
proguard
|
proguard
|
||||||
@ -21,7 +21,7 @@ configurations {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':brut.apktool:apktool-lib')
|
compile project(':brut.apktool:apktool-lib')
|
||||||
proguard 'net.sf.proguard:proguard-base:4.8'
|
proguard depends.proguard
|
||||||
}
|
}
|
||||||
|
|
||||||
gradle.taskGraph.whenReady {
|
gradle.taskGraph.whenReady {
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.tools.ant.filters.*
|
import org.apache.tools.ant.filters.*
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
@ -30,21 +29,21 @@ processResources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile ("junit:junit:4.10") {
|
compile("junit:junit:4.10") {
|
||||||
exclude(module: 'hamcrest-core')
|
exclude(module: 'hamcrest-core')
|
||||||
}
|
}
|
||||||
|
|
||||||
compile project(':brut.j.dir'),
|
compile project(':brut.j.dir'),
|
||||||
project(':brut.j.util'),
|
project(':brut.j.util'),
|
||||||
project(':brut.j.common'),
|
project(':brut.j.common'),
|
||||||
project(':brut.apktool.smali:util'),
|
project(':brut.apktool.smali:util'),
|
||||||
project(':brut.apktool.smali:dexlib2'),
|
project(':brut.apktool.smali:dexlib2'),
|
||||||
project(':brut.apktool.smali:baksmali'),
|
project(':brut.apktool.smali:baksmali'),
|
||||||
project(':brut.apktool.smali:smali'),
|
project(':brut.apktool.smali:smali'),
|
||||||
"org.yaml:snakeyaml:1.12",
|
depends.snakeyaml,
|
||||||
"xpp3:xpp3:1.1.4c",
|
depends.xmlpull,
|
||||||
"xmlunit:xmlunit:1.3",
|
depends.guava,
|
||||||
"com.google.guava:guava:12.0",
|
depends.commons_lang
|
||||||
"org.apache.commons:commons-lang3:3.1"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
testCompile depends.xmlunit
|
||||||
|
}
|
@ -15,6 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
testCompile 'junit:junit:4.8.2'
|
testCompile depends.junit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,6 @@
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':brut.j.common'),
|
compile project(':brut.j.common'),
|
||||||
project(':brut.j.util')
|
project(':brut.j.util')
|
||||||
testCompile "junit:junit:3.8.1"
|
testCompile depends.junit
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':brut.j.common')
|
compile project(':brut.j.common'),
|
||||||
compile "commons-io:commons-io:2.4",
|
depends.commons_io,
|
||||||
"org.apache.commons:commons-compress:1.4.1"
|
depends.commons_compress
|
||||||
testCompile "junit:junit:3.8.1"
|
testCompile depends.junit
|
||||||
}
|
}
|
||||||
|
150
build.gradle
150
build.gradle
@ -15,77 +15,47 @@
|
|||||||
*/
|
*/
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'maven'
|
apply plugin: 'maven'
|
||||||
|
apply from: 'gradle/functions.gradle'
|
||||||
|
|
||||||
def apktoolversion_major = '2.0.0'
|
def apktoolversion_major = '2.0.0'
|
||||||
def apktoolversion_minor = 'RC2';
|
def apktoolversion_minor = 'RC2';
|
||||||
|
|
||||||
if (!('release' in gradle.startParameter.taskNames)) {
|
|
||||||
def hash = getCheckedOutGitCommitHash();
|
|
||||||
|
|
||||||
if (hash == null) {
|
|
||||||
project.ext.set("hash", "dirty")
|
|
||||||
project.ext.set("apktool_version", apktoolversion_major + "-dirty")
|
|
||||||
println "Building SNAPSHOT (no .git folder found)";
|
|
||||||
} else {
|
|
||||||
project.ext.set("hash", hash);
|
|
||||||
project.ext.set("apktool_version", apktoolversion_major + "-" + hash + "-SNAPSHOT");
|
|
||||||
println "Building SNAPSHOT (" + getCheckedOutBranch() + "): " + hash;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
project.ext.set("hash", "")
|
|
||||||
project.ext.set("apktool_version", apktoolversion_major + "-" + apktoolversion_minor);
|
|
||||||
println "Building RELEASE (" + getCheckedOutBranch() + "): " + apktoolversion_major + "-" + apktoolversion_minor;
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://gist.github.com/JonasGroeger/7620911
|
|
||||||
def getCheckedOutGitCommitHash() {
|
|
||||||
def gitFolder = "$projectDir/.git/"
|
|
||||||
def takeFromHash = 6
|
|
||||||
|
|
||||||
def head
|
|
||||||
try {
|
|
||||||
head = new File(gitFolder + "HEAD").text.split(":")
|
|
||||||
} catch(Exception e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
def isCommit = head.length == 1
|
|
||||||
if(isCommit) return head[0].trim().take(takeFromHash)
|
|
||||||
|
|
||||||
def refHead = new File(gitFolder + head[1].trim())
|
|
||||||
refHead.text.trim().take takeFromHash
|
|
||||||
}
|
|
||||||
|
|
||||||
def getCheckedOutBranch() {
|
|
||||||
def gitFolder = "$projectDir/.git/"
|
|
||||||
|
|
||||||
def head
|
|
||||||
try {
|
|
||||||
head = new File(gitFolder + "HEAD").text.split("/")
|
|
||||||
return head[2].trim();
|
|
||||||
} catch(Exception e) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return "SNAPSHOT";
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceCompatibility = 1.7
|
sourceCompatibility = 1.7
|
||||||
targetCompatibility = 1.7
|
targetCompatibility = 1.7
|
||||||
|
|
||||||
|
if (!('release' in gradle.startParameter.taskNames)) {
|
||||||
|
def hash = getCheckedOutGitCommitHash();
|
||||||
|
|
||||||
|
if (hash == null) {
|
||||||
|
project.ext.set("hash", "dirty")
|
||||||
|
project.ext.set("apktool_version", apktoolversion_major + "-dirty")
|
||||||
|
println "Building SNAPSHOT (no .git folder found)";
|
||||||
|
} else {
|
||||||
|
project.ext.set("hash", hash);
|
||||||
|
project.ext.set("apktool_version", apktoolversion_major + "-" + hash + "-SNAPSHOT");
|
||||||
|
println "Building SNAPSHOT (" + getCheckedOutBranch() + "): " + hash;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
project.ext.set("hash", "")
|
||||||
|
project.ext.set("apktool_version", apktoolversion_major + "-" + apktoolversion_minor);
|
||||||
|
println "Building RELEASE (" + getCheckedOutBranch() + "): " + apktoolversion_major + "-" + apktoolversion_minor;
|
||||||
|
}
|
||||||
|
|
||||||
build.doFirst {
|
build.doFirst {
|
||||||
def javaVersion = System.getProperty("java.version")
|
def javaVersion = System.getProperty("java.version")
|
||||||
|
|
||||||
//fail the build if we don't have the expected Java version
|
//fail the build if we don't have the expected Java version
|
||||||
if (!javaVersion.startsWith("1.7")) {
|
if (!javaVersion.startsWith("1.7")) {
|
||||||
throw new GradleException("You can fix this problem!\nWe found a " + javaVersion + " JDK\nPlease update JAVA_HOME to use a 1.7 JDK\nCurrently it is set to: " + System.getProperty("java.home"));
|
throw new GradleException("You can fix this problem!\n" +
|
||||||
|
"We found a " + javaVersion + " JDK\n" +
|
||||||
|
"Please update JAVA_HOME to use a 1.7 JDK\n" +
|
||||||
|
"Currently it is set to: " + System.getProperty("java.home")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task wrapper(type: Wrapper) {
|
task wrapper(type: Wrapper) {
|
||||||
gradleVersion = '1.10'
|
gradleVersion = '2.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
// used for official releases only. Please don't use
|
// used for official releases only. Please don't use
|
||||||
@ -94,44 +64,52 @@ task release {
|
|||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
jcenter()
|
||||||
}
|
}
|
||||||
tasks.withType(Compile) {
|
tasks.withType(JavaCompile) {
|
||||||
options.encoding = "UTF-8"
|
options.encoding = "UTF-8"
|
||||||
|
options.incremental = true
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'eu.appsatori:gradle-fatjar-plugin:0.2-rc1'
|
classpath 'eu.appsatori:gradle-fatjar-plugin:0.3'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'maven'
|
apply plugin: 'maven'
|
||||||
apply plugin: 'idea'
|
apply plugin: 'idea'
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
depends = [guava: 'com.google.guava:guava:14.0',
|
depends = [
|
||||||
findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
|
antlr: 'org.antlr:antlr:3.5',
|
||||||
junit: 'junit:junit:4.6',
|
antlr_runtime: 'org.antlr:antlr-runtime:3.5',
|
||||||
antlr_runtime: 'org.antlr:antlr-runtime:3.5',
|
commons_cli: 'commons-cli:commons-cli:1.2',
|
||||||
antlr: 'org.antlr:antlr:3.5',
|
commons_compress: 'org.apache.commons:commons-compress:1.4.1',
|
||||||
commons_cli: 'commons-cli:commons-cli:1.2',
|
commons_io: 'commons-io:commons-io:2.4',
|
||||||
jflex: 'de.jflex:jflex:1.4.3',
|
commons_lang: 'org.apache.commons:commons-lang3:3.1',
|
||||||
proguard: 'net.sf.proguard:proguard-base:4.8'
|
findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
|
||||||
]
|
guava: 'com.google.guava:guava:14.0',
|
||||||
}
|
jflex: 'de.jflex:jflex:1.4.3',
|
||||||
|
junit: 'junit:junit:4.6',
|
||||||
repositories {
|
proguard: 'net.sf.proguard:proguard-base:4.8',
|
||||||
mavenCentral()
|
snakeyaml: 'org.yaml:snakeyaml:1.12',
|
||||||
}
|
xmlpull: 'xpp3:xpp3:1.1.4c',
|
||||||
|
xmlunit: 'xmlunit:xmlunit:1.3',
|
||||||
dependencies {
|
]
|
||||||
testCompile 'junit:junit:4.8.2'
|
}
|
||||||
}
|
|
||||||
|
repositories {
|
||||||
test {
|
mavenCentral()
|
||||||
testLogging {
|
}
|
||||||
exceptionFormat = 'full'
|
|
||||||
|
dependencies {
|
||||||
|
testCompile depends.junit
|
||||||
|
}
|
||||||
|
|
||||||
|
test {
|
||||||
|
testLogging {
|
||||||
|
exceptionFormat = 'full'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
49
gradle/functions.gradle
Normal file
49
gradle/functions.gradle
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/**
|
||||||
|
* Copyright 2011 Ryszard Wiśniewski <brut.alll@gmail.com>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
gradle.allprojects {
|
||||||
|
|
||||||
|
// https://gist.github.com/JonasGroeger/7620911
|
||||||
|
ext.getCheckedOutGitCommitHash = {
|
||||||
|
def gitFolder = "$projectDir/.git/"
|
||||||
|
def takeFromHash = 6
|
||||||
|
|
||||||
|
def head
|
||||||
|
try {
|
||||||
|
head = new File(gitFolder + "HEAD").text.split(":")
|
||||||
|
} catch(Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
def isCommit = head.length == 1
|
||||||
|
if(isCommit) return head[0].trim().take(takeFromHash)
|
||||||
|
|
||||||
|
def refHead = new File(gitFolder + head[1].trim())
|
||||||
|
refHead.text.trim().take takeFromHash
|
||||||
|
}
|
||||||
|
|
||||||
|
ext.getCheckedOutBranch = {
|
||||||
|
def gitFolder = "$projectDir/.git/"
|
||||||
|
|
||||||
|
def head
|
||||||
|
try {
|
||||||
|
head = new File(gitFolder + "HEAD").text.split("/")
|
||||||
|
return head[2].trim();
|
||||||
|
} catch(Exception e) {
|
||||||
|
return "SNAPSHOT";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
|||||||
#Sat Feb 08 18:00:26 CST 2014
|
#Thu Oct 23 07:11:01 CDT 2014
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=http\://downloads.gradle.org/distributions/gradle-1.10-all.zip
|
distributionUrl=http\://services.gradle.org/distributions/gradle-2.1-bin.zip
|
||||||
|
2
scripts/travis-ci/run-tests.sh
Executable file
2
scripts/travis-ci/run-tests.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
./gradlew build fatJar proguard
|
@ -1,10 +1,10 @@
|
|||||||
include 'brut.j.common',
|
include 'brut.j.common',
|
||||||
'brut.j.util',
|
'brut.j.util',
|
||||||
'brut.j.dir',
|
'brut.j.dir',
|
||||||
'brut.apktool.smali:util',
|
'brut.apktool.smali:util',
|
||||||
'brut.apktool.smali:dexlib2',
|
'brut.apktool.smali:dexlib2',
|
||||||
'brut.apktool.smali:baksmali',
|
'brut.apktool.smali:baksmali',
|
||||||
'brut.apktool.smali:smali',
|
'brut.apktool.smali:smali',
|
||||||
'brut.apktool.smali:dexlib2:accessorTestGenerator',
|
'brut.apktool.smali:dexlib2:accessorTestGenerator',
|
||||||
'brut.apktool:apktool-lib',
|
'brut.apktool:apktool-lib',
|
||||||
'brut.apktool:apktool-cli'
|
'brut.apktool:apktool-cli'
|
Loading…
Reference in New Issue
Block a user