我正在使用带有gradle的android studio 0.9.3 'com.android.tools.build:gradle:0.14.+'
apply plugin:'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
applicationId "xxx.xxx.xxx"
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0.11"
}
signingConfigs{
releaseConfig{
storeFile file("xxxxxxx")
storePassword = "xxxx"
keyAlias = "xxxx"
keyPassword = "xxxx"
}
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.releaseConfig
// adds version to file name
applicationVariants.all { variant ->
def file = variant.outputFile
variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}
}
}
}
dependencies …Run Code Online (Sandbox Code Playgroud) 我混淆了我的apk,但文件大小只从12MB减少到10.5MB.
它只是一个相对较小的减少的原因可能是因为我的应用程序使用了几个大型库,但有没有办法可以检查已经执行的混淆程度?
以防万一,这是我的proguard-project.txt文件......
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options …Run Code Online (Sandbox Code Playgroud) 我必须通过在Android Studio中启用Proguard混淆来保护我的应用.我已经搜索了如何应用它的过程,但我没有得到任何明确的解决方案.当我尝试它时,我总是得到一个错误.那么有谁可以告诉我在我的应用程序中应用它的明确步骤?
我通过以下步骤执行此操作:
在Android Studio中,打开一个Android项目.
更改为项目视图.
更改以下行:
minifyEnable false 至 minifyEnable true
设置ProGuard规则(可选)
4.1在项目视图中,选择proguard-rules.pro文件.
4.2添加以下行以告知ProGuard不要混淆某些类.
-keepclassmembers class com.dom925.xxxx
{
public *
}
Run Code Online (Sandbox Code Playgroud)通过以下步骤获得的错误是
错误:任务':app:packageRelease'的执行失败.无法计算D:\ Android\Pojectname\app\build\intermediates\classes-proguard\release\classes.jar的哈希值
根据AAR文件规范,Android库包含'proguard.txt'文件.我的理解是这个文件声明了如何正确地对库进行模糊处理和缩小.在我的情况下,我需要保留一些API类.
如何在库的build.gradle中声明库的proguard.txt文件?在创建使用我的库的应用程序(APK)时,是否会自动读取此文件?
我没有在Android的Gradle Plugin用户指南中找到此信息.
我的项目内容大小如下,
apk(签名,调试两者)大小为4.87MB.也试过ProGuard没有改变.
我不明白这个的原因.即使我没有在我的项目中添加任何jar文件.
我将ADT项目导入最新版本的Android Studio(0.6.1).两个项目共享相同的代码和库.此外,两个项目都已清除并编译,并启用了相同的ProGuard设置.
但ADT APK文件的大小是1.8 MB,Android Studio APK文件是2.7 MB.
由于Android Studio仍在早期访问预览中或者我是否能够获得几乎相同的APK文件大小,因此APK文件大小增加50%被认为是正常的?
(更新:我刚刚解压缩了APK文件:所有文件的大小几乎相同,但差异来自classes.dex文件,ADT 为1.2 MB,Android Studio为4.4 MB.)
以下代码块的用途和含义是什么?
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
Run Code Online (Sandbox Code Playgroud)