Android问题集锦之四十六

最后更新于:2022-04-01 06:39:42

## 改包名后出现Error type 3 背景:  为了和使用Eclipse的同学并行工作了,我将原Eclipse的项目中加入build.gradle,内容如下: ~~~ android { compileSdkVersion 19 buildToolsVersion "19.1.0" sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } // Move the tests to tests/java, tests/res, etc... instrumentTest.setRoot('tests') debug.setRoot('build-types/debug') release.setRoot('build-types/release') } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } lintOptions { abortOnError false } buildTypes { debug { debuggable true signingConfig signingConfigs.debug } release { debuggable false signingConfig signingConfigs.debug minifyEnabled true proguardFiles 'proguard-project.txt' } } } ~~~ 一直很好的工作着,直到今天我心血来潮将项目的包名在manifest中修改了,也在各个文件中修改了此包名。编译通过,但是运行时报错: ~~~ Launching application: com.foo.app/com.foo.app.main. DEVICE SHELL COMMAND: am start -n "com.foo.app/com.foo.app.main" Starting: Intent { cmp=com.foo.app/.main} Error type 3 Error: Activity class {com.foo.app/com.foo.app.main} does not exist. ~~~ 这真是见鬼了,我clean build,并将代码目录下的bin也都删掉了。重启Android Studio,还是有问题。我也将app从手机中卸载再调试,等等等等。尝试了很多办法。stackoverflow那篇帖子上的方法也尝试了许多。 当然,我知道新建一个项目并将此项目中的文件拷过去,一定能够运行。但我不想这么做。 最后,还是参考网友,将build.gradle中android下加入applicationId为新包名,解决了这个问题。 ~~~ defaultConfig { applicationId "com.yourpackage.yourapplication" } ~~~ > 参考:  > [http://stackoverflow.com/questions/7071271/activity-class-does-not-exist](http://stackoverflow.com/questions/7071271/activity-class-does-not-exist)
';

Android问题集锦之四十五

最后更新于:2022-04-01 06:39:40

## undefined reference to 'srand' ndk 10b~10e在编译使用C随机数函数srand和rand时没有问题,  可是程序运行时就报类似下面的错误: ~~~ error: undefined reference to 'srand' error: undefined reference to 'rand' ~~~ 这让我百思不得其解。  我先后做了如下尝试:  1、有网友说我的ndk版本太低了,要用高一些的。  我就将原来使用的10b换成了10e,结果还是不行。  2、有网友说要将交叉编译器换成高版本的,我更新了,结果还是不行。  3、有网友说不要用64位的ndk,要用32位的。我又新下载了32位的10e,还是不行。 就在我崩溃的要放弃的时候,国外网友提到了stdlib.h,好像昨天就有看到这个头文件的问题。  我试着加入这个头文件,再编译运行,通过了! 这可能是bionic库做的调整吧,与原C标准库有些差异。不过既然没问题了,还是值得高兴一下! ~~~ #include "shooter.h" #include <stdlib.h> #include <stdio.h> void bubble_sort(int *array,int n) { int i,j,tmp; for(i=0;i<n-1;i++) { for(j=n-1;j>i;j--) { if(array[j-1]>array[j]) { tmp = array[j-1]; array[j-1]=array[j]; array[j]=tmp; } } } } int A(int a) { int n = 10; int i; int array[n]; srand(time(NULL)); for(i=0;i<n;i++) { array[i] = rand()%100+1; printf("%d, ",array[i]); } printf("\n"); bubble_sort(array,n); return array[0]; } ~~~ > 参考:  > [http://stackoverflow.com/questions/27186706/spin-verification-undefined-reference-to-random-and-srandom](http://stackoverflow.com/questions/27186706/spin-verification-undefined-reference-to-random-and-srandom) 这与android不挨着,但也帮了我。
';

Android问题集锦之四十四

最后更新于:2022-04-01 06:39:38

