Android 问题总结

问题一:

  • 问题:在使用百度地图开发时,使用手机没事儿,但是使用模拟器报错:
java.lang.IllegalArgumentException: No config chosen
  • 原因:SDK找不到支持OPENGL的硬件,勾选Use Host Gup选项,说明模拟器使用的是物理机上的GPU。如果用户物理机没有独立显卡,就会报错,此种情况下不勾选这个选项就可以了。模拟器设置问题,与SDk无关。

  • 解决方法:
    使用最新的TextureMapView替代之前的MapView就可以了。

问题二:

  • 问题:项目中加入了jackson的开发包,编译运行时报错:
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: 

Duplicate files copied in APK META-INF/NOTICE
File1:D:\Code\XTCKuwoWatch\app\libs\jackson-core-2.4.4.jar
File2:D:\Code\XTCKuwoWatch\app\libs\jackson-databind-2.4.4.jar
  • 原因:多个 jar 包里包含了同样的文件(NOTICE.txt),导致打包时因为担心相互覆盖问题而提示出错

  • 解决方法:
    在 app 下的 build.gradle 中android {

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}内增加这段配置.

问题三:

  • 问题:编译时报错:
Error:(30, 0) Could not get unknown property 'compile' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
  • 原因:build.gradle中依赖错误,添加代码的位置可能不对,或者改变了代码的格式,造成studio识别不了

  • 解决方法:
    调整错误的代码格式

问题四:

  • 问题:错误日志:
Error:(26, 9) Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:26:9
Error:(28, 9) Attribute application@theme value=(@style/ThemeActionBar) from AndroidManifest.xml:28:9
is also present at XXXX-trunk:XXXXLib:unspecified:15:9 value=(@style/AppTheme)

Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:24:5 to override
Error:Execution failed for task ':XXXX:processDebugManifest'.
Manifest merger failed with multiple errors, see logs
  • 原因:AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的Android:icon和android:theme),则此时会合并失败,并报上面的错误

  • 解决方法:
    在Manifest.xml的application标签下添加两句:

tools:replace="android:icon, android:theme"
xmlns:tools="http://schemas.android.com/tools"

问题五:

  • 问题:Glide加载图片背景出现浅绿色现象
  • 原因:Glide默认的Bitmap格式是RGB_565,这是导致在加载图片是可能变绿的原因。RGB_565代表8位RGB位图,而Picasso默认的Bitmap格式是ARGB_8888代表32位RGB位图,位图位数越高代表其可以存储的颜色信息越多,图像也就越逼真,这也是Picasso图像质量更好的原因,但某些情況下容易OOM。
  • 解决方法:

  • 1.使用Glide加载图片时:

    Glide.with(context)
         .load(url)
         .diskCacheStrategy(DiskCacheStrategy.SOURCE)//将原图缓存到本地
         .into(imageview);
  • 2.如果第一种方法未能解决问题,可以将Bitmap的格式改为ARGB_8888。

    ①创建一个 GlideConfiguration类去实现GlideModule,修改Bitmap的格式。

    /**
     * 增加图片清晰度
     * Created by gss on 2017/6/29 18:13.
     */
    public class GlideConfiguration implements GlideModule {
        @Override
        public void applyOptions(Context context, GlideBuilder builder) {
            builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
        }
    
        @Override
        public void registerComponents(Context context, Glide glide) {
    
        }
    }

    ②清单文件中application根目录下添加

    <meta-data
        android:name="包路径.GlideConfiguration"
        android:value="GlideModule" />

    ③ 如果项目代码混淆了,在proguard-rules.pro中取消混淆Glide,否则图片加载不出来

    
    ## 配置取消混淆Glide
    
    -keepnames class 包路径.GlideConfiguration

问题六:

  • 问题:android 7.0 调用系统相机崩溃
  • 崩溃日志:android.os.fileuriexposedexception: file:///storage/emulated/0/tmpavatar exp。
  • 解决方法:不用修改原有代码,在Application的oncreate方法中,添加如下代码:
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
      StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
      StrictMode.setVmPolicy(builder.build());
      builder.detectFileUriExposure();
  }

猜你喜欢

转载自blog.csdn.net/qq_35733332/article/details/73251906