mirror of
https://github.com/revanced/Apktool.git
synced 2025-05-02 15:04:24 +02:00
commit
ea16f3ff1d
@ -20,7 +20,7 @@ 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
|
||||||
- git submodule update --init --recursive
|
- git submodule update --init --recursive
|
||||||
script: ./gradlew build fatJar proguard
|
script: ./gradlew build shadowJar proguard
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
@ -33,11 +33,11 @@ For example for the `2.2.1` release.
|
|||||||
In order to maintain a clean slate. Run `gradlew clean` to start from a clean slate. Now lets build
|
In order to maintain a clean slate. Run `gradlew clean` to start from a clean slate. Now lets build
|
||||||
the new version. We should not have any new commits since the tagged commit.
|
the new version. We should not have any new commits since the tagged commit.
|
||||||
|
|
||||||
./gradlew build fatJar proguard release
|
./gradlew build shadowJar proguard release
|
||||||
|
|
||||||
The build should tell you what version you are building and it should match the commits you made previously.
|
The build should tell you what version you are building and it should match the commits you made previously.
|
||||||
|
|
||||||
➜ Apktool git:(master) ./gradlew build fatJar proguard release
|
➜ Apktool git:(master) ./gradlew build shadowJar proguard release
|
||||||
Building RELEASE (master): 2.2.2
|
Building RELEASE (master): 2.2.2
|
||||||
|
|
||||||
### Testing the binary.
|
### Testing the binary.
|
||||||
|
@ -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: 'eu.appsatori.fatjar'
|
apply plugin: 'com.github.johnrengelman.shadow'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile depends.commons_cli
|
compile depends.commons_cli
|
||||||
@ -30,22 +30,20 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gradle.taskGraph.whenReady {
|
jar {
|
||||||
fatJar {
|
|
||||||
manifest {
|
manifest {
|
||||||
attributes("Main-Class": "brut.apktool.Main")
|
attributes 'Main-Class' : 'brut.apktool.Main'
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task cleanOutputDirectory(type: Delete) {
|
task cleanOutputDirectory(type: Delete) {
|
||||||
delete fileTree(dir: jar.destinationDir.getPath(), exclude: "apktool-cli.jar")
|
delete fileTree(dir: jar.destinationDir.getPath(), exclude: "apktool-cli-all.jar")
|
||||||
}
|
}
|
||||||
|
|
||||||
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: fatJar) {
|
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: shadowJar) {
|
||||||
def outFile = jar.destinationDir.getPath() + '/' + "apktool" + '-' + project.apktool_version + '-small' + '.' + jar.extension
|
def outFile = jar.destinationDir.getPath() + '/' + "apktool" + '-' + project.apktool_version + '-small' + '.' + jar.extension
|
||||||
|
|
||||||
injars fatJar.archivePath
|
injars shadowJar.archivePath
|
||||||
outjars outFile
|
outjars outFile
|
||||||
|
|
||||||
libraryjars "${System.properties['java.home']}/lib/rt.jar"
|
libraryjars "${System.properties['java.home']}/lib/rt.jar"
|
||||||
@ -54,7 +52,6 @@ task proguard(type: proguard.gradle.ProGuardTask, dependsOn: fatJar) {
|
|||||||
dontoptimize
|
dontoptimize
|
||||||
|
|
||||||
keep 'public class brut.apktool.Main { public static void main(java.lang.String[]); }'
|
keep 'public class brut.apktool.Main { public static void main(java.lang.String[]); }'
|
||||||
keep 'class org.yaml.snakeyaml.** { public protected private *; }'
|
|
||||||
keepclassmembers 'enum * { public static **[] values(); public static ** valueOf(java.lang.String); }'
|
keepclassmembers 'enum * { public static **[] values(); public static ** valueOf(java.lang.String); }'
|
||||||
dontwarn 'com.google.common.base.**'
|
dontwarn 'com.google.common.base.**'
|
||||||
dontwarn 'com.google.common.collect.**'
|
dontwarn 'com.google.common.collect.**'
|
||||||
|
@ -50,11 +50,9 @@ public class ResPluralsValue extends ResBagValue implements
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResScalarValue rawValue = item;
|
|
||||||
|
|
||||||
serializer.startTag(null, "item");
|
serializer.startTag(null, "item");
|
||||||
serializer.attribute(null, "quantity", QUANTITY_MAP[i]);
|
serializer.attribute(null, "quantity", QUANTITY_MAP[i]);
|
||||||
serializer.text(ResXmlEncoders.enumerateNonPositionalSubstitutionsIfRequired(item.encodeAsResXmlValue()));
|
serializer.text(ResXmlEncoders.enumerateNonPositionalSubstitutionsIfRequired(item.encodeAsResXmlNonEscapedItemValue()));
|
||||||
serializer.endTag(null, "item");
|
serializer.endTag(null, "item");
|
||||||
}
|
}
|
||||||
serializer.endTag(null, "plurals");
|
serializer.endTag(null, "plurals");
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
package brut.androlib.res.util;
|
package brut.androlib.res.util;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import org.xmlpull.mxp1_serializer.MXSerializer;
|
import org.xmlpull.renamed.MXSerializer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ryszard Wiśniewski <brut.alll@gmail.com>
|
* @author Ryszard Wiśniewski <brut.alll@gmail.com>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.xmlpull.mxp1_serializer;
|
package org.xmlpull.renamed;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
@ -440,8 +440,8 @@ public class MXSerializer implements XmlSerializer {
|
|||||||
// check that prefix is not duplicated ...
|
// check that prefix is not duplicated ...
|
||||||
for (int i = elNamespaceCount[depth]; i < namespaceEnd; i++) {
|
for (int i = elNamespaceCount[depth]; i < namespaceEnd; i++) {
|
||||||
if (prefix == namespacePrefix[i]) {
|
if (prefix == namespacePrefix[i]) {
|
||||||
throw new IllegalStateException("duplicated prefix "
|
// Toss out extra namespaces at same depth to fix #1456
|
||||||
+ printable(prefix) + getLocation());
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,71 @@
|
|||||||
|
/**
|
||||||
|
* Copyright 2014 Ryszard Wiśniewski <brut.alll@gmail.com>
|
||||||
|
* Copyright 2014 Connor Tumbleson <connor.tumbleson@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.
|
||||||
|
*/
|
||||||
|
package brut.androlib;
|
||||||
|
|
||||||
|
import brut.common.BrutException;
|
||||||
|
import brut.directory.ExtFile;
|
||||||
|
import brut.util.OS;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class VectorDrawableTest {
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void beforeClass() throws Exception {
|
||||||
|
TestUtils.cleanFrameworkFile();
|
||||||
|
sTmpDir = new ExtFile(OS.createTempDirectory());
|
||||||
|
TestUtils.copyResourceDir(VectorDrawableTest.class, "brut/apktool/issue1456/", sTmpDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void afterClass() throws BrutException {
|
||||||
|
OS.rmdir(sTmpDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkIfDrawableFileDecodesProperly() throws BrutException, IOException {
|
||||||
|
String apk = "issue1456.apk";
|
||||||
|
|
||||||
|
// decode issue1456.apk
|
||||||
|
ApkDecoder apkDecoder = new ApkDecoder(new File(sTmpDir + File.separator + apk));
|
||||||
|
sTestOrigDir = new ExtFile(sTmpDir + File.separator + apk + ".out");
|
||||||
|
|
||||||
|
apkDecoder.setOutDir(new File(sTmpDir + File.separator + apk + ".out"));
|
||||||
|
apkDecoder.decode();
|
||||||
|
|
||||||
|
checkFileExists("res/drawable/ic_arrow_drop_down_black_24dp.xml");
|
||||||
|
checkFileExists("res/drawable/ic_android_black_24dp.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkFileExists(String path) throws BrutException {
|
||||||
|
File f = new File(sTestOrigDir, path);
|
||||||
|
|
||||||
|
assertTrue(f.isFile());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ExtFile sTmpDir;
|
||||||
|
private static ExtFile sTestOrigDir;
|
||||||
|
|
||||||
|
private final static Logger LOGGER = Logger.getLogger(VectorDrawableTest.class.getName());
|
||||||
|
}
|
Binary file not shown.
@ -21,17 +21,16 @@ buildscript {
|
|||||||
options.encoding = "UTF-8"
|
options.encoding = "UTF-8"
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'eu.appsatori:gradle-fatjar-plugin:0.3'
|
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'maven'
|
|
||||||
apply from: 'gradle/functions.gradle'
|
apply from: 'gradle/functions.gradle'
|
||||||
|
|
||||||
def apktoolversion_major = '2.2.3'
|
def apktoolversion_major = '2.2.3'
|
||||||
def apktoolversion_minor = 'SNAPSHOT';
|
def apktoolversion_minor = 'SNAPSHOT';
|
||||||
|
|
||||||
defaultTasks 'build', 'fatJar', 'proguard'
|
defaultTasks 'build', 'shadowJar', 'proguard'
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
@ -80,8 +79,6 @@ task release {
|
|||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'maven'
|
|
||||||
apply plugin: 'idea'
|
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
depends = [
|
depends = [
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
./gradlew build fatJar
|
./gradlew build shadowJar
|
||||||
|
Loading…
x
Reference in New Issue
Block a user