## Android Studio 1.3 代理问题 关于AS的代理设置,我在之前的版本中设好了。  File—>Settings—>System Settings—>HTTP Proxy 要说明的是,我设代理并不是为了翻墙,而是公司上外网必须要用代理。  前几天发现AS有了新版本1.3,算一次重要的升级。我观望了一阵(因为每次升级都会伴随其他升级D导致一段时间我的环境不能用),决定先给台式机的AS升级。 漫长的下载安装后,重启AS,新建一个项目来体验这新的版本。AS提示我是否将gradle也设置与AS相同的代理。  ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-29_56824d3dd22b6.jpg) 我选择了yes,但是不好意思,程序卡在build界面下不走。应该是代理的问题。下一次选择的No,还是不行。姥姥的,究竟什么问题呢? 网友们给出的答案是,gradle配置中不但要有http的代理,还要有https的配置,在gradle.properties中加入 ~~~ systemProp.https.proxyHost=proxy.xxx.com systemProp.https.proxyPort=8080 systemProp.http.proxyHost=proxy.xxx.com systemProp.http.proxyPort=8080 ~~~ 这样就可以啦! > 参考:  > [http://licheedev.com/2015/06/22/gradle-proxy-for-as-1-3/](http://licheedev.com/2015/06/22/gradle-proxy-for-as-1-3/)
';

Android问题集锦之四十三

最后更新于:2022-04-01 06:39:35

## UnsatisfiedLinkError: Cannot load library: reloc_library[1285]: 104 cannot locate 这是我在用NDK中遇到的问题。  场景是自己写的一个so库,调用另一个适用android的so库的一个方法,也没有用什么特性,非常简单的例子,但是就是出现这个错误。 在stackoverflow上也有人遇到同样的问题,说是API-21后就会有这个问题云云。我当前的编译版本如下: ~~~ compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.linc.thirdndktest" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" } ~~~ 尝试改成19后果然好用了。  殊不知以后会是什么情况,基于目前时间紧任务重,先暂且用这个权宜之计。以后(如果有以后的话),再说! > 参考:  > stackoverflow.com/questions/27338318/cannot-load-library-reloc-library1285-cannot-locate-rand
';

Android问题集锦之四十二

最后更新于:2022-04-01 06:39:33

## INSTALL_FAILED_OLDER_SDK 错误描述如下: ~~~ $ 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文件(或build.gradle)中将最低版本号调高。  Manifest中: ~~~ <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17" /> ~~~ build.gradle中: ~~~ defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 15 targetSdkVersion 17 } ~~~
';

Android问题集锦之四十一

最后更新于:2022-04-01 06:39:31

## getActionBar为null的解决以及ActionBar的Back键 我们用getActionBar获得ActionBar实例,将其隐藏或做其他操作。 ~~~ ActionBar actionBar = getActionBar(); ~~~ 不过我这样做了,但是actionBar是null。 问题是由Activity基类引起的,当使用AppCompatActivity或其他support包中的基类,那么获得ActionBar实例需要用另一个相应的方法,那就是getSupportActionBar(),ActionBar也要使用相应support包下的。 ~~~ android.support.v7.app.ActionBar actionBar = getSupportActionBar(); ~~~ 那么这样就可以ActionBar自带的back功能了。 ~~~ if(actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); } ~~~ ~~~ @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); //noinspection SimplifiableIfStatement if(id == R.id.home) {//back key Intent intent = NavUtils.getParentActivityIntent(this); if(intent != null) { if (NavUtils.shouldUpRecreateTask(this, intent)) { TaskStackBuilder.create(this) .addNextIntentWithParentStack(intent) .startActivities(); } else { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); NavUtils.navigateUpTo(this, intent); } } else { Log.e(TAG,"intent is null"); } } return super.onOptionsItemSelected(item); } ~~~
';

Android问题集锦之四十

最后更新于:2022-04-01 06:39:28

