好记性不如烂笔头,记下遇到过的问题,方便以后查阅.
###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.PersonManagerStubStubProxy.getPersonAge(PersonManager.java:107)
at com.viking.aidl2.MainActivity2.onServiceConnected(MainActivity.java:41)atandroid.app.LoadedApk2.onServiceConnected(MainActivity.java:41)atandroid.app.LoadedApkServiceDispatcher.doConnected(LoadedApk.java:1375)
at android.app.LoadedApkServiceDispatcherServiceDispatcherRunConnection.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不包含这些功能。所以应该使用正确的目标平台来允许代码在旧的设备上运行。
解决方法: 只需要在你的应用程序中application.mk文件中添加 app_Platform:=Android-19。
###23.
$ adb install ./app/build/outputs/apk/app-debug.apk
2999 KB/s (8256380 bytes in 2.688s)
pkg: /data/local/tmp/app-debug.apk
Failure [INSTALL_FAILED_OLDER_SDK]
问题原因:您设备的Android版本过低,app不支持
解决方法:
Manifest中提高minSdkVersion:
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
###24.This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android Studio this means version 3.0+
问题原因:IDE等级要为3
解决方法:在项目中的gradle.properties文件中添加
android.injected.testOnly = falsed
android.injected.build.model.only.versioned = 3
###25.Failed to resolve :com.android.support:support-core-ui:27.0.1
问题原因: sdk版本问题
解决方法: 将build.gradle的 compileSdkVersion 23 ,targetSdkVersion 23 改成你自己的版本
###26.Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to "6a851924f1794e8667f51b5d924eb484dbef3c9b"
Fix plugin version and sync project
Open File
问题原因: 插件太老, 降低build.gradle 去适应
解决方法:
将 classpath ‘com.android.tools.build:gradle:2.0.0-alpha3’
改成classpath ‘com.android.tools.build:gradle:1.+’
###27.Error:Failed to resolve: com.android.support:appcompat-v7:27.+
Install Repository and sync project
Show in Project Structure dialog
问题原因: 没有appcompat -v7:27.+
解决方法:将 targetSdkVersion 27版本,改成你自己的版本
###28.SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
问题原因:File mFile = new File(dir, “FD01-” + DataTool.getFileName() + “.log”);其中的dir是一个null对象.
解决方法:将dir替换成非null对象
###29.权限申请被用户确定为永不提示
public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) {
boolean showRequestPermission = ActivityCompat.shouldShowRequestPermissionRationale(PermissionActivity.this, permissions[i]); //
if (showRequestPermission) {// 可重新申请的权限
Log.e(“PermissionActivity”, “onRequestPermissionsResult: The permissions is forbidden to be used,but this permissions can be request again. :”+permissions[i]);
} else { //禁止申请的权限
Log.e(“PermissionActivity”, “onRequestPermissionsResult: The permissions is forbidden to be used,but this permissions can’t be request again. :” + permissions[i]);
mRequestPermissionRationale.add(permissions[i]); //被禁止使用的权限
mRequestPermission.remove(permissions[i]); //可再次申请的权限
}
}
问题原因:
解决方法:
###30. 隐藏导航栏
/*
* 隐藏虚拟按键,并且全屏
*/
protected void hideBottomUIMenu() {
//隐藏虚拟按键,并且全屏
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
} else if (Build.VERSION.SDK_INT >= 19) {
//for new api versions.
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
}
}
问题原因:
解决方法:
###31.Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library [com.github.mjdev:libaums:0.5.5] C:\Users\25934.android\build-cache\0fd465ca0b57ab1c5e3273ba183c2b545a44965e\output\AndroidManifest.xml Suggestion: use tools:overrideLibrary=“com.github.mjdev.libaums” to force usage
问题原因:sdk要求的最低版本为16,而现在的版本为15
解决方法:将build.gradle文件中的minSdkVersion 15改成minSdkVersion 16
###32.Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library [com.github.mjdev:libaums:0.5.5] C:\Users\25934.gradle\caches\transforms-1\files-1.1\libaums-0.5.5.aar\298013b89d4a56b0ec90284b794fc37c\AndroidManifest.xml as the library might be using APIs not available in 15
Suggestion: use a compatible library with a minSdk of at most 15,
or increase this project’s minSdk version to at least 16,
or use tools:overrideLibrary=“com.github.mjdev.libaums” to force usage (may lead to runtime failures)
问题原因:sdk要求的最低版本为16,而现在的版本为15
解决方法:将build.gradle文件中的minSdkVersion 15改成minSdkVersion 16
###33.Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android Studio this means version 3.0+
问题原因:Android Studio 版本个gradle版本的问题
解决方法:
1.升级android studio IDE的版本。
2.在项目的gradle.properties配置文件中加入以下这句:
android.injected.testOnly = falsed
android.injected.build.model.only.versioned = 3
###34.DrawerLayout实现侧滑菜单,出现层级问题.
出现相机展示和策划菜单会出现层级混乱问题, 一会策划菜单在相机上面, 一会策划菜单在相机下面.
问题原因:这是由于相机布局在RelativeLayout里面.
解决方法:将RelativeLayout改成Linealayout.
###35.Internal Error. Please report to https://code.google.com/p/android/issues
Android Studio 启动出现如下错误
问题原因:
android studio无法启动https://code.google.com/p/android/issues,为国外网站,需要翻墙.
解决方法:
- 使用翻墙软件进行翻墙
2.最直接的方式:断开网络启动
下次安装报:java.lang.RuntimeException: java.lang.NullPointerException…错
只需在文件…\Android Studio\bin\idea.properties(需要对应自己的安装目录下)最后面加一行代码:
disable.android.first.run=true 就可以完美解决问题了
###36
09-13 05:47:48.731 13724-13966/com.viking.fd01 W/System.err: java.io.IOException: No such file or directory
09-13 05:47:48.731 13724-13966/com.viking.fd01 W/System.err: at java.io.UnixFileSystem.createFileExclusively0(Native Method)
09-13 05:47:48.731 13724-13966/com.viking.fd01 W/System.err: at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:281)
09-13 05:47:48.731 13724-13966/com.viking.fd01 W/System.err: at java.io.File.createNewFile(File.java:1000)
09-13 05:47:48.732 13724-13966/com.viking.fd01 W/System.err: at com.viking.audio.RecordSound
2.
r
u
n
(
R
e
c
o
r
d
S
o
u
n
d
.
j
a
v
a
:
109
)
<
b
r
>
09
−
1305
:
47
:
48.73213724
−
13966
/
c
o
m
.
v
i
k
i
n
g
.
f
d
01
W
/
S
y
s
t
e
m
.
e
r
r
:
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
r
u
n
W
o
r
k
e
r
(
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
j
a
v
a
:
1162
)
<
b
r
>
09
−
1305
:
47
:
48.73213724
−
13966
/
c
o
m
.
v
i
k
i
n
g
.
f
d
01
W
/
S
y
s
t
e
m
.
e
r
r
:
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
2.run(RecordSound.java:109)<br>09-13 05:47:48.732 13724-13966/com.viking.fd01 W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)<br>09-13 05:47:48.732 13724-13966/com.viking.fd01 W/System.err: at java.util.concurrent.ThreadPoolExecutor
2.run(RecordSound.java:109)<br>09−1305:47:48.73213724−13966/com.viking.fd01W/System.err:atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)<br>09−1305:47:48.73213724−13966/com.viking.fd01W/System.err:atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:636)
09-13 05:47:48.732 13724-13966/com.viking.fd01 W/System.err: at java.lang.Thread.run(Thread.java:764)
问题原因:
解决方法:
###37.
AndroidRuntime: FATAL EXCEPTION: Thread-8
Process: com.viking.fd01, PID: 2826
java.lang.IllegalStateException: Can’t compress a recycled bitmap
at android.graphics.Bitmap.checkRecycled(Bitmap.java:386)
at android.graphics.Bitmap.compress(Bitmap.java:1237)
at com.viking.utils.Yuv2FaceBitmap.Bitmap2JpgLocal(Yuv2FaceBitmap.java:220)
at com.viking.utils.Utils.saveCameraFace2Local(Utils.java:31)
at com.viking.activity.MainActivity$CompareLoop.loop(MainActivity.java:1109)
at com.guo.android_extend.java.AbsLoop.run(AbsLoop.java:20)
问题原因:
1.使用了已经被释放过内存的对象。
对于Bitmap:
Bitmap bitmap = 一个bitmap对象
使用过程中调用bitmap.recycle()之后,再使用bitmap就会报错。
2.图片裁剪等处理后,按照下面的写法也易报错.
public static boolean Bitmap2JpgLocal(Bitmap bmp, File fileDir, String fileName) {
if (!fileDir.exists()) {
fileDir.mkdir();
}
if (!fileName.endsWith(".jpg")) {
try {
throw new Throwable("file name end with '.jpg'!");
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
File file = new File(fileDir, fileName);
file.deleteOnExit();
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
解决方法:
Bitmap idcardbm = idCardPhoto.copy(Bitmap.Config.ARGB_8888,true);
通过copy出一个新的bitmap,再处理.
###38. 外置SD卡读写问题.
首先,Google在Android4.4之后将读写外置SD卡的API全部关闭了, 所以我们无法获取到外置SD路径, 只能通过反射的方式来获取外置SD卡路径
public static String[] getSecondaryStoragePath1(Context mContext) {
try {
StorageManager sm = (StorageManager) mContext.getSystemService(STORAGE_SERVICE);
Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths",null); //获取需要反射的方法
String[] paths = (String[]) getVolumePathsMethod.invoke(sm, null); //通过反射方法获取sd路径,paths是数据,可能有多个外部存储设置
// second element in paths[] is secondary storage path
Log.e("SDCard", "getSecondaryStoragePath1: "+paths.length+""+paths[0] +" "+paths[1]);
if (paths==null||paths.length<=0){
Log.e("SDCard", "getSecondaryStoragePath: storage is err!");
return null;
}
return paths;
} catch (Exception e) {
Log.e("SDCard", "getSecondaryStoragePath() failed", e);
}
return null;
}
在这之前应该先通过File mSdfile = mContext.getExternalFilesDir(null);在外置sd目录中创建 Android/data/com.viking.fd01/files 目录.
问题原因:Android4.4 Google对外置sd卡写入进行了修改.
解决方法:
###39.
问题原因:
解决方法:
###40.Gradle ‘FaceTrackDemo-master’ project refresh failed
Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android Studio this means version 3.0+
问题原因:
解决方法:gradle.properties 中添加一句
android.injected.build.model.only.versioned = 3
Installation failed with message INSTALL_FAILED_TEST_ONLY: installPackageLI.
It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.
WARNING: Uninstalling will remove the application data!
Do you want to uninstall the existing application?
问题原因:
解决方法:
###42.android studio 设置换行位置:setting -> editor -> code style -> java -> wrapping and braces
问题原因:
解决方法:
###43.
10-10 09:27:19.196 1613-1613/com.viking.gt01 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.viking.gt01, PID: 1613
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.viking.gt01/com.viking.gt01.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread
H
.
h
a
n
d
l
e
M
e
s
s
a
g
e
(
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
j
a
v
a
:
1589
)
a
t
a
n
d
r
o
i
d
.
o
s
.
H
a
n
d
l
e
r
.
d
i
s
p
a
t
c
h
M
e
s
s
a
g
e
(
H
a
n
d
l
e
r
.
j
a
v
a
:
106
)
a
t
a
n
d
r
o
i
d
.
o
s
.
L
o
o
p
e
r
.
l
o
o
p
(
L
o
o
p
e
r
.
j
a
v
a
:
164
)
a
t
a
n
d
r
o
i
d
.
a
p
p
.
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
m
a
i
n
(
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
j
a
v
a
:
6494
)
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
M
e
t
h
o
d
.
i
n
v
o
k
e
(
N
a
t
i
v
e
M
e
t
h
o
d
)
a
t
c
o
m
.
a
n
d
r
o
i
d
.
i
n
t
e
r
n
a
l
.
o
s
.
R
u
n
t
i
m
e
I
n
i
t
H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit
H.handleMessage(ActivityThread.java:1589)atandroid.os.Handler.dispatchMessage(Handler.java:106)atandroid.os.Looper.loop(Looper.java:164)atandroid.app.ActivityThread.main(ActivityThread.java:6494)atjava.lang.reflect.Method.invoke(NativeMethod)atcom.android.internal.os.RuntimeInitMethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:458)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.viking.gt01.MainActivity.onCreate(MainActivity.java:11)
at android.app.Activity.performCreate(Activity.java:7026)
at android.app.Activity.performCreate(Activity.java:7017)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread
H
.
h
a
n
d
l
e
M
e
s
s
a
g
e
(
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
j
a
v
a
:
1589
)
a
t
a
n
d
r
o
i
d
.
o
s
.
H
a
n
d
l
e
r
.
d
i
s
p
a
t
c
h
M
e
s
s
a
g
e
(
H
a
n
d
l
e
r
.
j
a
v
a
:
106
)
a
t
a
n
d
r
o
i
d
.
o
s
.
L
o
o
p
e
r
.
l
o
o
p
(
L
o
o
p
e
r
.
j
a
v
a
:
164
)
a
t
a
n
d
r
o
i
d
.
a
p
p
.
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
m
a
i
n
(
A
c
t
i
v
i
t
y
T
h
r
e
a
d
.
j
a
v
a
:
6494
)
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
M
e
t
h
o
d
.
i
n
v
o
k
e
(
N
a
t
i
v
e
M
e
t
h
o
d
)
a
t
c
o
m
.
a
n
d
r
o
i
d
.
i
n
t
e
r
n
a
l
.
o
s
.
R
u
n
t
i
m
e
I
n
i
t
H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit
H.handleMessage(ActivityThread.java:1589)atandroid.os.Handler.dispatchMessage(Handler.java:106)atandroid.os.Looper.loop(Looper.java:164)atandroid.app.ActivityThread.main(ActivityThread.java:6494)atjava.lang.reflect.Method.invoke(NativeMethod)atcom.android.internal.os.RuntimeInitMethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
问题原因: AppTheme 的parent是Theme.AppCompat.NoAcitonBar ,改成如下Theme.AppCompat.Light.NoAcitonBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowFullscreen">true</item>
</style>
<style name="LauchTheme" parent="AppTheme">
<item name="android:windowNoTitle">true</item>
<!-- <item name="android:windowBackground">@mipmap/ic_launcher</item>-->
<item name="android:windowFullscreen">true</item>
</style>
解决方法:
###45. DrawerLayout与SurfaceView搭配侧滑显示不完全
问题原因:
解决方法:
drawerlayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
// TODO Auto-generated method stub
super.onDrawerSlide(drawerView, slideOffset);
drawerlayout.bringChildToFront(drawerView);
drawerlayout.requestLayout();
}
});
//原文:https://blog.csdn.net/ning_gg/article/details/51003012
###46. YUV视频数据清晰度检测
C++:
/******************************************************************
FunctionName: Vqd_CalcDefinition
Description: 视频清晰度检测
Calls :
Input :
------- pGray 单通道图像数据
------- uwImgW图像宽
------- uwImgH图像高
Output:
return: U8清晰度指标,范围【0,100】,越大越清晰
2016年01月19日 建立此函数
*******************************************************************/
LOCAL U8 Vqd_CalcDefinition(U8 *pGray, U16 uwImgW, U16 uwImgH)
{
U16 i,j; //u16 无符号short类型
U8* pImgHead1 = pGray +uwImgW; //u8 无符号byte类型
U8* pImgHead2 = pGray +uwImgW*2;
U32 uwDevSum=0; //u32 无符号int类型
U32 udwCount=0;
for (i=1 ; i<uwImgH-1;i+=2){
for (j=1; j<uwImgW-1;j+=2){
U8 ucA = pImgHead1[j];
U8 ucB = pImgHead1[j+1];
U8 ucC = pImgHead2[j];
U8 ucD = pImgHead2[j+1];
U8 ucMax = max(max(ucA,ucB),max(ucC,ucD));
U8 ucMin = min(min(ucA,ucB),min(ucC,ucD));
if (ucMax){
uwDevSum+= 100*(ucMax - ucMin)/ucMax;
udwCount++;
}
}
pImgHead1+=uwImgW;
pImgHead2+=uwImgW;
}
if (udwCount){
uwDevSum = uwDevSum / udwCount;
//拉伸区间
if (uwDevSum>15){
uwDevSum = min(uwDevSum*2,100);
}
}
return uwDevSum;
}
JAVA
public class ImageCalc {
/**
* yuv数据清晰度 1-100
* @param yuv yuv数据
* @param with 图片宽度
* @param height 图片高度
* @return
*/
public static int CalcDefinition(byte[] yuv, int with, int height) { //yuv 数据
int pImgHead1 = with;
int pImgHead2 = with * 2;
int uwDevSum = 0;
int udwCount = 0;
for (int i = 1; i < height - 1; i += 2) {
for (int j = 1; j < with - 1; j += 2) {
int ucA = yuv[j + pImgHead1]+128;
int ucB = yuv[j + 1 + pImgHead1]+128;
int ucC = yuv[j + pImgHead2]+128;
int ucD = yuv[j + 1 + pImgHead2]+128;
int ucMax = max(ucA, ucB, ucC, ucD);
int ucMin = min(ucA, ucB, ucC, ucD);
if (ucMax!= 0) {
uwDevSum += 100 * (ucMax - ucMin) / ucMax;
udwCount++;
}
}
pImgHead1 += with;
pImgHead2 += with;
}
if (udwCount != 0) {
uwDevSum = uwDevSum / udwCount;
//拉伸区间
if (uwDevSum > 15) {
uwDevSum = minf(uwDevSum * 2, 100);
}
}
return uwDevSum;
}
public static int max(int uca, int ucb, int ucc, int ucd) {
return maxf(maxf(uca, ucb), maxf(ucc, ucd));
}
public static int min(int uca, int ucb, int ucc, int ucd) {
return minf(minf(uca, ucb), minf(ucc, ucd));
}
public static int maxf(int uca, int ucb) {
if (uca > ucb) {
return uca;
} else {
return ucb;
}
}
public static int minf(int uca, int ucb) {
if (uca < ucb) {
return uca;
} else {
return ucb;
}
}
public void sort(int[] a, int low, int high) { //快速排序
int start = low;
int end = high;
int key = a[low];
while (end > start) {
//从后往前比较
while (end > start && a[end] >= key) //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
{ end--; }
if (a[end] <= key) {
int temp = a[end];
a[end] = a[start];
a[start] = temp;
}
//从前往后比较
while (end > start && a[start] <= key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
{ start++; }
if (a[start] >= key) {
int temp = a[start];
a[start] = a[end];
a[end] = temp;
}
//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
}
//递归
if (start > low) {
sort(a, low, start - 1);//左边序列。第一个索引位置到关键值索引-1
}
if (end < high) {
sort(a, end + 1, high);//右边序列。从关键值索引+1到最后一个
}
}
}
问题原因:
解决方法:
###47.
问题原因:
解决方法:
###48.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法:
###44.
问题原因:
解决方法: