问题一:
- 问题:在使用百度地图开发时,使用手机没事儿,但是使用模拟器报错:
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();
}