Android问题Bug工具_Aron
2017-09-11 09:38:36 0 举报
AI智能生成
记录Android开发中遇到的一些问题和Bug,喜欢就点个赞吧
作者其他创作
大纲/内容
Linux编译Android
子主题
7.0SystemUI的安装后权限
猜测: 签名问题
USER_PRESENT 解锁后进入home桌面
找不到资源id
2. 试着修改资源名字
安卓Linux编译环境
jack-admin start-server 总是卡住
端口被占用
cd ~到根目录
vi .jack-settings
cd .jack-server
vi config.properties
安卓根目录
make update-api -j32;make -j32
编译某个项目 总是1/1 100% Leaving
没有编译出with-local/classes.dex
1.可能虚拟机 虚拟内存不足
free -m查看虚拟内存
kernel/msm-3.18
AndroidKernel.mk
改成P1
HW_VERSION=P1
ninja: fatal: fork: Cannot allocate memory
-j16改成-j8或者-j4
改系统属性和进程数
free
查看剩余内存
sysctl kernel.pid_max
查看最大进程数
ps -eLf | wc -l
查看进程数
杀死Jack进程释放内存
还剩43兆
jack-admin list-server
jack-admin kill-server
还剩1000兆
Android.mk
LOCAL_DEX_PREOPT := false
true
为了加快运行速度,把dex分出来做的预处理
false
只生成.apk文件
LOCAL_JACK_ENABLED
LOCAL_JACK_ENABLED := disabled
WITH_DEXPREOPT
这个变量的使能导致system image中的所有东西都被提前优化(pre-optimized)。这可能导致system image非常大。
WITH_DEXPREOPT := true \u00A0
LOCAL_MODULE_TAGS
LOCAL_MODULE_TAGS :=user eng tests optionaluser: 指该模块只在user版本下才编译eng: 指该模块只在eng版本下才编译tests: 指该模块只在tests版本下才编译optional:指该模块在所有版本下都编译
system.prop
有一个property的值 \u00A0 ro.config.wallpaper=/system/media/journeyui-theme/wallpaper/launcher_wallpaper_01.png
出现的问题
repo sync -j8
Android Sync 同步 源码问题解决方案
git命令更新.repo/manifest的代码
git pull --rebase
然后在执行repo sync命令
make 出现编译依赖问题 need by
cd 到想要编译的单独项目
尝试mma命令
解决:配置好java环境和jack_vm_args。# set java 8
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export JRE_HOME=$JAVA_HOME/jreexport CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# set for android N build
export ANDROID_JACK_VM_ARGS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g\"echo \"ANDROID_JACK_VM_ARGS=$ANDROID_JACK_VM_ARGS\"
jack-admin start-server 打不开
改端口
用户根目录下~/.jack.settings
~/.jack.server/config.properties
改权限
chmod 600 ~/.jack.server/config.properties
-rw-------
其中某个项目编译出错
make YotaDevicesSDK -j16
第三方包的问题
Glide
Glide加载图片还是显示之前的图片
解决方案
Glide.with(this) .load(uri) .asBitmap() .centerCrop() .diskCacheStrategy( DiskCacheStrategy.NONE )//禁用磁盘缓存 .skipMemoryCache( true )//跳过内存缓存 .placeholder(R.mipmap.ic_head_default) .transform(new GlideCircleTransform(this)).into(headIV);
2.叫后台返回不同url的链接:即当图片更换的时候,后台返回的url也要改变,这样你本地就会重新加载网络图片。这才是根本解决方法.
OKHttp
上传进度回调很慢
应用Bug
相机
相机拍照没有位置信息
问题描述
原因
停止运行
log关键字
NullPointException
Crash
fatal
FATAL EXCEPTION: main
E/AndroidRuntime:
AndroidRuntime:
ANR
event log
am_crash
am_finish_activity
am_destroy_activity
am_proc_died
has died:
Android问题Bug
工具问题
Android Studio
更新连接错误
代理
19. SDK Manager 下载 代理 mirrors.neusoft.edu.cn 端口80
自动配置脚本URL
没有Android Monitor等一些窗口
切换至project 找到.idea/workspace.xml
搜 ToolWindowManager
加上
<window_info id=\"Android Monitor\" active=\"false\" anchor=\"bottom\" auto_hide=\"false\" internal_type=\"DOCKED\" type=\"DOCKED\" visible=\"false\" show_stripe_button=\"true\" weight=\"0.8967922\" sideWeight=\"0.4974293\" order=\"7\" side_tool=\"false\" content_ui=\"tabs\" />
重启即可
setting--》plugins--》找到“Android Support”选项,并勾选,然后会提示重启android studio
导入module 提示找不到module中的类
方案一 无效
app/build.gradle
compile project(':cylib')
<orderEntry type=\"module\" module-name=\"cylib\" exported=\"\" />
settings.gradle
app.iml加上
还是没用
猜想二 gradle版本问题
1.将gradle版本从2.3.3改成2.2.3
gradle-wrapper.properties 改成2.14.1-all
cysdk里面的内容引入成功了
不是重点
把cylib中build.gradle 注释掉一些就可以了
/*libraryVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.aar')) { // 输出apk名称为cy_analysis-1.0_2015-01-15_coolyota.aar def fileName if (variant.buildType.name.equals('release')) { fileName = \"cy_analysis-${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.aar\" } else if (variant.buildType.name.equals('debug')) { fileName = \"cy_analysis-${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}-debug.aar\
/*productFlavors { baoliyota {} coolyota {} productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name] } } sourceSets { coolyota { java.srcDir 'src/main/java' } }*/
Gradle
gradle版本
gradle:2.2.3
gradle-2.14.1-all.zip
gradle:2.3.1
gradle-3.3-all.zip
gradle:2.3.3
AS3.0Canary1
distributionUrl=https\\://services.gradle.org/distributions/gradle-3.5-all.zip
#distributionUrl=https\\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zip
AS3.0
gradle-4.1-all.zip
gradle:3.0.0
遇到的问题
outputFile Read-only
As Android plugin 3.0 migration guide suggests:Use all() instead of each()Use outputFileName instead of output.outputFile if you change only file name (that is your case)
buildTools必须26.0.2以上
All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
Dimensions
Moudle和主项目须一致
Error:Execution failed for task ':common:mockableAndroidJar'.> java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.utils.FileCache$FileCreatorException: java.lang.NullPointerException
方法一:
-x :app:mockableAndroidJar -x :common:mockableAndroidJar
方法二:
gradle 去掉这个task任务
原因:大概用了一些隐藏的api
配置
Gradle 语法
打印
String someString = 'mY_nAmE' println \"Original: \" + someString
Build
AS编译
点9图片编译出错
Build 编译报错
Error:Cannot create directory \\app\\build\\intermediates\\incremental\\packageDebug\\zip-cache
sudo chmod -R a=rwx app
chmod -R 777 app
删除app/下build目录
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
项目/.idea/libraries
删除leakcanary-anlysis和 watcher
把leakcanary版本1.5.2改成1.3
Success
The version of Gradle you are using (3.3) does not support the forTasks() method on BuildActionExecuter. Support for this is available in Gradle 3.5 and all later versions.
将 gradle-wrapper.propertie中distributionUrl=https\\://services.gradle.org/distributions/gradle-3.3-all.zip改为distributionUrl=https\\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zipclean一遍,大功告成,编译之后,会变成distributionUrl=https\\://services.gradle.org/distributions/gradle-3.5-all.zip
Error:Error converting bytecode to dex:Cause: Dex cannot parse version 52 byte code.This is caused by library dependencies that have been compiled using Java 8 or above.If you are using the 'java' gradle plugin in a library submodule add targetCompatibility = '1.7'sourceCompatibility = '1.7'to that submodule's build.gradle file.
出现这个现象的原因是你的jar包是基于jdk 1.8的,但当前AS默认使用的jdk是1.7的。添加如下两句话,使你的项目适配JDK1.8。
没用
2
把一个complie的jar包改成provider
com.google.protobuf plugin was already applied to the project: : and will not be applied again after plugin: androidWARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
gradle:3.4.1
protobuf
AS3.4.1
protobuf 0.8.6
AS3.2.1以上
gradle-4.6-all.zip
protobuf:0.8.3
gradle:2.3.0
protobuf:0.7.7
AS2.3.3
Sync
Error:Unable to load class 'org.gradle.api.internal.component.Usage'.Possible causes for this unexpected error include:Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Re-download dependencies and sync project (requires network)The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.a href=\"stopGradleDaemons\
listary 搜索host
edit Host
203.208.51.47 maven.google.com203.208.51.40 dl.google.com
#203.208.51.47 maven.google.com#203.208.51.40 dl.google.com
build.gradle加上google()
gradle.properties
systemProp.http.proxyHost=203.208.51.47systemProp.http.proxyPort=808systemProp.https.proxyHost=203.208.51.40systemProp.https.proxyPort=808
貌似无效
使用镜像
maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
Error:Execution failed for task ':app:processReleaseResources'.> Failed to execute aapt
点击最后一行:See complete output in console
跳转到 Gradle Console查看报错详情
gradlew clean --stacktrace
发现是下载不了gradle:3.0.1
在根目录的build.gradle的repositories下加上google()
新建gradle.properties
android.enableAapt2=false
关闭aapt2的编译,即可
Configuration with name 'debugAndroidTestCompile' not found
gradle 版本和 protobuf 依赖版本不匹配导致的,所以用新的 protobuf 就可以了
classpath 'com.android.tools.build:gradle:3.2.1' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.6'
2.3.3 ---> 0.8.0
No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android
用低版本的AS
或者把gradle改成3.1版本以上
如gradle 3.1.2
buildTools 27.0.3
命令行gradlew报错
不能找到classpath
配置环境变量
https://maven.google.com
https://dl.google.com/dl/android/maven2/
203.208.40.56 maven.google.com203.208.40.39 dl.google.com
windows
windows”→“System32”→“drivers”→“etc”
c:/windows/System32/drivers/etc/host
Linux
etc/host
配置gradle.propertiesAndroid项目中的prop和用户目录下的.gradle下的gradle.properties都修改试试
systemProp.http.proxyHost=127.0.0.1systemProp.http.proxyPort=1080systemProp.http.proxyUser=useridsystemProp.http.proxyPassword=passwordsystemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhostsystemProp.https.proxyHost=127.0.0.1systemProp.https.proxyPort=1080systemProp.https.proxyUser=useridsystemProp.https.proxyPassword=passwordsystemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost
可直接下载
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.0/builder-3.0.0-sources.jar
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.1/builder-3.0.1-sources.jar
猜测Linux系统使用了openjdk
org.apache.http.ssl.SSLInitializationException
com.google.common.util.concurrent.UncheckedExecutionException
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目
com.google.common.annotations:普通注解类型。 com.google.common.base:基本工具类库和接口。 com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存。 com.google.common.collect:带泛型的集合接口扩展和实现,以及工具类,这里你会发现很多好玩的集合。 com.google.common.eventbus:发布订阅风格的事件总线。 com.google.common.hash: 哈希工具包。 com.google.common.io:I/O工具包。 com.google.common.math:原始算术类型和超大数的运算工具包。 com.google.common.net:网络工具包。 com.google.common.primitives:八种原始类型和无符号类型的静态工具包。 com.google.common.reflect:反射工具包。 com.google.common.util.concurrent:多线程工具包。
AS版本
AS3 canary1
adb 进程杀不死
重启电脑才能连上
adb kill-service
adb start-service
ADB server didn't ACK
AS问题
修改User
在IDE启动的时候,重写user的变量名称。 找到IDE的安装目录/bin下面的idea.exe.vmoptions 和idea64.exe.vmoptions这两个文件,在里面添加 -Duser.name=huqiwen(在些修改为自己想要的名称) 然后重启IDEA。
第一次启动慢
在Android Studio安装目录下的 bin 目录下,找到 idea.properties 文件,在文件最后追加disable.android.first.run=true 。
disable.android.first.run=true
F2查看文档卡住
当前用户\\.AndroidStudio2.3\\config\\options\\jdk.table.xml
javadocPath:文档的路径sourcePath:源码路径将sorucePath节点下url的值“file://D:/Android/android-sdk/sources/android-25”(这是我自己的sdk路径)复制,替换掉javadocPath的url节点的值。
文件内容不对
2. 给项目文件夹改名
签名
build.gradle
local.properties
编译Android系统APP unknown \"SystemUI\"
System.image
编译
make system
打包System.image
make snod
系统
类加载loadClass
ClassNotFound
android.os.BadParcelableException: ClassNotFoundException when unmarshalling
ParcelableException
程序的写法
报错的语句即为config = in.readParcelable(null);
原因分析
事件分发
ListView中有Button,ItemClick事件失效
崩溃 异常 Bug
某些机型
某些方法
setBack
系统版本
Android5.1 Notification
连接蓝牙输入设备时Activity重启
可在AndroidManifest.xml上的activity加上 android:configChanges=\"keyboard|keyboardHidden\"
四大组件
广播
有些广播不能静态注册
如:监听电池电量的
Intent.ACTION_BATTERY_CHANGED
android.intent.action.BATTERY_CHANGED
文件读写问题
刷机问题
格式化刷机后(现烧android8.0需要格式化刷机),会将所有分区都擦掉,然后下载user版或user_debug版本的软件,因这两种软件版本有部分分区是禁止下载的,比如persist分区,这个分区中保存着sensor的配置信息及校准数据,该分区只有工厂版本才会允许下载,所以格式化后不经工厂版本直接下载非工厂版本会导致sensor无作用。
解决办法
在已刷的软件版本目录中找到persist.img文件,将其通过fastboot写入手机的persist分区中
adb reboot bootloader
fastboot flash persist [persist.img文件路径]
fastboot reboot
TextView
Textview maxline=1 ellipsize=\"end\" 导致中英文数字混合分割错误的问题
你好啊430000000呵呵呵呵呵呵呵…(理想的显示) 结果在一些手机上 特别是5.0以下的手机 显示成 你好啊…
内存问题
产生原因:调用了bitmap.recycle()方法
界面问题
setClipChildren(false)失效子view动画还是不能超出父布局
其实问题的关键就是,RecyclerView的父布局指定了高度,而item也指定了高度,而父布局的高度不足以包住item。在这种情况下,即使设置了clipchidren也无效。所以只要将父布局的高度增大到足够包裹下放大后的item即可。
子视图对应的父层必须指定一个高度,不然没有效果,类如当前的LinearLayout高度为48dp;
cardView.setClipToOutline(false);
v.setClipChildren(clipped); v.setClipToPadding(clipped);
0 条评论
回复 删除
下一页