美文网首页
Android开发遇错记录

Android开发遇错记录

作者: 望着天数月亮 | 来源:发表于2018-09-03 10:06 被阅读0次

一.编译版本和测试版本冲突:

Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ.编译版本和测试版本冲突

解决办法:在 build.gradle 添加

android {
    ...
  configurations.all {
      resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
  }
}

dependencies {
    ...
}

二.okhttp数据流关闭

okhttp java.lang.IllegalStateException: closed 因调用response.body().string()后数据流已经关闭。
解决办法:重新创建response

private  class HeaderInterceptor implements Interceptor {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request()
                    .newBuilder()
                    .addHeader("content-type","application/json;charset=UTF-8")
                    .addHeader("access-token", "")
                    .addHeader("provider","android")
                    .addHeader("clientType","app")
                    .build();
            Response response = chain.proceed(request);
            MediaType contentType = response.body().contentType();
            String content = response.body().string();
            Log.i(TAG,"response = "+content);
            return response.newBuilder().body(ResponseBody.create(contentType,content)).build();
        }
    }

三.三方库的依赖关系

三方库通过远端仓库、本地jar包、library依赖时,在dependencies中会声明三方库的依赖关系。依赖关系如下:

下面是2.x版本依赖的说明,括号里对应的是3.0版本的依赖方式。

compile(api)
这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。

provided(compileOnly)
只在编译时有效,不会参与打包,可以在自己的moudle中使用该方式依赖。比如com.android.support,gson这些使用者常用的库,避免冲突。

apk(runtimeOnly)
只在生成apk的时候参与打包,编译时不会参与,很少用。

testCompile(testImplementation)
testCompile 只在单元测试代码的编译以及最终打包测试apk时有效。

debugCompile(debugImplementation)
debugCompile 只在debug模式的编译和最终的debug apk打包时有效。

releaseCompile(releaseImplementation)
releaseCompile 仅仅针对Release模式的编译和最终的Release apk打包。

dependencies {
    implementation files('libs/test.jar') 
    compile project(':test') 
    api files('libs/test.jar') 
    provided 'com.alipay.android.phone.mobilesdk:framework-build:2.5.0.170621123127:api@jar' 
}

四.关于动态库so的使用问题:

java.lang.UnsatisfiedLinkError: No implementation found for int cn.passguard.PassGuardEncrypt.makeKey() (tried Java_cn_passguard_PassGuardEncrypt_makeKey and Java_cn_passguard_PassGuardEncrypt_makeKey__)
提示找不到makeKey()方法的实现,是因为该方法的实现是在so库中的jni方法,jni方法命名中包含包名,而我在引用时包名与jni方法包名不一致,所以提示找不到。

解决方案:
修改so库中的方法名或者把.so库放在.so库接口对应的包名里。

相关文章

  • Android开发遇错记录

    一.编译版本和测试版本冲突: Conflict with dependency 'com.android.supp...

  • Android Studio 编译调用C++代码

    Android Studio NDK 开发 记录在Android Studio中NDK简单开发的步骤 用到的And...

  • 关于java的JNI和android的NDK释疑

    记录Android NDK开发相关知识,前期环境配置 自行谷歌 Android NDK 提供的组件 Android...

  • Android 自定义View

    前言 Android自定义View的详细步骤是我们每一个Android开发人员都必须掌握的技能,因为在开发中总会遇...

  • Android 开发记录

    这些文章是记录我学习过的,总结出来的文章,文章内容难免有错误以及做笔记的过程中忘了备注标注来源,如果侵犯了作者了权...

  • android开发记录

    1. CheckBox的问题 checkbox用theme设置style 2.Fragment跳转和回退 3.Fr...

  • Android 开发记录

    1、navigation导航 2、databinding 转义字符 3、Textview 省略号 4、EditTe...

  • Android开发记录

    1、使用ImageView加载太大的图片是不显示,log提示OpenGLRenderer:Bitmaptoolar...

  • Android 开发记录

    一、让子View显示超出自身容器大小 在子View的父布局上设置android:clipChildren=“fal...

  • Android技术点增长 - 收藏集 - 掘金

    学习 Android 开发过程的记录, 以及总结 - Android - 掘金这些文章是记录我学习过的,总结出来的...

网友评论

      本文标题:Android开发遇错记录

      本文链接:https://www.haomeiwen.com/subject/nnqbwftx.html