Giter Site home page Giter Site logo

andresguard's Introduction

AndResGuard

Build Status Download Android Arsenal

Read this in other languages: English, 简体中文.

AndResGuard is a tooling for reducing your apk size, it works like the ProGuard for Java source code, but only aim at the resource files. It changes res/drawable/wechat to r/d/a, and renames the resource file wechat.png to a.png. Finally, it repackages the apk with 7zip, which can reduce the package size obviously.

AndResGuard is fast, and it does NOT need the source codes. Input an Android apk, then we can get a 'ResGuard' apk in a few seconds.

Some uses of AndResGuard are:

  1. Obfuscate android resources. It contains all the resource type(such as drawable、layout、string...). It can prevent your apk from being reversed by Apktool.

  2. Shrinking the apk size. It can reduce the resources.arsc and the package size obviously.

  3. Repackage with 7zip. It supports repackage apk with 7zip, and we can specify the compression method for each file.

AndResGuard is a command-line tool, it supports Windows, Linux and Mac. We suggest you to use 7zip in Linux or Mac platform for a higher compression ratio.

How to use

With Gradle

This has been released on Bintray

apply plugin: 'AndResGuard'

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.21'
    }
}

andResGuard {
    // mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    use7zip = true
    useSign = true
    // It will keep the origin path of your resources when it's true
    keepRoot = false
    // If set, name column in arsc those need to proguard will be kept to this value
    fixedResName = "arg"
    // It will merge the duplicated resources, but don't rely on this feature too much.
    // it's always better to remove duplicated resource from repo
    mergeDuplicatedRes = true
    whiteList = [
        // your icon
        "R.drawable.icon",
        // for fabric
        "R.string.com.crashlytics.*",
        // for google-services
        "R.string.google_app_id",
        "R.string.gcm_defaultSenderId",
        "R.string.default_web_client_id",
        "R.string.ga_trackingId",
        "R.string.firebase_database_url",
        "R.string.google_api_key",
        "R.string.google_crash_reporting_api_key",
        "R.string.project_id",
    ]
    compressFilePattern = [
        "*.png",
        "*.jpg",
        "*.jpeg",
        "*.gif",
    ]
    sevenzip {
        artifact = 'com.tencent.mm:SevenZip:1.2.21'
        //path = "/usr/local/bin/7za"
    }

    /**
    * Optional: if finalApkBackupPath is null, AndResGuard will overwrite final apk
    * to the path which assemble[Task] write to
    **/
    // finalApkBackupPath = "${project.rootDir}/final.apk"

    /**
    * Optional: Specifies the name of the message digest algorithm to user when digesting the entries of JAR file
    * Only works in V1signing, default value is "SHA-1"
    **/
    // digestalg = "SHA-256"
}

Wildcard

The whiteList and compressFilePattern support wildcard include ? * +.

?	Zero or one character
*	Zero or more of character
+	One or more of character

WhiteList

You need put all resource which access via getIdentifier into whiteList. You can find more whitsList configs of third-part SDK in white_list.md. Welcome PR your configs which is not included in white_list.md

The whiteList only works on the specsName of resources, it wouldn't keep the path of resource. If you wanna keeping the path, please use mappingFile to implement it.

For example, we wanna keeping the path of icon, we need add below into our mappingFile.

res path mapping:
    res/mipmap-hdpi-v4 -> res/mipmap-hdpi-v4
    res/mipmap-mdpi-v4 -> res/mipmap-mdpi-v4
    res/mipmap-xhdpi-v4 -> res/mipmap-xhdpi-v4
    res/mipmap-xxhdpi-v4 -> res/mipmap-xxhdpi-v4
    res/mipmap-xxxhdpi-v4 -> res/mipmap-xxxhdpi-v4

How to Launch

If you are using Android Studio, you can find the generate task option in andresguard group. Or alternatively, you run ./gradlew resguard[BuildType | Flavor] in your terminal. The format of task name is as same as assemble.

