android-Android打包后,有些方法不能被调用

问题描述

Android打包后,有些方法不能被调用
    为什么测试的时候正常,可是打包完就失效了?

    shouye_wb.getSettings().setJavaScriptEnabled(true);
    shouye_wb.getSettings().setUseWideViewPort(true);
    shouye_wb.getSettings().setLoadWithOverviewMode(true);

    shouye_wb.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

    shouye_wb.addJavascriptInterface(new Object() {
        @SuppressWarnings("unused")
        public void openBrowser(final String url) {
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
            Uri content_url = Uri.parse(ServiceConstants.SERVER_URL + url);
            intent.setData(content_url);
            startActivity(intent);
        }
    }, "openBrowser");

解决方案

是因为混淆的结果吧,导致某些当用到反射时,无法找到名称,你需要在proguard-project.txt中设置哪些不能混淆

解决方案二:

在proguard文件加入 -keepattributes Annotation

解决方案三:

请参考以下信息,亲测好用。

例如我在一个类中定义了一个内部类

public class MyJavaScriptInterface {

public void XXX(String xxx) {

}

}

然后在我的proguard文件中加入

-keep class com.xxx.xxx.xxx$MyJavaScriptInterface {
*;
}

这样在4.0以下平台编译应用一切正常。

但是在4.0以上平台就会出现问题 解决办法:

在声明MyJavaScriptInterface 中加入annotation

public class MyJavaScriptInterface {

@JavascriptInterface

public void XXX(String xxx) {

}

}

在proguard文件加入 -keepattributes Annotation

这样一切就OK了

解决方案四:


上面的文件是排除混淆的一些配置
project.properties 这个文件里加一句proguard.config=proguard.cfg就是混淆

时间: 2024-07-29 10:32:26

android-Android打包后,有些方法不能被调用的相关文章

有些方法不能被调用呢-Android打包后,有些方法不能被调用

问题描述 Android打包后,有些方法不能被调用 Android打包后,有些方法不能被调用??请大神们看看啊..我看了有些说 混淆的问题,我试了啊 解决方案 是被混淆了吧,对于用于反射的数据最好不要混淆 解决方案二: android webview addJavascriptInterface 的方法不能调用 解决方案三: 怎么解决呢?? // 数字字典 同步 private void getDigitalDictionary() { DictVersionDBManager versionD

android 全局异常处理 在onCreate方法中抛出异常后会出现死循环,请问怎么解决呢?

问题描述 android 全局异常处理 在onCreate方法中抛出异常后会出现死循环,请问怎么解决呢? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println(2/0); } 这是全局异常处理中的 Application package

android打开图库后视频过滤方法

问题描述 android打开图库后视频过滤方法 我从手机上打开图库,里面视频和图片都有,我用下面这个代码打开图库,只有图片, Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,IMAGE_TYPE

android studio 混淆后,打包报错!!!

问题描述 android studio 混淆后,打包报错!!! `` Exception while processing task java.io.IOException: The same input jar [E:Workgvapplibsopen_sdk_r5509.jar] is specified twice. > at proguard.ConfigurationChecker.checkConflicts(ConfigurationChecker.java:216) > at

Android获取apk签名指纹的md5值(防止重新被打包)的实现方法

本文实例讲述了Android获取apk签名指纹的md5值以防止重新被打包的实现方法.分享给大家供大家参考,具体如下: 做个记录(这里只是Java层的签名校验,java层容易被破解,我建议apk加固下) 获取md5值来进行Apk签名校验, 可以防止apk重新被打包. 下面我说说怎么获取apk签名的md5值(有三种方法) 1.用代码获取签名指纹的md5值 /** * MD5加密 * @param byteStr 需要加密的内容 * @return 返回 byteStr的md5值 */ public

Android多渠道打包的方法步骤

本文介绍了Android多渠道打包的方法步骤,分享给大家,具体如下: 1.生成签名文件 点击 Build -> Generate Signed APK: 2.创建一个签名 红色填写部分需要认真填写,并牢记,其余部分随意填写 有了签名,单个app打包我就不详细说了,具体说下多渠道打包的步骤 2.多渠道打包 作用:就是根据不同的渠道值,去具体分析每个渠道的用户情况 步骤一: 在AndroidManifest.xml的application标签里添加一个meta-data标签定义 <meta-dat

android平台拍照后先剪裁再显示图片实现方法

mainActivity如下: package cn.testcamera; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Inte

浅谈Android应用保护(一):Android应用逆向的基本方法

对于未进行保护的Android应用,有很多方法和思路对其进行逆向分析和攻击.使用一些基本的方法,就可以打破对应用安全非常重要的机密性和完整性,实现获取其内部代码.数据,修改其代码逻辑和机制等操作.这篇文章主要介绍一些基本的应用逆向和分析方法,演示Android应用的代码机密性和完整性是如何被破坏,进而被应用攻击者所用的. 一.Dalvik层源码逆向 在dalvik层代码的分析中,(一般情况下,对于未进行防护的应用)在Dalvik层,我们只关心classes.dex的逆向分析. classes.d

Android实现Service重启的方法

  本文实例讲述了Android实现Service重启的方法.分享给大家供大家参考.具体如下: 做APP的时候,我们可能需要一个后台服务一直在运行着,得用到Service组件. 但服务可能在如下情况被杀死: A.用户手动点击停止. B.采用第三方软件(比如360手机卫士)进行清理,当然这样子除了系统服务外,其他的进程肯定也会被杀死,除非跟手机厂商联系. 这时候可能需要重启该服务,上网看了半天,有提到用Timer.AlarmManager去实现间歇性的发送广播启动Service(注册的广播接收后,