Android开发bug总结(持续更新)

Android Studio bug总结

1.Error:Could not read cache value from 'C:\Users\xxxxx\.gradle\daemon\4.4\registry.bin'.

解决方法:打开C盘当前用户文件夹->.gradle->daemon->选择报错得gradle版本的文件夹->选中文件夹中所有文件并删除->重启studio
参考链接:https://stackoverflow.com/questions/36664143/could-not-read-cache-value-from-registry-bin-android-studio

开发中bug总结

1.java.lang.IllegalStateException:Fragment XXXFragment not attached to a context.

字面意思理解,fragment无法和上下文关联。其实就是fragment还没有添加到activity中,我在代码中使用了getResources(),由于一些原因fragment还没有添加到activity时就调用了该方法,导致报错,看源码:

 /**
     * Return <code>requireActivity().getResources()</code>.
     */
    @NonNull
    final public Resources getResources() {
        return requireContext().getResources();
    }

/**
     * Return the {@link Context} this fragment is currently associated with.
     *
     * @throws IllegalStateException if not currently associated with a context.
     * @see #getContext()
     */
    @NonNull
    public final Context requireContext() {
        Context context = getContext();
        if (context == null) {
            throw new IllegalStateException("Fragment " + this + " not attached to a context.");
        }
        return context;
    }

在context为空时会爆出该异常
解决办法:使用fragment自带方法isAdd(),添加判断即可

 /**
     * Return true if the fragment is currently added to its activity.
     */
    final public boolean isAdded() {
        return mHost != null && mAdded;
    }

2.oss上传视频或图片不走回调接口

在华为9.0版本手机中使用oss上传视频或图片没有走回调,一加6T中无问题,多次测试9.0以下无问题,已经做了兼容http的配置,推测是高版本兼容问题
oss代码如下:

Map<String, String> completeParams = new HashMap<>();
completeParams.put(KEY_UPLOAD_COMPLETE_FILE_PATH, filePath);
completeParams.put(KEY_UPLOAD_COMPLETE_URL, targetURL);

PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, targetURL, filePath);
putObjectRequest.setCallbackParam(completeParams);
OSSAsyncTask task = oss.asyncPutObject(putObjectRequest, this);
taskTable.put(filePath, task);

解决方案升级oss的sdk版本到 2.9.0 以上,api ‘com.aliyun.dpa:oss-android-sdk:+’,现在最新版为 2.9.2

参考链接:https://blog.csdn.net/weixin_33814685/article/details/87992779

3.无法运行app(please select android sdk)

① 删除项目 .idea文件夹下面的 library 文件夹

② sync 同步项目

问题就可以解决。原因是涉及到 gradle 与 ide 之间对依赖的解析和识别过程出现了问题,sdk 也是作为库去识别的,删除之后重新生成可以解决这个问题。

参考链接:https://www.cnblogs.com/aimqqroad-13/p/9313650.html

4.kotlin-stdlib-jre7 is deprecated. Please use kotlin-stdlib-jdk7 instead

找到module 的build.gradle 中的implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"替换成implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

5.Can’t change tag of fragment

fragment加载重复,检查是否适配器多次调用

6.Caused by: java.lang.NoSuchMethodError: No virtual method keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView; in class Ljava/util/concurrent/ConcurrentHashMap; or its super classes (declaration of ‘java.util.concurrent.ConcurrentHashMap’ appears in /system/framework/core-oj.jar)

在这里插入图片描述

7. Two-way binding with string concatenation operator (+) only supports the empty string constant (`` or “”)

在这里插入图片描述
去掉"="号

8.Gradle sync failed: Already disposed: Module: ‘***’

删除主工程目录下的.idea文件夹,重启

9.The APK file does not exist on disk

打开AndroidStudio右边的侧边栏,刷新gradle配置
在这里插入图片描述

9. ./gradlew: Permission denied

MacBook-Pro:meidapaydinner rockphoenix$ ./gradlew processDebugManifest -stacktrace
bash: ./gradlew: Permission denied

解决方法:输入 chmod +x gradlew

10. Manifest merger failed with multiple errors, see logs

项目添加aar报错,在Terminal输入第九条bug中的指令:

./gradlew processDebugManifest -stacktrace

在这里插入图片描述
可以发现是版本问题,升级至21即可

11.kotlin.NotImplementedError: An operation is not implemented: Not yet implemented

override fun getBundleExtras(extras: Bundle?) {
        TODO("Not yet implemented")
    }

去掉TODO即可

12.AndroidStudio无法创建Activity

原因:signingConfigs中不能出现debug字样,将其替换成自定义文本名
参考链接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值