Sevenzip

The sevenzip in gradle file can be set by path or artifact. Multiple assignments are allowed, but the winner is always path.

Result

If finalApkBackupPath is null, AndResGuard will overwrite final APK to the path which assemble[Task] write. Otherwise, it will store in the path you assigned.

Other

Looking for more detail

Known Issue

  1. The first element of list which returned by AssetManager#list(String path) is empty string when you're using the APK which is compressed by 7zip. #162

Best Practise

  1. Do NOT add resources.arsc into compressFilePattern unless the app size is really matter to you.(#84 #233)
  2. Do NOT enable 7zip compression(use7zip) when you distribute your APP on Google Play. It'll prevent the file-by-file patch when updating your APP. (#233)

Thanks

Apktool Connor Tumbleson

v2sig @jonyChina162

andresguard's People

Contributors

caij avatar cnhappier avatar eurstein avatar gitter-badger avatar heruoxin avatar iclinux avatar imknown avatar jokermonn avatar leleliu008 avatar lizhuangs avatar lnsooxd avatar mikeyang01 avatar niluogege avatar pranaysharma avatar scauzhangpeng avatar seven456 avatar shwenzhang avatar simpleton avatar suki-vt avatar uknownothingsnow avatar xen0n avatar xing634325131 avatar ysbing avatar zacklee avatar zjn0505 avatar zjupure avatar zlrab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

andresguard's Issues

生成后的APK无法安装

用最简单的方式成功生成了未签名的APK后,该APK无法安装。豌豆荚提示安装失败原因是“该应用签名有问题,无法安装”。我都没有做签名,为什么会这么提示。麻烦帮忙解决下,谢谢了。

混淆时出现异常

混淆一个很小的apk,是xposed模块,没有activity,发生错误如下

special configFile file path: D:\AndResGuard\config.xml
special output directory path: D:\AndResGuard\outapk
resourceprpguard begin
reading config file, D:\AndResGuard\config.xml
mKeepRoot false
unziping apk to D:\AndResGuard\outapk\temp
decoding resources.arsc
parse to get the exist names in the resouces.arsc first
reading packagename ztc1997.xperiachinesecharclock
Exception in thread "main" java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at java.util.ArrayList.removeAll(ArrayList.java:689)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder$ProguardStringBuilder
.removeStrings(ARSCDecoder.java:1145)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.
java:415)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecod
er.java:323)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder
.java:189)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.ja
va:53)
at com.tencent.mm.androlib.ApkDecoder.decode(ApkDecoder.java:178)
at com.tencent.mm.resourceproguard.Main.run(Main.java:303)
at com.tencent.mm.resourceproguard.Main.main(Main.java:67)

can not find the compress dataresFile

can not find the compress dataresFile=res/drawable/setup_steps_instruction_circle_shape.xml
can not find res file, you delete it? path: resFile=/Users/yy/AndroidStudioProjects/AndResGuard-master/app-release/temp/res/drawable/setup_steps_instruction_circle_shape.xml
can not find the compress dataresFile=res/drawable/setup_steps_title_circle_shape.xml
can not find res file, you delete it? path: resFile=/Users/yy/AndroidStudioProjects/AndResGuard-master/app-release/temp/res/drawable/setup_steps_title_circle_shape.xml
很多文件找不到,这是为什么呢?

Mac 10.11.1 无法使用7z打包

hi,
使用brew install p7zip编译安装的 7z
7za已经躺在/usr/local/bin目录下了,terminal已经可以直接调用7za
Android Studio中调用generate,可以生成app-rlease_signed.apk包
然后使用7z打包的时候,报错如下

general unsigned apk: app-release_unsigned.apk
DestResDir 698 rawResDir 698
signing apk: app-release_signed.apk
use 7zip to repackage: app-release_signed_7zip.apk, will cost much more time
general the raw 7zip file

