Android 优化 改Bug随记
- Dialog透明背景样式
- PermissionsDispatcher添加权限方法报错
- Dialog默认样式去除白色背景
- R文件报红,项目正常运行
- 集成库报错
- 自定义一些属性,遇见类似报错
- 编译报错
- 报错flavors信息
- 程序包org.apache.http不存在
- AS报错:failed to find target with hash string 'Google Inc.:Google APIs:21'的报错解决方法
- 报错信息:Error: Expected resource of type raw [ResourceType]
- 报错信息:Error:resource not found
- 项目可正常运行,但部分class找不到R
- 项目运行 Could not start ...... bin/mips64el-linux-android-strip
- Error: Program type already present...
Dialog透明背景样式
// https://www.cnblogs.com/windlivefamily/articles/2133956.html
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">false</item><!--半透明-->
<item name="android:windowNoTitle">true</item><!--无标题-->
<item name="android:windowBackground">@color/transparent</item><!--背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
</style>
</resources>
PermissionsDispatcher添加权限方法报错
// 切记在子模块导入库后,还需要添加对应的(***设置最新稳定版本号)
annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:***"
Dialog默认样式去除白色背景
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
R文件报红,项目正常运行
有人建议修改:
Android Studio应用—> 显示包内容 —> Contents —> bin —> idea.properties 修改里面
// 2500到5000之内的方法
idea.max.intellisense.filesize=5000
可能会解决这个问题,但是我这里是通过修改根目录下gradle插件版本号来解决的
// 反正你怀疑他的版本号导致的问题估计可以解决,不一定是我写的这个版本号
classpath 'com.android.tools.build:gradle:3.2.1'
集成库报错
Manifest merger failed with multiple errors, see logs
这种情况一般是AndroidManifest.xml合并冲突导致的,在主App的AndroidManifest.xml文件这句代码上下功夫,可解决90%以上的冲突
// 类似这类属性配置一下,我这里只列举了部分
tools:replace="android:theme,android:icon,android:supportsRtl,android:allowBackup"
也可以直接在Android Studio命令窗口,使用如下命令查看详细报错log
./gradlew processDebugManifest --stacktrace
合并多个清单文件,其实我们要搞清楚主App跟所有依赖库等配置文件的合并规则,这里贴一些小提示
build.gradle文件中配置属性优先级最高
多个配置文件属性合并优先级:
更多合并规则看google的 SDK 最靠谱
自定义一些属性,遇见类似报错
error: duplicate value for resource 'attr/hintColor' with config ''
办法:一般是属性名字跟其他地方冲突了,更改一下属性name即可
编译报错
Android NDK: APP_STL gnustl_static is no longer supported
这种情况一般是NDK版本过高导致,取巧解决:下载一个低版本NDK,解压后应用即可
报错flavors信息
All flavors must now belong to a named flavor dimension
defaultConfig {
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}
程序包org.apache.http不存在
buildToolsVersion并级的build.gradle中导入这个库即可
useLibrary 'org.apache.http.legacy'
AS报错:failed to find target with hash string 'Google Inc.:Google APIs:21’的报错解决方法
看这个错,甭管撒情况,下载相应版本的SDK然后重启Android Studio即可,记得,重启Android Studio
报错信息:Error: Expected resource of type raw [ResourceType]
既然是IDE做了检查,那我们可以绕过该检查就可以了
-
方法1: 对代码的设置@SuppressWarnings(“ResourceType”)来消除警告
-
方法2:
android {
lintOptions {
disable "ResourceType"
}
}
报错信息:Error:resource not found
Error:resource
android:style/TextAppearance.Material.Widget.Button.Borderless.Colored not found
将compileSdkVersion修改成25,并将对应的buildToolsVersion修改成25.0.2即可,这个错误不适合大众,仅供我自己参考
Bug永无止境,坦然接受,虚心修改就对了。你还可以参考
项目可正常运行,但部分class找不到R
注意项目根目录下build.gradle中gradle插件版本号和gradle文件夹中gradle-wrapper.properties配置gradle版本号,这2个版本号修改可能会导致出现该问题
项目运行 Could not start … bin/mips64el-linux-android-strip
这种一般是NDK版本导致的,解决办法:
android {
packagingOptions {
doNotStrip '*/mips/*.so'
doNotStrip '*/mips64/*.so'
}
}
Error: Program type already present…
Error: Program type already present: android.support.design.widget.CoordinatorLayout$Behavior
一般是因为版本号导致的
// api 'com.android.support:design:24.0.0' 我是这个版本号报错
api 'com.android.support:design:27.1.0'