## Android NDK: Could not find application project directory 记得前阵子编译so库直接使用ndk-build搞定,今天使用却报错如下: ~~~ $ ndk-build Android NDK: Could not find application project directory ! Android NDK: Please define the NDK_PROJECT_PATH variable to point to it. /opt/android-ndk-r10b/build/core/build-local.mk:148: *** Android NDK: Aborting . Stop. ~~~ 高人支招如下: ~~~ You need to specify 3 things. NDK_PROJECT_PATH - the location of your project NDK_APPLICATION_MK - the path of the Application.mk file APP_BUILD_SCRIPT - the path to the Android.mk file These are needed to override the default values of the build script, which expects things to be in the jni folder. When calling ndk-build use ndk-build NDK_PROJECT_PATH=/path/to/proj NDK_APPLICATION_MK=/path/to/Application.mk In Application.mk add APP_BUILD_SCRIPT := /path/to/Android.mk ~~~ 首先第一步,在Application中加入Android.mk路径  比如这两个文件是同级的: ~~~ APP_BUILD_SCRIPT := Android.mk ~~~ 第二步,直接编译: ~~~ $ ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk [armeabi-v7a] Compile++ thumb: detection_and_recognition_lib <= DetectionAndRecognition.cpp [armeabi-v7a] Prebuilt : libopencv_java.so <= /home/linc/workspace/lab/OpenCV-android-sdk-2.4.11/sdk/native/jni/../libs/armeabi-v7a/ [armeabi-v7a] SharedLibrary : libdetection_and_recognition_lib.so /opt/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: warning: hidden symbol '__aeabi_atexit' in /opt/android-ndk-r10b/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/thumb/libgnustl_static.a(atexit_arm.o) is referenced by DSO ./obj/local/armeabi-v7a/libopencv_java.so [armeabi-v7a] Install : libdetection_and_recognition_lib.so => libs/armeabi-v7a/libdetection_and_recognition_lib.so [armeabi-v7a] Prebuilt : libnative_camera_r4.3.0.so <= /home/linc/workspace/lab/OpenCV-android-sdk-2.4.11/sdk/native/jni/../libs/armeabi-v7a/ [armeabi-v7a] Install : libnative_camera_r4.3.0.so => libs/armeabi-v7a/libnative_camera_r4.3.0.so [armeabi-v7a] Prebuilt : libnative_camera_r4.4.0.so <= /home/linc/workspace/lab/OpenCV-android-sdk-2.4.11/sdk/native/jni/../libs/armeabi-v7a/ [armeabi-v7a] Install : libnative_camera_r4.4.0.so => libs/armeabi-v7a/libnative_camera_r4.4.0.so [armeabi-v7a] Install : libopencv_java.so => libs/armeabi-v7a/libopencv_java.so [x86] Compile++ : detection_and_recognition_lib <= DetectionAndRecognition.cpp [x86] Prebuilt : libopencv_java.so <= /home/linc/workspace/lab/OpenCV-android-sdk-2.4.11/sdk/native/jni/../libs/x86/ [x86] SharedLibrary : libdetection_and_recognition_lib.so [x86] Install : libdetection_and_recognition_lib.so => libs/x86/libdetection_and_recognition_lib.so [x86] Prebuilt : libnative_camera_r4.3.0.so <= /home/linc/workspace/lab/OpenCV-android-sdk-2.4.11/sdk/native/jni/../libs/x86/ [x86] Install : libnative_camera_r4.3.0.so => libs/x86/libnative_camera_r4.3.0.so [x86] Prebuilt : libnative_camera_r4.4.0.so <= /home/linc/workspace/lab/OpenCV-android-sdk-2.4.11/sdk/native/jni/../libs/x86/ [x86] Install : libnative_camera_r4.4.0.so => libs/x86/libnative_camera_r4.4.0.so [x86] Install : libopencv_java.so => libs/x86/libopencv_java.so ~~~ 各位大虾也许看出来了,我在编译OpenCV相关的项目。而现在的设备选型已经涵盖了x86架构,所以编译时要选择x86指令集编译。在Application.mk中注明如下: ~~~ APP_ABI := armeabi-v7a x86 ~~~ 后记:  放到jni目录下就不用此命令了! > 参考:  > [http://stackoverflow.com/questions/14156596/ndk-cant-find-the-application-directory](http://stackoverflow.com/questions/14156596/ndk-cant-find-the-application-directory)
';

Android问题集锦之三十九

最后更新于:2022-04-01 06:39:26

## 使用Camera录像的常见问题 在Android5.0之前我们一直使用android.hardware.Camera做拍照和录像,然而使用的过程并不是一帆风顺的,我跟着官方Camera文档编码实验,却也遇到了各种各样的问题,下面就来分别说说。  另外,API21开始推荐使用android.hardware.Camera2这个包了。 一、权限问题  使用Camera需要有camera的权限,录像时需要有录制音频的权限,保存相片和视频时需要有操作sdcard的权限。否则,因为权限问题就会报错。有些报错会显示告诉你权限问题,但有些不会,比如下面这个。 ~~~ java.lang.RuntimeException: setAudioSource failed ~~~ 这就是录制音频的权限没有。  下面列出几个必须的权限: ~~~ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> ~~~ 二、startPreview fails ~~~ mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); ~~~ 一般都是设置上面的Type就好了,但是我的4.0.3的酷派的手机就仍然报错,而4.0.4和4.4的手机都没有问题,我也是找了N多资料,但是最后还是给跪了,应该是硬件问题。  也试了Camera.open()之前将camera置为null,都不行。  三、MediaRecorder﹕ start failed: -19  这个错误出现在我的4.4的5太子上。  任我怎么修改也不行,最后用了其他人的代码才终于跑起来。  > 参考:[http://blog.csdn.net/shen332401890/article/details/8819564](http://blog.csdn.net/shen332401890/article/details/8819564) 总结:  众多的API版本使得向下兼容变得很难,在漫长的API1到API21的过程中,不一定哪一个API会跟你惊喜,让你原本预计一个小时的工作变成一天甚至更多。
';

Android问题集锦之三十八

最后更新于:2022-04-01 06:39:24

## not allowed to send broadcast android.intent.action.MEDIA_MOUNTED 当我们保存图片后就会发个通知告诉系统让sdcard重新挂载,这样其他程序就会立即找到这张图片。 ~~~ Intent intent = new Intent(); intent.setAction(Intent.ACTION_MEDIA_MOUNTED); intent.setData(Uri.fromFile(Environment .getExternalStorageDirectory())); sendBroadcast(intent); ~~~ 但是到了Android4.4就不灵了,Google将MEDIA_MOUNTED的权限提高了,于是就报了一个下面的错误。 ~~~ W/System.err﹕java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=18338, uid=10087 ~~~ 在stackoverfollow中找到了一个办法,在高版本中使用ACTION_MEDIA_SCANNER_SCAN_FILE去通知系统重新扫描文件。代码如下: ~~~ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Intent mediaScanIntent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri contentUri = Uri.fromFile(mPhotoFile); //out is your output file mediaScanIntent.setData(contentUri); CameraActivity.this.sendBroadcast(mediaScanIntent); } else { sendBroadcast(new Intent( Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); } } catch (FileNotFoundException e) { Log.d(TAG, "File not found: " + e.getMessage()); } catch (IOException e) { Log.d(TAG, "Error accessing file: " + e.getMessage()); } ~~~
';

Android问题集锦之三十七

最后更新于:2022-04-01 06:39:21

## No resource found 'Theme.AppCompat.Light.DarkActionBar AS导入他人的工程会遇到这样那样的问题。  如果他们用的AS版本比较老,那么需要AS会自动下载相对应版本的gradle。这个我在前几篇文中有提过。不过最简单的版本就是直接将gradle的版本改成最新。  gradle-wrapper.properties文件中将distributionUrl的gradle版本改成最新。 ~~~ distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip ~~~ 如果使用了兼容包,比如 ~~~ dependencies { // compile 'com.android.support:appcompat-v7:+' } ~~~ 我们要将其改成自己开发环境中较新的: ~~~ compile 'com.android.support:appcompat-v7:21.0.3' ~~~ 然而此时再编译会遇到style AppTheme报错: ~~~ error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'. ~~~ 我这的解决办法是将编译工具的版本和target api都提高,并且它们是相对应的,如下: ~~~ android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0" } ~~~ 这样做错误就没了。
';

Android问题集锦之三十六

最后更新于:2022-04-01 06:39:19

## com.android.dex.DexException: Multiple dex files define 完整的log如下: ~~~ Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: /opt/sdk/build-tools/21.1.2/dx --dex --no-optimize --output /home/linc/workspace/xxx/app/build/intermediates/dex/debug --input-list=/home/linc/workspace/xxx/app/build/intermediates/tmp/dex/debug/inputList.txt Error Code: 2 Output: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lorg/kobjects/base64/Base64; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106) ~~~ 原来还是因ksoap2-android而起。我在上一文中修改了这个jar包并重命名,并将原jar包从目录中删除,编译通过。问题出现在今天的更新代码后,原来我没有将自己的更改提交,update后又把原来的jar包down下来了。所以两个jar包内容就出现了冲突造成了此编译错误。  将更新下来的jar删掉就可以了。
';

Android问题集锦之三十五

最后更新于:2022-04-01 06:39:17

## ksoap2-android混淆报错 混淆时报错,是org.xmlpull.v1与android.jar中重复了。大家的做法是将ksoap2-android-assembly-3.4.0.jar中的xmlpull.v1删掉,这样做虽然狠了点,但不会影响程序的功能。  做法是:  1.将ksoap2-android-assembly-3.4.0.jar解压,进入ksoap2-android-assembly-3.4.0中看到如下两个目录: ~~~ $ ls META-INF org ~~~ 2.将org/xmlpull/ 删掉 ~~~ $ rm -rf org/xmlpull/ ~~~ 3.将刚刚的两个目录还原成jar,只要将这两个目录压缩就可以。我这边是Ubuntu自带的图形工具压缩,有jar的选项。如果你那边没有,只要压缩成zip然后改名成jar就可以。 尝试过在progard-rules.pro中添加以下代码: ~~~ -keep class org.kobjects.** { *; } -keep class org.ksoap2.** { *; } -keep class org.kxml2.** { *; } -keep class org.xmlpull.** { *; } ~~~ 其实这不是必须的。
';

Android问题集锦之三十四

最后更新于:2022-04-01 06:39:15

## android studio导入项目下载gradle-x.x.x-all.zip 每每打开github上的项目,都会先下载gradle。每个项目都有自己的gradle构建程序,但是打开一个新项目就重新下载gradle对于网络较差的情况真是苦不堪言。所以我们可以用已经下载好的放到对应的路径下并解压好就可以了。 gradle的配置目录在~/.gradle。  看看我的目录下内容: ~~~ ~/.gradle$ du -sh * 46M caches 1.4M daemon 369M wrapper ~/.gradle/wrapper/dists$ ls gradle-1.12-all gradle-2.2.1-all ~~~ 每个项目在此有对应目录: ~~~ ~/.gradle/wrapper/dists/gradle-2.2.1-all$ ls c64ydeuardnfqctvr1gm30w53 ~/.gradle/wrapper/dists/gradle-2.2.1-all$ ls c64ydeuardnfqctvr1gm30w53/ gradle-2.2.1 gradle-2.2.1-all.zip gradle-2.2.1-all.zip.lck gradle-2.2.1-all.zip.ok ~~~ 只要在AS打开项目时下载gradle时,停止它。将已经下载的gradle解压到其对应目录下,重启AS就好了。
';

Android问题集锦之三十三

最后更新于:2022-04-01 06:39:12

## 避免每次启动AS都要fetching Android sdk compoment information Android Studio每次启动都要去fetching sdk,由于Android sdk 官网我们还是连不上所以每次都要界面停在那里很久。 解决办法就是设置取消每次fetching sdk的功能。  只要在Android Studio的idea.properties文件最后加入下面内容: ~~~ #disable first run disable.android.first.run=true ~~~ 重启AS,搞定!
';

Android问题集锦之三十二

最后更新于:2022-04-01 06:39:10

## Failure [INSTALL_FAILED_NO_MATCHING_ABIS] 这个问题出现在模拟器上的概率更大些,原因是某些应用使用了原生库(NDK,Native Lib),这些库的编译目标通常是arm架构的cpu,在x86上运行就会报这样的错误。  比如我看了一下报错的应用,果然有很多so在lib下。 ~~~ $ ls lib/armeabi/ libapp_BaiduMapApplib_v2_1_1.so liblocSDK3.so libvi_voslib.so libyc.so ~~~ 一个简单的解决办法就是换一个arm架构的模拟器。
';