java.io.IOException: Cannot run program "7za": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
    at java.lang.Runtime.exec(Runtime.java:617)
    at java.lang.Runtime.exec(Runtime.java:450)
    at java.lang.Runtime.exec(Runtime.java:347)
    at com.tencent.mm.androlib.ResourceApkBuilder.generalRaw7zip(ResourceApkBuilder.java:268)
    at com.tencent.mm.androlib.ResourceApkBuilder.use7zApk(ResourceApkBuilder.java:77)
    at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilder.java:47)
    at com.tencent.mm.resourceproguard.Main.buildApk(Main.java:93)
    at com.tencent.mm.resourceproguard.Main.resourceProguard(Main.java:70)
    at com.tencent.mm.resourceproguard.Main.run(Main.java:42)
    at com.tencent.mm.resourceproguard.Main.gradleRun(Main.java:36)

gradle配置如下

andResGuard {
    mappingFile = null
    use7zip = true
    keepRoot = false
    whiteList = [
            "com.ourapp.app.R.mipmap-xxhdpi.ic_launcher.png"
    ]
    compressFilePattern = [
            "*.png",
            "*.jpg",
            "*.jpeg",
            "*.gif",
            "resources.arsc"
    ]
}

而且gradle中貌似没有办法配置7z的路径,不知道有什么好办法可以处理这个问题

资源不对应bug

我在使用andresguard的时候发现一个问题,我在重打包的时候抛出一个IO异常,日志打印出原因是DestResDir 922 rawResDir 923(源文件和改变后的文件个数不等),经过排查发现解压的apk的raw文件夹中生成了一个config.properties的文件,这个文件没有被复制到混淆之后的资源文件夹中去。如下图(前面一张是解压的目录):
image
image

res path mapping 里面找不到res/values的映射,请问这是什么问题?

我混淆完生成的esource_mapping.txt里面有如下内容,但找不到res/values的映射。请问这是什么问题?
res/anim -> r/a
res/color -> r/b
res/color-v11 -> r/c
res/color-v23 -> r/d
res/drawable -> r/e
res/drawable-hdpi-v4 -> r/f
res/drawable-ldrtl-hdpi-v17 -> r/g
res/drawable-ldrtl-mdpi-v17 -> r/h
res/drawable-ldrtl-xhdpi-v17 -> r/i
res/drawable-ldrtl-xxhdpi-v17 -> r/j
res/drawable-ldrtl-xxxhdpi-v17 -> r/k
res/drawable-mdpi-v4 -> r/l
res/drawable-nodpi-v4 -> r/m
res/drawable-sw321dp-xhdpi-v13 -> r/n
res/drawable-sw600dp-v13 -> r/o
res/drawable-v21 -> r/p
res/drawable-v23 -> r/q
res/drawable-xhdpi-v4 -> r/r
res/drawable-xxhdpi-v4 -> r/s
res/drawable-xxxhdpi-v4 -> r/t
res/layout -> r/u
res/layout-sw600dp-v13 -> r/v
res/layout-v14 -> r/w
res/layout-v17 -> r/x
res/layout-v21 -> r/y
res/mipmap-xhdpi-v4 -> r/z

App Crash with fabric

01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     |  | 
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     |  |
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     |  |
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .   \ |  | /
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .    \    /
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     \  /
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .      \/
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
                                                    install an Android build tool and ask a team member to invite you to this app's organization.
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .      /\
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     /  \
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .    /    \
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .   / |  | \
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     |  |
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     |  |
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .     |  |
01-09 06:01:39.570 27119-27119/? E/CrashlyticsCore: .
01-09 06:01:39.575 27119-27119/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.xmonster.letsgo, PID: 27119
                                                   java.lang.RuntimeException: Unable to create application com.xmonster.letsgo.app.XmApplication: io.a.a.a.a.c.m: com.a.a.c.i: 
                                                   This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
                                                   install an Android build tool and ask a team member to invite you to this app's organization.

                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4710)
                                                       at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                       at android.os.Looper.loop(Looper.java:148)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                    Caused by: io.a.a.a.a.c.m: com.a.a.c.i: 
                                                   This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
                                                   install an Android build tool and ask a team member to invite you to this app's organization.

                                                       at com.a.a.c.f.a(SourceFile:297)
                                                       at com.a.a.c.f.e_(SourceFile:231)
                                                       at io.a.a.a.h.b(SourceFile:44)
                                                       at io.a.a.a.a.c.a.a(SourceFile:611)
                                                       at io.a.a.a.a.c.f.a(SourceFile:43)
                                                       at io.a.a.a.i.w(SourceFile:66)
                                                       at io.a.a.a.c.a(SourceFile:431)
                                                       at io.a.a.a.c.g(SourceFile:375)
                                                       at io.a.a.a.c.c(SourceFile:332)
                                                       at io.a.a.a.c.a(SourceFile:303)
                                                       at com.xmonster.letsgo.app.XmApplication.e(SourceFile:113)
                                                       at com.xmonster.letsgo.app.XmApplication.d(SourceFile:89)
                                                       at com.xmonster.letsgo.app.XmApplication.onCreate(SourceFile:79)
                                                       at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
                                                       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
                                                        ... 8 more
                                                    Caused by: com.a.a.c.i: 
                                                   This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
                                                   install an Android build tool and ask a team member to invite you to this app's organization.

                                                       at com.a.a.c.a.a(SourceFile:59)
                                                       at com.a.a.c.f.b(SourceFile:336)
                                                       at com.a.a.c.f.a(SourceFile:255)
                                                        ... 22 more

通过插件的话怎么手动设置zipalign?

为zipalign设置了环境变量,但是报错java.io.IOException: Cannot run program "zipalign": error=2, No such file or directory,该怎么手动设置zipalign?在config.xml可以设置?

这是什么问题?

在运行gradle中andresguard/generate时
报了下面这两个错误:

an not find the compress dataresFile=res/anim/slide_top_out.xml
can not find res file, you delete it? path: resFile=/Users/liudan/work/xx/build/outputs/apk/AndResProguard/temp/res/anim/slide_top_out.xml
can not find the compress dataresFile=res/anim/xr_slide_in_top.xml
can not find res file, you delete it? path: resFile=/Users/liudan/work/xx/build/outputs/apk/AndResProguard/temp/res/anim/xr_slide_in_top.xml
can not find the compress dataresFile=res/anim/xr_slide_out_bottom.xml
can not find res file, you delete it? path: resFile=/Users/liudan/work/xx/build/outputs/apk/AndResProguard/temp/res/anim/xr_slide_out_bottom.xml
以上资源在项目中有

java.io.IOException: Cannot run program "/Users/liudan/work/file/zip": error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at com.tencent.mm.androlib.ResourceApkBuilder.alignApk(ResourceApkBuilder.java:154)
at com.tencent.mm.androlib.ResourceApkBuilder.alignApk(ResourceApkBuilder.java:138)
at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilder.java:48)
这个是zipAlignPath和sevenZipPath,文件权限我都设置成everyone可读可写了。

不知道是什么问题,可以指点一下吗?

关于7z压缩的使用

7z压缩已经配置了环境变量,而且在7z命令行模式下也可以使用。但是通过这个工具java -jar andresguard-1.1.jar app-release.apk 这样使用的时候,会报

signing apk: app-release_signed.apk
sign apk app-release_signed.apk done, file reduce: 89.360352kb, time cost from begin: 7.542000s
use 7zip to repackage: app-release_signed_7zip.apk, will cost much more time
general the raw 7zip file
java.io.IOException: Cannot run program "7za": CreateProcess error=2, ?????????
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.tencent.mm.androlib.ResourceApkBuilder.generalRaw7zip(ResourceApkBuilder.java:346)
at com.tencent.mm.androlib.ResourceApkBuilder.use7zApk(ResourceApkBuilder.java:85)
at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilder.java:47)
at com.tencent.mm.resourceproguard.Main.run(Main.java:326)
at com.tencent.mm.resourceproguard.Main.main(Main.java:67)
Caused by: java.io.IOException: CreateProcess error=2, ?????????
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 9 more

这样的错误。

config.xml 关于7z的配置是:

<!--issue id="property" >

     <!--seventzip value= "true" />
     <!--metaname value="META-INF" />
     <!--keeproot value="false" />

 <!--/issue>

(在这上面放这段代码时我把注释删掉了,注释是为了显示这段代码,不加注释在这上面不显示Orz)

通过直接使用命令
java -jar andresguard-1.1.jar -repackage app-release_signed.apk -out output_directory -7zip D:\7-Zip\7z.exe -zipalign D:\Android\sdk\android-sdk\build-tools\21.1.2\zipalign.exe

压缩混淆后的APK是可以得,请问这是什么问题造成的呢?

补充:
7z 配置的环境变量: D:\7-Zip 这样配置 命令行是可以使用7z的。如果配置为D:\7-Zip\7z.exe是不能命令行使用7z的

请帮忙看一下 无法签名的原因

谢谢提供这么好的工具 现在遇到一个问题,请帮忙看下是不是我这边配置的问题 谢谢!
e:\work>java -jar resourcesproguard.jar input.apk
resourceprpguard begin
reading config file, e:\work\config.xml
mKeepRoot false
unziping apk to e:\work\input\temp
decoding resources.arsc
parse to get the exist names in the resouces.arsc first
reading packagename jp.wasabeef.example.recyclerview
resources mapping file e:\work\input\resource_mapping_input.txt done
writing new resources.arsc
resources.arsc Character Encoding: utf-8
resources.arsc reduece: 39.949219kb, time cost from begin: 1.052000s
general unsigned apk: input_unsigned.apk
general unsigned apk input_unsigned.apk done, file reduce: 200.967773kb, time co
st from begin: 1.422000s
signing apk: input_signed.apk
java.io.IOException: Cannot run program "jarsigner": CreateProcess error=2, 系统
找不到指定的文件。
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.tencent.mm.androlib.ResourceApkBuilder.signApk(ResourceApkBuilder
.java:135)
at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilde
r.java:46)
at com.tencent.mm.resourceproguard.Main.run(Main.java:326)
at com.tencent.mm.resourceproguard.Main.main(Main.java:67)
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 8 more

可以把签名前后的方法暴露出来么,见描述

public void buildApk(HashMap<String, Integer> compressData) throws IOException,InterruptedException
{
insureFileName();
generalUnsignApk(compressData);
signApk(); // 这一步由我们自己来签名,前后的方法暴露出来
use7zApk(compressData);
alignApk();
}

当使用splits的时候,只能打x86的包

splits的设置如下

splits {
        abi {
            enable true
            reset()
            include 'armeabi', 'x86'
            universalApk false
        }
    }

打包结果如下

resources mapping file /Users/song/Documents/works/NewsReader/app/build/outputs/apk/AndResProguard/resource_mapping_app-x86-release-unsigned.txt done
writing new resources.arsc 
resources.arsc Character Encoding: utf-8
general unsigned apk: app-x86-release-unsigned_unsigned.apk
DestResDir 374 rawResDir 374
signing apk: app-x86-release-unsigned_signed.apk
use 7zip to repackage: app-x86-release-unsigned_signed_7zip.apk, will cost much more time
general the raw 7zip file
rewrite the stored file into the 7zip, file count:0
zipaligning apk: app-x86-release-unsigned_signed.apk
zipaligning apk: app-x86-release-unsigned_signed_7zip.apk
resources proguard done, you can go to file to find the output /Users/song/Documents/works/NewsReader/app/build/outputs/apk/AndResProguard

BUILD SUCCESSFUL

There is a IOException when build after clean

