Questions tagged «proguard»

ProGuard是缩小,优化,混淆和预先验证Java类的工具。它包含在Android SDK中。

30
如何避免APK文件的反向工程?
我正在开发适用于Android 的付款处理应用程序,并且我想防止黑客访问APK文件中的任何资源,资产或源代码。 如果有人将.apk扩展名更改为.zip,那么他们可以将其解压缩并轻松访问应用程序的所有资源和资产,并且使用dex2jar和Java反编译器,他们还可以访问源代码。对Android APK文件进行反向工程非常容易-有关更多详细信息,请参见Stack Overflow问题:从APK文件反向工程到项目。 我已经使用了Android SDK随附的Proguard工具。当我反向工程使用签名的密钥库和Proguard生成的APK文件时,我得到的代码很混乱。 但是,Android组件的名称保持不变,某些代码(如应用中使用的键值)保持不变。根据Proguard文档,该工具不能混淆清单文件中提到的组件。 现在我的问题是: 如何完全防止 Android APK的反向工程?这可能吗? 如何保护应用程序的所有资源,资产和源代码,以使黑客无法以任何方式对APK文件进行黑客攻击? 有没有办法使黑客攻击变得更加艰难甚至不可能?我还能做些什么来保护APK文件中的源代码?

26
在构建Android应用的发行版之前,如何删除所有调试日志记录调用?
根据Google的说法,在将我的Android应用发布到Google Play之前,我必须“ 停用对源代码中Log方法的任何调用 ”。摘录于发布清单的第3节: 在构建要发布的应用程序之前,请确保禁用日志记录并禁用调试选项。您可以通过删除对源文件中Log方法的调用来停用日志记录。 我的开源项目很大,每次发布时都很难手动进行。此外,删除日志行可能很棘手,例如: if(condition) Log.d(LOG_TAG, "Something"); data.load(); data.show(); 如果我在Log行中注释,则该条件适用于下一行,并且可能不会调用load()。这样的情况难道不足以使我决定不应该存在吗? 那么,是否有更好的源代码级方法可以做到这一点?还是一些聪明的ProGuard语法可以有效但安全地删除所有Log行?

