个人Bug集锦--更新中

小生不才,目前入坑程序员三年多,最近才开始写自己的技术博客,这一篇记录了一些Bug的解决方案,都是参考了一些大牛的博客,亲自测试然后自己做笔记的记录.只写上了解决办法,有一些原理性的分析没加上,请各位看官见谅.如有不妥之处,请留言指出相互探讨.

webView加载H5地址,返回上一级h5是,报错:err_cache_miss

解决办法:加上下面的代码

if (Build.VERSION.SDK_INT >= 19) {
            settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        }

使用webView加载H5,遇到报错:xx地址找不到 error_log:ERR_UNKNOWN_URL_SCHEME

原因:是因为webView.loadUrl()里面的url跳转只支持http或者https开头的地址,其他weixin,alipay或者market等开头的地址跳转不来就会报上面的错误.

解决方案:

  web_view.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                try {
                    if (!url.startsWith("http") && !url.startsWith("https"))
                    //其他自定义的scheme
                    {
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                } catch (Exception e) {
 //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
                    return false;
                }
                view.loadUrl(url);
                return true;
            }

EvenBus依赖后报错:

Error:No option eventBusIndex passed to annotation processor
Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’.
Compilation failed; see the compiler error output for details…

解决方案:

android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [ eventBusIndex : 'com.example.myapp.MyEventBusIndex' ]
            }
        }
    }
}
 
dependencies {
    implementation 'org.greenrobot:eventbus:3.1.1'
    annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.1.1'
}

dex引用超过64k的解决办法:

defaultConfig {
//越过dex的方法引用64k限制--api>21时只需要加下面这句代码
        multiDexEnabled true
}
dependencies {
 //越过dex的方法引用64k限制--api<21时需要加这个依赖
    implementation 'com.android.support:multidex:1.0.3'
}

问题:华为高版本(8.0以上)手机,使用测试地址时,报错日志内容有:不能明文传递,或者位置服务异常,或者证书问题.

解决办法:在res包下见一个xml包,新建一个文件(network_security_config),然后在manifest.xml文件里面的

nertwork_security_config的代码:



    

AndroidStudio报错:Could not download groovy-all.jar

解决方法: ①:在APP的build.gradle下添加:

lintOptions {
        checkReleaseBuilds false
        abortOnError false
}

②:在项目的build.gradle里面添加下面的代理.(因为既然是下载问题,可能涉及到等问题)

repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
    }

  allprojects {
        repositories {
            maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
        }
    }

#error: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child’s parent first.(ViewPager适配器中instantiateItem方法)

解决方法:

1.去除R.layout.viewpager的XML文件中GridView的外部的LinearLayout布局控件,这样GridView就不存在父容器控件。

2.在在PagerAdapter中通过instantiateItem方法中动态添加视图前做一个简单的判断,判断待添加的视图是否已存在父控件,若存在则调用removeAllViews()去除之。
ViewGroup parent = (ViewGroup) mImages.get(position).getParent();
//(mImages是ImageView的集合)
if (parent != null) {
    	parent.removeAllViews();
} 

RecycleView嵌套RecycleView时需要测量条目的高度和宽度

mLayout.setMeasuredDimensionFromChildren(widthSpec, heightSpec)这行代码的作用就是根据子控件的大小,设置RecyclerView的大小

FaceBook集成三方登录时,生成发布散列秘钥的dos命令:

示例:keytool -exportcert -alias aaa -keystore “bbb\ccc.jks” | “ddd” sha1 -binary | “ddd” base64

aaa:签名证书的alias名称
bbb:签名证书的地址
ccc:签名文件的名字
ddd:openssl.exe的地址

FaceBook登录页下面的隐私政策中的AppName是配置在manifest.xml中


            ```

你可能感兴趣的:(android,bug)