BUG笔记
为什么要写这个BUG笔记呢?
程序员与bug的相遇,到相知,最后到相忘,这些必经的过程,为了保持能过不相忘,还是选择了笔记.
对于我这种不擅长记忆的,只能提起我自己的烂笔头了.
1.
Error:(11) No resource identifier found for attribute ‘roundIcon’ in package
- 问题原因: 无法找到定义的roundicon资源. roundicon是新版本中出现的,在老版中是没有roundicon的.
- 解决方法:删除AndroidManifest.xml里的android:roundIcon=”@mipmap/ic_launcher_round”
2.
Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to “831b8e220b7bb0cbbb244f1328f1d4fd5da9”
Fix plugin version and sync project
Open File
- 问题原因:
- 解决方法:将
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-alpha3'
}
改成
dependencies {
classpath 'com.android.tools.build:gradle:1.+'
}
3.
Error:(24, 13) Failed to resolve: com.android.support:appcompat-v7:23.+
Install Repository and sync project
Show in File
Show in Project Structure dialog
- 问题原因:
- 解决方法:SDK Manager中 下载Google repository 和 Android support repository.
4.
FATAL EXCEPTION: main
Process: com.viking.jninetndk1, PID: 6145
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol “__aeabi_memclr4”
referenced by “/data/app/com.viking.jninetndk1-1/lib/arm/libjniLib.so “…
- 问题原因: targetSdkVersion版本和NDK版本不匹配
- 解决方法: 修改NDK和targetSdkVersion版本号.
android studio :2.0 preview 4
android sdk :android-sdk_r24.4.1-windows
android ndk :android-ndk-r10e
gradle : gradle-2.10-all
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.viking.myapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk{
moduleName "jniLib"
abiFilters "armeabi","armeabi-v7a"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.+'
}
5.
libcooee.so: has text relocations
- 问题原因: 编译.so文件时使用了较低版本sdk,而project 中的配置 targetSdkVersion22 大于so编译时使用的sdkversion
- 解决方法: 只需要把功能中的targetSdkVersion降低.
defaultConfig {
applicationId “com.example”
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName “1.0”
}
6.
Gradle version 2.10 is required. Current version is 2.8. If using the gradle wrapper,
try editing the distributionUrl in F:\work\qxueyou\gradle\wrapper\gradle-wrapper.
properties to gradle-2.10-all.zip
- 问题原因: gradle版本要2.10 当前是2.8.
- 解决方法: 将项目中gradle目录中gradle-wrapper.properties文件中的distributionUrl=https://services.gradle.org/distributions/gradle-2.8-all.zip修改成与自己gradle匹配的distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
7.
A problem occurred evaluating project ‘:app’.
Failed to apply plugin [id ‘com.android.application’]
Gradle version 2.2 is required. Current version is 2.10. If using the gradle wrapper, try editing the distributionUrl in /Users/brindy/Projects/TestApp/gradle/wrapper/gradle-wrapper.properties to gradle-2.2-all.zip
- 问题原因:
- 解决方法:
将项目中gradle目录中gradle-wrapper.properties文件中的distributionUrl=https://services.gradle.org/distributions/gradle-3.0-all.zip修改成与自己gradle匹配的distributionUrl=https://services.gradle.org/distributions/gradle-2.8-all.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
8.
Error:(1, 0) Minimum supported Gradle version is 3.3. Current version is 3.2
- 问题原因: 支持的Gradle最小版本为3.3 当前版本为3.2
- 解决方法: 将
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
}
改成
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
9.
- 问题原因: 网络请求更新gradle失败.
- 解决方法:settings->Build,Execution,Deployment->Gradle 将use default gradle wrapper 改为use local gradle. 将使用网络的gralde设置成使用本地的gradle.
10.
unable to access android sdk add-on list
- 问题原因:
- 解决方法: 需要到Android Studio的bin目录下找到 idea.properties 这个文件。使用记事本或其他编辑器,打开这个文件,更改disable.android.first.run 的值等于true,即disable.android.first.run=true 如果没有则直接添加.
11.
‘It seems that you device does not support camera (or it is locked)’
- 问题原因:相机权限的问题,Android6.0 之后需要动态配置权限
- 解决方法:在手机端 setting -> app -> 权限 -> 添加权限
12.
FATAL EXCEPTION: main Process: com.viking.jnidemo, PID: 27114
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.viking.jnidemo-1/base.apk”, zip file “/data/app/com.viking.jnidemo-1/split_lib_dependencies_apk.apk”, zip file “/data/app/com.viking.jnidemo-1/split_lib_slice_0_apk.apk”, zip file “/data/app/com.viking.jnidemo-1/split_lib_slice_1_apk.apk”],nativeLibraryDirectories=[/data/app/com.viking.jnidemo-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn’t find “libjniLib.so”
- 问题原因: 无法找到libjniLib.so 库
- 解决方法:将jnilibs的资源目录引入,sourcesets中添加 jniLibs.srcDirs=[‘libs’]
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/main/aidl']
jniLibs.srcDirs=['libs']
jni.srcDirs =[]
}
}
13.
FAILURE: Build failed with an exception.
Execution failed for task ‘:app:mergeDebugResources’.
Some file crunching failed, see logs for details
AAPT: libpng error: Not a PNG file
AAPT err(Facade for 197782496) : No Delegate set : lost message:libpng error: Not a PNG file
- 问题原因:说文件不是PNG文件,可是没有说是哪一张图
- 解决方法:在build.gradle里加入
android {
......
aaptOptions { cruncherEnabled = false }
}
14.
Error:Execution failed for task ‘:app:compileDebugAidl’.
- 问题原因: 这个是我AIDL文件从服务端复制到客户端,包名没有修改.
- 解决方法: 仔细看看自己的AIDL文件,是否有写错什么?
15.
FATAL EXCEPTION: main
Process: com.viking.aidl2, PID: 28327
java.lang.SecurityException: Binder invocation to an incorrect interface
at android.os.Parcel.readException(Parcel.java:1602)
at android.os.Parcel.readException(Parcel.java:1555)
at com.viking.aidl2.PersonManager
Stub
S
t
u
b
Proxy.getPersonAge(PersonManager.java:107)
at com.viking.aidl2.MainActivity
2.onServiceConnected(MainActivity.java:41)atandroid.app.LoadedApk
2.
o
n
S
e
r
v
i
c
e
C
o
n
n
e
c
t
e
d
(
M
a
i
n
A
c
t
i
v
i
t
y
.
j
a
v
a
:
41
)
a
t
a
n
d
r
o
i
d
.
a
p
p
.
L
o
a
d
e
d
A
p
k
ServiceDispatcher.doConnected(LoadedApk.java:1375)
at android.app.LoadedApk
ServiceDispatcher
S
e
r
v
i
c
e
D
i
s
p
a
t
c
h
e
r
RunConnection.run(LoadedApk.java:1392)
at android.os.Handler.handleCallback(Handler.java:819)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:210)
at android.app.ActivityThread.main(ActivityThread.java:5943)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:817)
- 问题原因: binder调用了错误的接口.
- 解决方法: 服务端与客户端都要有相同的接口(使用到的),这里的“相同”是指完全相同,包括包名,也就是说要在不同工程下AIDL文件建立相同的包名.
16.
FATAL EXCEPTION: main
Process: com.viking.testjar, PID: 21432
java.lang.UnsatisfiedLinkError: No implementation found for int com.viking.myapplication.JniMethod.NetInit() (tried Java_com_viking_myapplication_JniMethod_NetInit and Java_com_viking_myapplication_JniMethod_NetInit__)
- 问题原因:无法找到so库里面的方法.是没有加载so库导致的.
- 解决方法:添加加载so库即可.
static {
System.loadLibrary("jniLib");
}
17.
FATAL EXCEPTION:main
Process:com.xxx.xxx, PID: ….
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol “_aeabi_memclr4” referenced by “/data/app/com.viking.xxx-2/lib/arm/libxxx.so”…
- 问题原因: 这可能是你sdk和ndk版本不匹配导致的.
解决方法: 将sdk和ndk改成匹配的就可以了,至于什么版本与什么版本匹配,可以上网找找.
18.
Fatal signal 11 (SIGSEGV), code 1, fault addr xxx in tid xxx (g.xxxxx)
- 问题原因: 1.jni开发中出现空指针问题. 2.jni开发中出现索引越界问题. 3.如果排除是代码问题,那可能是你线程问题.jni开发中的env是每个线程都会创建一个, 其他线程不能用当前线程的env,这可能导致出现上面的问题.
解决方法:进程中没个线程都有一个env,但是只有个JavaVM .可以通过JavaVM来创建env.具体可以参考:http://blog.csdn.net/viking_xhg/article/details/78727273
19.
(1).unspecified on project app resolves to an APK archive which is not supported as a compilation dependency
(2).Error:Library projects cannot set applicationId. applicationId is set to ‘package_name’ in default config.- 问题原因: 存在两个Module,其中一个Module依赖另一个Module而导致;
解决方法:(1) build.gradle -> apply plugin: ‘com.android.application’ (将当前程序编译成apk) 改为 apply plugin: ‘com.android.library’ (当前程序编译为library库); (2)删除 builde.gradle — android — defaultConfig中的 applicationId “com.viking.swgetdeviceinfo” ;
20.
remount of system failed: Permission denied
remount failed- 问题原因: 挂载system失败,权限不够.
解决方法: adb root ,通过使用root权限运行remount.
21.
Error:Cause: buildToolsVersion is not specified.- 问题原因: build.gralde中无buildToolsVersion 属性
解决方法: 添加 buildToolsVersion “27.0.1”
22.
03-22 01:34:04.123 5009-5009/com.viking.myapplication E/dalvikvm: dlopen(“/data/app-lib/com.viking.myapplication-1/libjniLib.so”) failed: dlopen failed: cannot locate symbol “sigemptyset” referenced by “libjniLib.so”…
03-22 01:34:04.153 5009-5009/com.viking.myapplication W/dalvikvm: Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/viking/myapplication/NetSDK;
03-22 01:34:04.153 5009-5009/com.viking.myapplication D/AndroidRuntime: Shutting down VM
03-22 01:34:04.153 5009-5009/com.viking.myapplication W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xada5dba8)
03-22 01:34:04.163 5009-5009/com.viking.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.viking.myapplication, PID: 5009
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol “sigemptyset” referenced by “libjniLib.so”…
at java.lang.Runtime.loadLibrary(Runtime.java:364)
at java.lang.System.loadLibrary(System.java:526)
at com.viking.myapplication.NetSDK.(NetSDK.java:24)
at com.viking.myapplication.MainActivity.onCreate(MainActivity.java:14)- 问题原因:
- 可能原因1: NDK版本:
32bits小机用:android-ndk32-r10b-linux-x86_64.tar.bz2
64bits小机用:android-ndk64-r10b-linux-x86_64.tar.bz2
64bits编译出来的APK在S3上面运行,会有闪退的现象. - 可能原因2:
造成问题的原因不是NDK的版本,而是目标平台的版本,我这运行在android 4.4上面。Android-19是在平台 头上将 Sigemptyset()(和许多其他函数)声明为内联的最后一个平台版本。因此,设备上的系统libc不包含这些功能。所以应该使用正确的目标平台来允许代码在旧的设备上运行。
- 可能原因1: NDK版本:
解决方法: 只需要在你的应用程序中application.mk文件中添加 app_Platform:=Android-19。
23.
问题原因:
解决方法:
24.
问题原因:
解决方法:
25.
问题原因:
解决方法:
26.
问题原因:
解决方法:
27.
问题原因:
解决方法:
28.
问题原因:
解决方法:
29.
问题原因:
解决方法:
30.
问题原因:
解决方法:
31.
问题原因:
解决方法:
32.
问题原因:
解决方法:
33.
问题原因:
解决方法:
34.
问题原因:
解决方法:
35.
问题原因:
解决方法:
36
问题原因:
解决方法:
37.
问题原因:
解决方法:
38.
问题原因:
解决方法:
39.
问题原因:
解决方法:
40.
问题原因:
解决方法:
41.
问题原因:
解决方法:
42.
问题原因:
- 解决方法: