Android Studio点击run时停在Wait fornpm run build 部署to finish咋办?

如何在 Ubuntu 15.04 / CentOS 7 上安装 Android Studio_Linux教程_Linux公社-Linux系统门户网站
你好,游客
如何在 Ubuntu 15.04 / CentOS 7 上安装 Android Studio
来源:Linux中国&
作者:Linux
随着最近几年智能手机的进步,安卓成为了最大的手机平台之一,在开发安卓应用中所用到的所有工具也都可以免费得到。 Studio 是基于
用于开发安卓应用的集成开发环境(IDE)。它是 Google 2014 年发布的免费开源软件,继 Eclipse 之后成为主要的 IDE。
在这篇文章,我们一起来学习如何在
7 上安装 Android Studio。
在 Ubuntu 15.04 上安装
我们可以用两种方式安装 Android Studio。第一种是配置所需的库然后再安装它;另一种是从 Android 官方网站下载然后在本地编译安装。在下面的例子中,我们会使用命令行设置库并安装它。在继续下一步之前,我们需要确保我们已经安装了 JDK 1.6 或者更新版本。
这里,我打算安装 JDK 1.8。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudoapt-get update
$ sudoapt-get install -java8-installer oracle-java8-set-default
验证 java 是否安装成功:
poornima@poornima-Lenovo:~$ java -version
现在,设置安装 Android Studio 需要的库
$ sudo apt-add-repository ppa:paolorotolo/android-studio
Android-Studio-repo
$ sudoapt-get update
$ sudoapt-get install android-studio
上面的安装命令会在 /opt 目录下面安装 Android Studio。
现在,运行下面的命令启动安装向导:
$ /opt/android-studio/bin/studio.sh
这会激活安装窗口。下面的截图展示了安装 Android Studio 的过程。
安装 Android Studio
设置模拟器
你点击了 Finish 按钮之后,就会显示同意协议页面。当你接受协议之后,它就开始下载需要的组件。
这一步完成之后就结束了 Android Studio 的安装。当你重启 Android Studio 时,你会看到下面的欢迎界面,从这里你可以开始用 Android Studio 工作了。
在 CentOS 7 上安装
现在再让我们来看看如何在 CentOS 7 上安装 Android Studio。这里你同样需要安装 JDK 1.6 或者更新版本。如果你不是 root 用户,记得在命令前面使用 &sudo&。你可以下载的 JDK。如果你已经安装了一个比较旧的版本,在安装新的版本之前你需要先卸载旧版本。在下面的例子中,我会通过下载需要的 rpm 包安装 JDK 1.8.0_65。
[root@li1260-39~]# rpm -ivh jdk-8u65-linux-x64.rpm
Preparing...################################# [100%]
Updating/ installing...
1:jdk1.8.0_65-2000:1.8.0_65-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
jsse.jar...
charsets.jar...
localedata.jar...
jfxrt.jar...
如果没有正确设置 Java 路径,你会看到错误信息。因此,设置正确的路径:
export JAVA_HOME=/usr/java/jdk1.8.0_25/
export PATH=$PATH:$JAVA_HOME
检查是否安装了正确的版本:
[root@li1260-39~]# java -version
java version "1.8.0_65"
Java(TM) SE RuntimeEnvironment(build 1.8.0_65-b17)
JavaHotSpot(TM)64-BitServer VM (build 25.65-b01, mixed mode)
如果你安装 Android Studio 的时候看到任何类似 &unable-to-run-mksdcard-sdk-tool:& 的错误信息,你可能要在 CentOS 7 64 位系统中安装以下软件包:
glibc.i686
glibc-devel.i686
libstdc++.i686
zlib-devel.i686
ncurses-devel.i686
libX11-devel.i686
libXrender.i686
libXrandr.i686
下载 IDE 文件然后解压安装 studio 也是一样的。
[root@li1260-39 tmp]# unzip android-studio-ide-141.2343393-linux.zip
移动 android-studio 目录到 /opt 目录
[root@li1260-39 tmp]#mv/tmp/android-studio/ /opt/
需要的话你可以创建一个到 studio 可执行文件的符号链接用于快速启动。
[root@li1260-39 tmp]#ln-s /opt/android-studio/bin/studio.sh /usr/local/bin/android-studio
现在在终端中启动 studio:
[root@localhost ~]#studio
之后用于完成安装的截图和前面 Ubuntu 安装过程中的是一样的。安装完成后,你就可以开始开发你自己的 Android 应用了。
虽然发布不到一年,但是 Android Studio 已经替代 Eclipse 成为了 Android 的开发最主要的 IDE。它是唯一能支持 Google 之后将要提供的 Android SDK 和其它 Android 特性的官方 IDE 工具。那么,你还在等什么呢?赶快安装 Android Studio 来体验开发 Android 应用的乐趣吧。
更多Android Studio相关内容可以看看以下的有用链接:&
在Ubuntu 15.04下安装Android Studio& &
Android Studio 2.0中的模拟器已提速50倍&
Ubuntu 12.04(64位)安装Android Studio 全过程 &
Android Studio v0.1尝鲜 &
Android Studio使用教程 &
Android Studio开发指南
Android Studio设置主题 和 不支持中文的问题解决方法 &
Android Studio 下载安装以及不能打开的解决办法 &
Android Studio安装使用图文教程 &
Ubuntu上安装Android Studio 1.3(谷歌 Android IDE 开发)& &
Android Studio 的详细介绍:Android Studio 的下载地址:&
更多Ubuntu相关信息见 专题页面
更多CentOS相关信息见 专题页面
作者: 译者: 校对:
原创编译, 荣誉推出
本文永久更新链接地址:
相关资讯 & & &
& (08/13/:05)
& (05/22/:49)
& (04月13日)
& (08/04/:24)
& (04/19/:54)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
sbbqq 发表于 顶+在 AndroidStudio 工程点击 Run 按钮, 实际上做了什么操作呢? - 知乎182被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答92 条评论分享收藏感谢收起Android开发各类常见错误解决方案(不断更新中) - 简书
Android开发各类常见错误解决方案(不断更新中)
本文属于个人平时项目开发过程遇到的一些问题,记录下来并总结解决方案,希望能帮到大家解决问题,有些问题的解决方案是在StackoverFlow上找到的,建议大家遇到问题多去上面找,基本上都能找到解决方案的。
(1)将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法:
在build.gradle里添加以下两句:
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
用来关闭Android Studio的PNG合法性检查的,直接不让它检查。
(2)Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum
Eclipse可以智能的把UTF-8+BOM文件普通的UTF-8文件,Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM的文件出现” 字符: '\ufeff' “的错误
解决方法:
将UTF-8+BOM编码的文件转为普通的UTF-8文件。**
**用EdItPlus打开.java文件:文档》文本编辑》转换文本编码》选择UTF-8编码即可
(3)将项目导入到AS中出现以下问题:
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. & com.android.bui
解决方法:
在build.grade中添加以下代码:
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
(4)未知错误
Error:Timeout waiting to lock cp_proj class cache for build file '/Users/Mr.xiao/Desktop/AndroidShopNC2014MoblieNew/androidShopNC2014Moblie/build.gradle'
(/Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj).
It is currently in use by another Gradle instance.
Owner PID: unknown
Our PID: 1412
Owner Operation: unknown
Our operation: Initialize cache
Lock file: /Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj/cache.properties.lock
以上是错误提示。
解决的思路很简单只需要把cache.properties.lock文件删除了就可以了。当时我们删除的时候会被占用这时候需要进入任务管理器结束关于java的进程就行比如 java 的jdk 删除后重启让java jdk启动
启动Android Studio就能启动APK了。
(5)修改了Android项目的最小SDK版本之后出现很多stysle文件找不到
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "net.mmloo2014.android"
minSdkVersion 14
targetSdkVersion 23
compileSdkVersion 是多少版本的
那么compile 'com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。
(6)Android studio 编译问题:finished with non-zero exit value 2
Error:Execution failed for task ':androidShopNC2014Moblie:transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
java.util.concurrent.ExecutionException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
这个错误在app的build.gradle里面添加下面这句就好了。
defaultConfig {
multiDexEnabled true
(7)Android studio 编译问题:finished with non-zero exit value 1(由于导入的依赖出现重复造成的)
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
& com.[Android](http://lib.csdn.net/base/15).build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\[Java](http://lib.csdn.net/base/17)\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 1
这个是因为依赖包重复了 (像v4和nineoldandroids),app中实现了对easeUI的依赖,但是app和easeUI都添加了对这个包的依赖。所以就报这个错误,修改之后再报,就clean,rebuild一下。
Error:Execution failed for task
':app:transformClassesWithJarMergingForDebug'.&
com.android.build.api.transform.TransformException:
java.util.zip.ZipException:
duplicate entry: org/apache/http/ConnectionClosedException.class
这个是在我们启动的时候报错的,而不是在编译的时候,原因是这样的,报这个错是因为有2个库中存在相同的类。大家可以看到stackoverflow上有人也提了这样的问题。只需要删除其中的一个就可以解决了。
(9)添加第三方依赖出现的问题
Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed :
uses-sdk:minSdkVersion 14 cannot be smaller than version 19 declared in library [com.github.meikoz:basic:2.0.3]
/AndroidStudioCode/EnjoyLife/app/build/intermediates/exploded-aar/
com.github.meikoz/basic/2.0.3/AndroidManifest.xml
Suggestion: use tools:overrideLibrary="com.android.core" to force usage
出现这个错误的原因是我引入的第三方库最低支持版本高于我的项目的最低支持版本,异常中的信息显示:我的项目的最低支持版本为14,而第三方库的最低支持版本为19,所以抛出了这个异常。
在AndroidManifest.xml文件中标签中添加
&uses-sdk tools:overrideLibrary="xxx.xxx.xxx"/&
其中的xxx.xxx.xxx为第三方库包名,如果存在多个库有此异常,则用逗号分割它们,例如:
&uses-sdk tools:overrideLibrary="xxx.xxx.aaa, xxx.xxx.bbb"/&
这样做是为了项目中的AndroidManifest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制。
(10)Android studio 编译问题:finished with non-zero exit value 1(由于buildtools版本太高造成的)
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
& com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
buildToolsVersion版本太高,我原来的 buildToolsVersion "24.0.0” 需要jdk1.8,而我的是jdk1.7,所以一直报这个错,刚开始以为是v4包和V7包冲突,因为之前遇到这样的问题,而这次删除V4包之后依然报这个错,上stackoverflow搜了一下,把buildTools版本降下来就好了。
compileSdkVersion 23
buildToolsVersion "23.0.3"
(11)Android studio 编译问题:Gradle DSL not found 'android()'
clipboard.png
配置build.gradle:
buildscript {
repositories {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
allprojects {
repositories {
buildscript {
repositories {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
allprojects {
repositories {
配置app/build.gradle:
apply plugin: 'com.android.application'android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
defaultConfig {
minSdkVersion 9
targetSdkVersion 23
versionCode 1
versionName '1.0'
dependencies {
compile 'com.android.support:appcompat-v7:23.2.1'
最后再同步一下sync即可。
(12)Android studio 编译问题:Gradle DSL not found 'android()'
Error:(51, 52) 错误: -source 1.6 中不支持 diamond 运算符
(请使用 -source 7 或更高版本以启用 diamond 运算符)
将标红处设置为1.7.png
修改soure为1.7.png
在build gradle中进行配置如下代码:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
最后同步一下即可
(13)Glide使用问题:使用Glide加载圆角图片,第一次显示占位图
最近在项目中使用Glide加载圆形图片,并且设置placehloder和error两个占位图,运行发现,第一次加载图片只显示占位图,需要第二次进入的时候才会正常显示。
如果你刚好使用了这个圆形或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?
不设置占位图
使用Glide的Transformation API自定义圆形Bitmap的转换
* Glide圆形图片处理
static class CircleTransform extends BitmapTransformation {
public CircleTransform(Context context) {
super(context);
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
return circleCrop(pool, toTransform);
private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
if (source == null)
int size = Math.min(source.getWidth(), source.getHeight());
int x = (source.getWidth() - size) / 2;
int y = (source.getHeight() - size) / 2;
Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);
Bitmap result = pool.get(size, size, Bitmap.Config.RGB_565);
if (result == null) {
result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint();
paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
paint.setAntiAlias(true);
float r = size / 2f;
canvas.drawCircle(r, r, r, paint);
public String getId() {
return getClass().getName();
使用方法:
Glide.with(context).load(imageUrl).placeholder(placeholder).error(errorImage).transform(new CircleTransform(context)).into(imageView);
重写Glide的图片加载监听方法,具体如下:
Glide.with(mContext)
.load(url)
.placeholder(R.drawable.loading_drawable)
.into(new SimpleTarget&Bitmap&(width, height) {
@Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
// setImageBitmap(bitmap) on CircleImageView
注意事项:
该方法在listview上复用有问题的bug,如果在listview中加载CircleImageView,请不要使用该方法。
方案四:不使用Glide的默认动画:
Glide.with(mContext)
.load(url)
.dontAnimate()
.placeholder(R.drawable.loading_drawable)
.into(circleImageview);
(14)json数据解析问题:json串头部出现字符:"\ufeff" 解决方法
org.json.JSONException: Value
of type java.lang.String cannot be converted to JSONObject
解析服务器返回 的json格式数据时,我们可能会发现,数据格式上是没有问题的,但是仔细对比会发现,在json串头部发现字符:"\ufeff"
客户端解决方案:
* 异常信息:org.json.JSONException: Value
of type java.lang.String cannot be converted to JSONObject
* json串头部出现字符:"\ufeff" 解决方法
* @param data
public static final String removeBOM(String data) {
if (TextUtils.isEmpty(data)) {
if (data.startsWith("\ufeff")) {
return data.substring(1);
服务器端解决方案:
将输出此json的php源码重新用editplus之类用utf-8无BOM的编码保存。不要用windows系统自带的记事本编辑php源码,这个BOM就是记事本这些windows自带的编辑器引入的。
(15)Android studio编译问题:not found ndk()
Error:(15, 0) Gradle DSL method not found: 'ndk()' method-not-found-ndk
出现该问题,可能是由于ndk配置在build.gradle配置文件中位置弄错导致的
apply plugin: 'com.android.application'
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.guitarv.www.ndktest"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
moduleName = "HelloJNI"
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
buildTypes {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
(16)Android studio导入其他的项目:UnsupportedMethodException
UnsupportedMethodException
Unsupported method: AndroidProject.getPluginGeneration().
The version of Gradle you connect to does not support that method.
To resolve the problem you can change/upgrade the target version of Gradle you connect to.
Alternatively, you can ignore this exception and read other information from the model.
将根目录中的build.gradle文件中的gradle版本号,出现错误之前,我的是1.3.0,修改成2.2.0之后重新编译一下就可以运行了。
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
将这个版本号改成你其他项目能够运行成功的版本号即可
(17)Android studio更新到2.1.1之后使用CollapsingToolbarLayout出现Error inflating class CollapsingToolbarLayout
之前在项目中使用了CollapsingToolbarLayout,效果还是可以的,但是Android stuido更新到2.1.1版本之后出现Error inflating class CollapsingToolbarLayout 异常崩溃
异常信息如下所示:
com.test.android/com.test.android.ui.activity.RandomActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class android.support.design.widget.CollapsingToolbarLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class android.support.design.widget.CollapsingToolbarLayout
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
at com.test.android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.java:31)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/DI)V in class Landroid/support/v4/graphics/drawable/DrawableC or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.test.android-1/base.apk)
at android.support.design.widget.CollapsingToolbarLayout.setStatusBarScrim(CollapsingToolbarLayout.java:663)
at android.support.design.widget.CollapsingToolbarLayout.&init&(CollapsingToolbarLayout.java:197)
at android.support.design.widget.CollapsingToolbarLayout.&init&(CollapsingToolbarLayout.java:132)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
at com.test.android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.java:31)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
在项目的build.gradle文件中添加下面一行,同步一下即可
compile ('com.android.support:support-v4:23.4.0'){
(18)Android studio gradle编译异常
java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0
很显然是class版本不支持。经查询, Studio2.2必须使用JDK8及以上版本,而且是强制的。
所以呢,赶紧下了个JDK8最新版的。安装完毕,把JAVA_HOME指向了JDK8,实测JDK7和8是可以共存的。
那么,重启Android Studio后问题解决,Build Successful !
(19)电脑突然断电,Android studio 工程代码全部报错,找不到android sdk 的依赖包,clean、重启都没有用
前几天公司搬家,正准备同步代码,突然断电、等把电脑搬到新办公楼,打开AS发现所有的项目代码报错,找不到android 依赖包,clean、重启都没有用,
(20)recycleview嵌套列表项显示不全问题
解决方案:
第一个RecyclerView的Adapter(即父RecyclerView):
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.shop_item,null); 解决条目显示不全
MyHolder holder = new MyHolder(view);
第二个RecyclerView的Adapter(即子RecyclerView):
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.check_item, parent,false);//解决宽度不能铺满
MyHolder holder = new MyHolder(view);
(21)Android手机真机调试,日志不打印的解决方案:
1、在拨号界面输入:*#*#2846579#*#* 进入测试菜单界面。
2、Project Menu–后台设置–LOG设置
3、LOG开关–LOG打开 LOG级别设置–VERBOSE
4、Dump&Log– 全部选中
5、重启手机
(22)java.lang.IndexOutOfBoundsException Inconsistency detected. Invalid item position 2(offset:2).state:4
解决方案:Recyclerview在下拉刷新时,如果在数据没更新到之前将list
之后,迅速滑动会造成crash,所以一般在下拉刷新之前,等数据刷新回来再把之前的数据进行清除。
(23)**使用友盟分享——微信、朋友圈分享出现java.lang.NoClassDefFoundError: org.apache.http.entity.mime.MultipartEntity
解决方案: 造成这样的原因是因为缺少httpmime_jar,添加是httpmime_jar包之后即可正常分享
(24)Fragment中调用getActivity()出现空指针异常
解决方案:
对于上面的问题,可以考虑下面这两种解决办法:
1、不保存fragment的状态:在MyActivity中重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到fragment随MyActivity一起销毁的目的。
2、重建时清除已经保存的fragment的状态:在恢复Fragment之前把Bundle里面的fragment状态数据给清除。方法如下:
if(savedInstanceState!= null)
String FRAGMENTS_TAG = "android:support:fragments";
savedInstanceState.remove(FRAGMENTS_TAG);
(25)RecyclerView嵌套使用切换页面出现自动滚动问题
造成这样的原因是由于子RecyclerView抢占焦点导致的,如果你去查看RecyclerView的源码会发现,它会在构造方法中调用setFocusableInTouchMode(true),所以,设为false可以解决这个问题。
在子RecyclerView中调用如下方法
//设置焦点不需要
secondRvList.setFocusableInTouchMode(false);
secondRvList.requestFocus();
(26)Android 7.0设备拍照闪退问题
Android 7.0 做了一些系统权限更改,为了提高私有文件的安全性,面向 Android 7.0 或更高版本的应用私有目录被限制访问,此设置可防止私有文件的元数据泄漏,如它们的大小或存在性。而此权限更改有多重副作用,其中之一就是当传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。因此,尝试传递 file:// URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider。在应用间共享文件对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。要在应用间共享文件,应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。
1.在清单文件添加如下代码
android:name="android.support.v4.content.FileProvider"
android:authorities="你的应用包名.fileProvider"
android:exported="false"
android:grantUriPermissions="true"&
&meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/&
&/provider&
android:authorities="com.alex.demo.FileProvider" 自定义的权限
android:exported="false" 是否设置为独立进程
android:grantUriPermissions="true" 是否拥有共享文件的临时权限
android:resource="@xml/external_storage_root" 共享文件的文件根目录,名字可以自定义
2.在xml文件夹目录下新建provider_paths文件,名字自定义,添加如下代码
&?xml version="1.0" encoding="utf-8"?&
&resources&
&external-path
name="camera_photos"
path="" /&
&/resources&
3.调用系统相机处代码处理
//调用系统相机拍照
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) {
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, parUri(tempFile));
startActivityForResult(cameraIntent, REQUEST_CAMERA);
* @param cameraFile
private Uri parUri(File cameraFile) {
Uri imageU
String authority = getContext().getPackageName()+ ".provider";
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.M) {
//通过FileProvider创建一个content类型的Uri
imageUri = FileProvider.getUriForFile(getContext(), authority, cameraFile);
imageUri = Uri.fromFile(cameraFile);
return imageU
(27)使用Glide加载列表项,刷新之后图片大小出现缩放问题
原因:导致这样的问题是因为ImageView的默认资源大小和下载资源大小不一样。
解决方案:
(1)加载与Imageview 设置的宽高一致的图片,有的图片地址后面可以拼接对应的分辨率大小,然后根据传的分辨率大小来下载图片;
(2) 代码里面再设置一下ImageView的大小,然后再加载图片
*此处的MyBitmapImageViewTarget 为自定义的BitmapImageViewTarget,在里面获取imagview的宽高
Glide.with(context)
.load(url)
.asBitmap()
.centerCrop()
.placeholder(loadingPic)
.error(errorPic)
.into(new MyBitmapImageViewTarget(imageView));
(3)禁止Glide的默认加载动画,也可以解决这个问题
Glide.with(context)..load(url).placeholder(R.drawable.icon_stub_dynamic).dontAnimate().into(imageView);
(28)解决android 6.0(api 23) SDK,不再提供org.apache.http.(只保留几个类)
useLibrary 'org.apache.http.legacy'
如果觉得文章帮到你,喜欢我的文章可以关注个人微信公众号,将会定期推送优质技术文章,求关注~~~##
欢迎关注“大话安卓”公众号
欢迎加入“大话安卓”技术交流群,一起分享,共同进步##
欢迎加入“大话安卓”技术交流群,互相学习提升
用汗水灌溉梦想,用梦想创造奇迹。
(个人微信公众号:大话安卓(dahuaAndroid),欢迎关注)
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
作者:snowdream微信:sn0wdr1am原文地址:https://github.com/snowdream/awesome-android awesome-android Introduction android libs from github System re...
写给 Android 开发者的混淆使用手册 - Android - 掘金本文转自:点击打开链接 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。 首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依...
《立秋》 一叶梧桐一报秋,稻花田里話丰收。 虽非盛夏还伏虎,更有寒蝉唱不休。 二十四节气的第十三个节气 秋天的第一个节气 《月令七十二候集解》: “秋,揪也,物於此而揪秋也” 暑去秋來,明日立秋。 初夏未远,立秋已到。 大雨之后,清涼风來。 而天气下降茫茫而白者, 尚未凝露...
近日,谷歌方面表示,为了防止非自然引流、不正常跳转、网站被劫持等“弊端”,新版 Chrome 浏览器中将会“限制一些不必要的重定向跳转”。 据官方透露,新版 Chrome 浏览器中将主要针对以下三点做出改进: 1、如果重定向对应的网址是广告链接,Chrome 浏览器则会阻止...
对于很多人来讲,和自己所爱的人分手的那种遗憾是一份长久的痛楚,所以很多的人是想要努力进行挽回的。其实,只要懂得正确的挽回方式,感情还是可以挽回的。这个时候,打造一份属于自己的挽回爱情秘籍就很重要了。 1、不要放弃自己的自尊。很多的人在面对对方提出的分手时,往往会因为接受不了...
昨晚老公说:你这周六不上班吧,我们一起去看我同学刚出生的孩子!我说:这周我调班了,下周我要去上九型复训。 他一听火气蹭就上来了,说让我就这样上九型到死。 我问他:我上九型,到底是没有满足你的那种需求?是因为无法掌控我么?是因为金钱花费么?还是其它? 他说:我不想再和你多说一...
异地恋,有多少人在经历呢,都说两情若是长久时,又岂在朝朝暮暮。距离产生的不但是美,还有疏远。当真正经历过相隔天涯的爱情终将携手度过锦瑟流年时,才知道什么是真挚的爱情。很多人跟我说异地恋真的太难了,最后都败给了距离败给了现实,现在我讲异地恋总结出八条恋爱定律,希望异地恋的小伙...

我要回帖

更多关于 npm run build 的文章

 

随机推荐