java.io.IOException: the file count of /Users/sun/github/AndResGuard/AndResGuard-example/app/build/outputs/apk/AndResProguard/temp/res, and the file count of /Users/sun/github/AndResGuard/AndResGuard-example/app/build/outputs/apk/AndResProguard/r is not equal, 

拆包后 使用资源混淆,打开第二个dex中的activity就崩溃

Unable to instantiate activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.xxx.xxx.WalletActivity}: java.lang.ClassNotFoundException: Didn't find class "com.xxxx.xxx.xxx.xxx.WalletActivity" on path: DexPathList[[zip file "/data/app/com.xxx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-1/lib/arm, /data/app/com.xxx.xxx-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]

java.io.IOException: Cannot run program "zipalign": error=2, 没有那个文件或目录

java.io.IOException: Cannot run program "zipalign": error=2, 没有那个文件或目录
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at com.tencent.mm.androlib.ResourceApkBuilder.alignApk(ResourceApkBuilder.java:150)
at com.tencent.mm.androlib.ResourceApkBuilder.alignApk(ResourceApkBuilder.java:131)
at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilder.java:48)
at com.tencent.mm.resourceproguard.Main.buildApk(Main.java:94)
at com.tencent.mm.resourceproguard.Main.resourceProguard(Main.java:71)
at com.tencent.mm.resourceproguard.cli.CliMain.run(CliMain.java:193)
at com.tencent.mm.resourceproguard.cli.CliMain.main(CliMain.java:37)
Caused by: java.io.IOException: error=2, 没有那个文件或目录
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:187)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
... 7 more

ResourceApkBuilder.java中dos执行报错

gradle中执行dos命令那步出现问题:
java.io.IOException: Cannot run program "D:\Program": CreateProcess error=2, ?????????
在windows系统中一般都安装在program file目录,目录中包含了空格。导致jdk和7zip执行通过不了。

需要要路径前后加上"引起来。

What is this project about?

Hey everyone, this project looks interesting but I don't understand what it's supposed to do because of the language. Could anyone explain in English, please? Thank you.

用gradle怎么玩?求教

用了andresguard说找不到Task andresguardnot found in root project 'XXXX'.不能build完成之后自己就开始资源混淆么?我们的工程用了多渠道,并且自定义了apk的输出目录,还有就是使用的是jenkins自动化构建。即使上面的task不报错,但是能找到我的apk在哪么?我目前正在写jenkins的build插件。今天来github看看发现已经有了gradle插件了。所以试了试。

友盟登录以及分享需要添加白名单

<path value ="yourpackagename.R.string.umeng*" />   
<path value ="yourpackagename.R.layout.umeng*" />
<path value ="yourpackagename.R.drawable.umeng*" />
<path value ="yourpackagename.R.anim.umeng*" />
<path value ="yourpackagename.R.color.umeng*" />
<path value ="yourpackagename.R.style.*UM*" />
<path value ="yourpackagename.R.style.umeng*" />
 <path value ="yourpackagename.R.id.umeng*" />

</issue>

只能生成两个apk

运行时报错了,只生成了两个apk,app-release_signed.apk和app-release_unsigned.apk,我在环境变量里面已经配置7zip的路径和zipalign的路径,buildApk.bat的内容为:java -jar resourcesproguard.jar app-release.apk -config config.xml -out outapk -signature hello.jks hello123 hello123 Hello pause
并且config.xml中
。。。
seventzip value= "true"
。。。,
issue id="sign" isactive="true"
path value ="C:\Users\user\Desktop\AndResGuard-master\work\hello.jks"
storepass value="hello123"
keypass value="hello123"
alias value="Hello"
issue
报错如下:
java.io.IOException: Cannot run program "7za": CreateProcess error=2, ?????????
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
请问该怎么解决?

Cant follow the last step "andresguard/generate"

Hi,
Thanks for the Library.
I am not able to follow the last step mentioned on the Repo using Gradle settings.
i.e. "Run andresguard/generate task to generate compressed APK."
Could you please elaborate how to perform this step?

运行出错,找不到入口类。我用的是jdk1.6+win8。

D:\as\thinkAndroid\AndResGuard>java -jar AndResGuard-gradle-plugin-1.1.2.jar thinkandroid_V1.0_2016-02-24_normal.apk
Failed to load Main-Class manifest attribute from
AndResGuard-gradle-plugin-1.1.2.jar
解压打开发现里面的确没有配置入口类。是jdk过低?

请教一个问题

如何通过As里面的命令行,生成一个混淆的apk啊
运行andresguard/generate的gradle任务,可以得到资源混淆的安装包
这句没看懂

signing apk IOException

java.io.IOException: Cannot run program "jarsigner": CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at com.tencent.mm.androlib.ResourceApkBuilder.signApk(ResourceApkBuilder.java:135)
at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilder.java:46)
at com.tencent.mm.resourceproguard.Main.run(Main.java:326)
at com.tencent.mm.resourceproguard.Main.main(Main.java:67)
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 8 more

com.tencent.mm.androlib.AndrolibException: Could not decode arsc file

com.tencent.mm.androlib.AndrolibException: Could not decode arsc file
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.write(ARSCDecoder.java:75)
at com.tencent.mm.androlib.ApkDecoder.decode(ApkDecoder.java:182)
at com.tencent.mm.resourceproguard.Main.run(Main.java:309)
at com.tencent.mm.resourceproguard.Main.main(Main.java:73)
Caused by: java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at com.mindprod.ledatastream.LEDataInputStream.readFully(LEDataInputStream.java:201)
at com.tencent.mm.util.DataInputDelegate.readFully(DataInputDelegate.java:69)
at com.tencent.mm.util.ExtDataOutput.writeBytes(ExtDataOutput.java:30)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.reWriteTable(ARSCDecoder.java:266)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.writeTable(ARSCDecoder.java:225)
at com.tencent.mm.androlib.res.decoder.ARSCDecoder.write(ARSCDecoder.java:72)
... 3 more

Gradle插件目前不支持多渠道打包?

我用最新的gralde插件,运行andresguard/generate task 只生成一个压缩apk。我的配置里面是有多个productFlavor。目前是不支持同时压缩多个吗?

这是肿么回事?

在运行gradle中andresguard/generate时
报了下面这两个错误:

an not find the compress dataresFile=res/anim/slide_top_out.xml
can not find res file, you delete it? path: resFile=/Users/liudan/work/xx/build/outputs/apk/AndResProguard/temp/res/anim/slide_top_out.xml
can not find the compress dataresFile=res/anim/xr_slide_in_top.xml
can not find res file, you delete it? path: resFile=/Users/liudan/work/xx/build/outputs/apk/AndResProguard/temp/res/anim/xr_slide_in_top.xml
can not find the compress dataresFile=res/anim/xr_slide_out_bottom.xml
can not find res file, you delete it? path: resFile=/Users/liudan/work/xx/build/outputs/apk/AndResProguard/temp/res/anim/xr_slide_out_bottom.xml
以上资源在项目中有

java.io.IOException: Cannot run program "/Users/liudan/work/file/zip": error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at com.tencent.mm.androlib.ResourceApkBuilder.alignApk(ResourceApkBuilder.java:154)
at com.tencent.mm.androlib.ResourceApkBuilder.alignApk(ResourceApkBuilder.java:138)
at com.tencent.mm.androlib.ResourceApkBuilder.buildApk(ResourceApkBuilder.java:48)
这个是zipAlignPath和sevenZipPath,文件权限我都设置成everyone可读可写了。

不知道是什么问题,可以指点一下吗?

Help can't connect to server

I'm trying to fix my droid x 1080 and I can't connect to my server I went to my apps setting went to mobile networks got into my vpn or something like that reset defaults and it changed nothing what else can I do

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.