14
在应用程序中存储和保护私有API密钥的最佳实践
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 9个月前关闭。 大多数应用程序开发人员会将一些第三方库集成到他们的应用程序中。如果要访问服务(例如Dropbox或YouTube)或记录崩溃。第三方库和服务的数量惊人。大多数这些库和服务通过某种方式与服务进行身份验证来集成,大多数情况下,这是通过API密钥进行的。为了安全起见,服务通常会生成一个公共和私有密钥,通常也称为秘密密钥。不幸的是,为了连接到服务,必须使用此私钥进行身份验证,因此可能是应用程序的一部分。不用说,这面临着巨大的安全问题。可以在几分钟内从APK中提取公共和私有API密钥,并且可以轻松实现自动化。 假设我有类似的东西,我该如何保护密钥: public class DropboxService { private final static String APP_KEY = "jk433g34hg3"; private final static String APP_SECRET = "987dwdqwdqw90"; private final static AccessType ACCESS_TYPE = AccessType.DROPBOX; // SOME MORE CODE HERE } 您认为存储私钥的最佳和最安全的方法是什么?混淆,加密,您怎么看?


9
守护者地狱-找不到引用的类
所以,我TRYING释放一些软件,但Proguard的是让我头疼。 当我尝试使用proguard导出时,收到很多警告,即“找不到引用的类” 例如: [2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent [2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces. [2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'), [2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' …
125 android  proguard 

3
NameNotFoundException网络视图
我收到来自Crashlytics的错误消息,表明某些设备缺少com.google.android.webview。这怎么可能呢? java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.app/com.myapp.ReaderActivity}: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class …

5
在Eclipse中为Android启用ProGuard
ProGuard for Android上的新文档说,要在项目主目录中的default.properties文件中添加一行。但是,在打开此文件时,我在顶部阅读: # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 我想念什么吗? 另外,是否有一种方法只能针对Eclipse的生产版本(即,在导出成品时)启用ProGuard?


6
如何在Android Studio中使用ProGuard?
这是我在Android Studio中的第一个项目,并且我的应用程序的代码没有混淆。我在build.gradle文件中使用此配置: 我使用了Build> Generate Signed APK ...,并选中了Run Proguard。而且,当我使用Apk_OneClick.v4.2测试时,我的代码非常容易阅读: 请帮我。:(

11
transformClassesAndResourcesWithProguardForRelease失败
我正在尝试在控制台中使用Gradle构建我的Android应用程序。但是遇到有关任务':app:transformClassesAndResourcesWithProguardForRelease'的错误: build.gradle: buildscript { repositories { jcenter() maven { url "https://jitpack.io" } } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.google.gms:google-services:3.0.0' } } allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } task clean(type: Delete) { delete rootProject.buildDir } app / build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 24 …

4
ProGuard:库类的重复定义?
我为我的Android项目运行ProGuard,并收到以下警告: Note: duplicate definition of library class [org.apache.http.conn.scheme.HostNameResolver] Note: duplicate definition of library class [org.apache.http.conn.scheme.SocketFactory] Note: duplicate definition of library class [org.apache.http.conn.ConnectTimeoutException] Note: duplicate definition of library class [org.apache.http.params.HttpParams] Note: duplicate definition of library class [android.net.http.SslCertificate$DName] Note: duplicate definition of library class [android.net.http.SslError] Note: duplicate definition of library class [android.net.http.SslCertificate] …

9
appcompat-v7 v21.0.0导致装有Android v4.2.2的三星设备崩溃
我们只是将应用程序更改为使用该appcompat-v7 support库,以便利用支持操作栏和支持Material主题。使用v21.0.0 of appcompat-v7(和v21.0.0 of support-v4),我们现在Google Play只能看到和/或使三星设备runningAndroid v4.2.2 . Here is the stack trace from Google Play and the app appears to crash as soon as theactionbar中的崩溃和Crashlytics失效。 java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder at android.support.v7.app.ActionBarActivityDelegateBase.initializePanelMenu(ActionBarActivityDelegateBase.java:991) at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1041) at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259) at android.support.v7.app.ActionBarActivityDelegateBase.access$100(ActionBarActivityDelegateBase.java:80) at android.support.v7.app.ActionBarActivityDelegateBase$1.run(ActionBarActivityDelegateBase.java:116) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5299) at java.lang.reflect.Method.invokeNative(Native Method) …

5
是否可以在调试模式下使用proguard?
在我的android应用中,我想使用proguard测试一些功能。 我并不需要真正“调试”它,但是当我在Eclipse中运行时,我希望proguard能够运行。我不想每次都导出二进制文件(因此在发布模式下)并另存为apk并将其发送到设备进行测试。 有没有办法以这种方式运行proguard? 更新: 如果您不使用Eclipse,这似乎是可能的;由于问题标题不包括Eclipse,因此该问题有多个正确答案。

9
防止ProGuard混淆类成员名称
我的班ClassMultiPoint有子班。 public class ClassMultiPoints { public String message; public List<ClassPoints> data; public class ClassPoints { public String id; public List<ClassPoint> points; public class ClassPoint { public String speed; public String bearing; } } } 我oPoints将从解析中获得对象的价值GSON: oPoints = gson.fromJson( jsonString, ClassMultiPoints.class); 我尝试使用oPoints.message。 当我运行我的应用程序而没有proguard成功运行应用程序时。当proguard我的应用崩溃时运行我的应用时。 我认为问题是:proguard将'oPoints.message'班级的属性重命名为short 'a'。 我尝试保持方法和属性的名称不变,但是proguard将其重命名: proguard.cfg: -injars bin/classes -injars libs …

6
使用Proguard模糊处理时,Gson EnumTypeAdapter中出现AssertionError
我的项目在序列化/反序列化期间实现了一个TypeAdapterin Gson,以保留对象的多态状态。无论如何,该项目在开发测试期间运行良好,但是当通过proguard混淆发布并进行测试时,它只是崩溃。 03-21 10:06:53.632: E/AndroidRuntime(12441): FATAL EXCEPTION: main 03-21 10:06:53.632: E/AndroidRuntime(12441): java.lang.AssertionError 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.internal.bind.TypeAdapters$EnumTypeAdapter.<init>(SourceFile:724) 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.internal.bind.TypeAdapters$26.create(SourceFile:753) 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.Gson.getAdapter(SourceFile:353) 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(SourceFile:82) 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(SourceFile:81) 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(SourceFile:118) 03-21 10:06:53.632: E/AndroidRuntime(12441): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(SourceFile:72) 03-21 10:06:53.632: E/AndroidRuntime(12441): …
73 android  gson  proguard 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.