Android问题集锦之三十一

最后更新于:2022-04-01 06:39:08

## Android Studio: Plugin with id 'android-library' not found github上的很多项目都是用Android Studio开发的,昨天下载一个项目已经好久了,gradle的版本比较低,所以就遇到找不到‘android-library’的错误。从stackoverflow上找到类似的问题,解决方法是用较新的gradle版本。 ~~~ Instruct Gradle to download Android plugin from Maven Central repository. You do it by pasting the following code at the beginning of the Gradle build file: buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.+' } } Replace version string 1.0.+ with the latest version. Released versions of Gradle plugin can be found in official Maven Repository or on MVNRepository artifact search. ~~~ com.android.tools.build gradle 1.1.3 all (62) 07-Mar-2015 pom jar javadoc.jar sources.jar > 参考:  > [http://stackoverflow.com/questions/18153739/android-studio-plugin-with-id-android-library-not-found](http://stackoverflow.com/questions/18153739/android-studio-plugin-with-id-android-library-not-found)  > [http://search.maven.org/#search|ga|1|g:%22com.android.tools.build%22%20AND%20a:%22gradle%22](http://search.maven.org/#search|ga|1|g:%22com.android.tools.build%22%20AND%20a:%22gradle%22)
';

Android问题集锦之三十

最后更新于:2022-04-01 06:39:05

## SDK离线文档打开慢 不知从什么时候起,打开离线文档成了一件不容易的事情,原因是虽然是离线的文档,但是有很多内容需要连接Android官网,等到超时后才能打开。这一点google做的不地道,你给大家的文档明明是离线的,为什么还要联网才行? 我们怎么办呢?改文件肯定是不行的,太多了。把网络断掉也不太可行。那么就从浏览器入手,将其调到offline状态。 比如Firefox的操作是:File—>Work Offline 如果你需要打开其他页面上网,那么记得还要将offline关掉。
';

Android问题集锦之二十九

最后更新于:2022-04-01 06:39:03

## Cannot run program "/xx/build-tools/xx/aapt": error=2, No such file or directory 全新的Ubuntu14.04.1(64位)搭建好Android开发环境,编译出错: `Error:Execution failed for task ':facebookSDK:processReleaseResources'.> java.io.IOException: Cannot run program "/opt/sdk/build-tools/20.0.0/aapt": error=2, No such file or directory` 我的sdk被放在了/opt目录下,aapt文件静静的躺在那里,权限也够,怎么会找不到呢? 原来是64位系统搞的鬼。 解决的方案就是安装几个32位的兼容库,如下: ` $ sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1  ` 重新clean编译,问题不见了!
';

Android问题集锦之二十八

最后更新于:2022-04-01 06:39:01

## You need to use a Theme.AppCompat theme (or descendant) with this activity. **错误描述为:** java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. **起因:** 我想在Manifest中设置我的activity全屏,代码如下: ~~~ <activity android:name=".MainActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:label="@string/app_name" > ~~~ **原因:** 从错误提示中提到Theme.AppCompat theme,这是因为我们的activity一定是继承了兼容包中的类, 比如我这里就无意中继承了ActionBarActivity,它来自android.support.v7.app.ActionBarActivity。 所以就要使用与其配合的AppCompat的theme才行。 **解决:** 1.根据提示来使用AppCompat的theme,如下: ~~~ <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:label="@string/app_name" > ~~~ 不过我要设置全屏,但我并没有找到,所以虽然错误不见了,但并没有达到我的预期。 2.如果不是那么强烈需要继承自ActionBarActivity,就直接继承Activity吧。问题自然搞定!
';

Android问题集锦之二十七

最后更新于:2022-04-01 06:38:59

## Error parsing XML: unbound prefix 在编辑layout文件时遇到这个错误提示,有时我们找了好久都没有发现错误。其实这个错误跟我们的粗心拼写非常有关系。 unbound prefix往往意味着我们的前缀不对,而这个前缀又跟android分不开。 在我们将android拼写成Android、andorid等,错误还真不那么容易发现。技巧就是,看到这个错误,就沿着错误在附近寻找拼写错误。 细心才是解决这个错误的关键。
';