android项目从Eclipse迁移到Android studio中常见问题解决方法

(1)将Eclipse项目导入到Android studio 中出现9-patch image问题解决方法:

在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中添加以下代码:

android{
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里面添加下面这句就好了。

android {
defaultConfig {
multiDexEnabled true
}
}

(7)Android studio 编译问题:finished with non-zero exit value 1(由于导入的依赖出现重复造成的)

问题:

Error:Execution failed for task ‘:app:transformClassesWithDexForDebug'.

com.Android.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一下。

(8)问题

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包之后依然报这个错,把buildTools版本降下来就好了。

解决方案

android {
compileSdkVersion 23
buildToolsVersion “23.0.3”
}

(11)Android studio 编译问题:Gradle DSL not found ‘android()'

问题

clipboard.png

解决方案

配置build.gradle:

buildscript {
repositories { jcenter()}
dependencies {
classpath ‘com.android.tools.build:gradle:2.1.2'
}
}
allprojects {
repositories {
jcenter()
}
}

配置app/build.gradle:

apply plugin: ‘com.android.application'
android {
…
defaultConfig { …}
}
dependencies { …}

最后再同步一下sync即可。

(13)Glide使用问题:使用Glide加载圆角图片,第一次显示占位图

问题描述

最近在项目中使用Glide加载圆形图片,并且设置placehloder和error两个占位图,运行发现,第一次加载图片只显示占位图,需要第二次进入的时候才会正常显示。

如果你刚好使用了这个圆形Imageview库或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?

方案一

不设置占位图 推荐

/**
* 显示圆形图片
* @param context
* @param url
* @param iv
*/
public static void loadCircleImage(final Context context, String url, final ImageView iv) {

  Glide.with(context).load(url).asBitmap().centerCrop()
      .placeholder(R.mipmap.default_user_icon)
      .error(R.mipmap.default_user_icon)
      .diskCacheStrategy(DiskCacheStrategy.RESULT)
      .into(new BitmapImageViewTarget(iv) {
    @Override
    protected void setResource(Bitmap resource) {
      RoundedBitmapDrawable circularBitmapDrawable =
          RoundedBitmapDrawableFactory.create(context.getResources(), resource);
      circularBitmapDrawable.setCircular(true);
      iv.setImageDrawable(circularBitmapDrawable);
    }
  });

方案二

使用Glide的Transformation API自定义圆形Bitmap的转换

/**
* Glide圆形图片处理
*/
static class CircleTransform extends BitmapTransformation {
public CircleTransform(Context context) {
super(context);
}

  @Override
  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) return 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);
    return result;
  }

  @Override
  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
* @return
*/
public static final String removeBOM(String data) {
if (TextUtils.isEmpty(data)) {
     return data;
}
if (data.startsWith("\ufeff")) {
    return data.substring(1);
    }
else {
    return data;
    }
}

服务器端解决方案:

将输出此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'
android {
  compileSdkVersion 23
  buildToolsVersion "23.0.2"

  defaultConfig {
    applicationId "com.guitarv.www.ndktest"
    minSdkVersion 17
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    ndk {
      moduleName = "HelloJNI"
    }
    sourceSets.main {
      jni.srcDirs = []
      jniLibs.srcDir "src/main/libs"
    }
  }
  buildTypes {
    release {
      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
。。。
Caused by: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.test.android-1/base.apk)
。。。

解决方案

在项目的build.gradle文件中添加下面一行,同步一下即可

compile ('com.android.support:support-v4:23.4.0'){
  force = true;
}

(18)Android studio gradle编译异常

java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0

很显然是class版本不支持。经查询,Android Studio2.2必须使用JDK8及以上版本,而且是强制的。

所以呢,赶紧下了个JDK8最新版的。安装完毕,把JAVA_HOME指向了JDK8,实测JDK7和8是可以共存的。

那么,重启Android Studio后问题解决,Build Successful !

(19)recycleview嵌套列表项显示不全问题

解决方案:

第一个RecyclerView的Adapter(即父RecyclerView):

@Override
  public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.shop_item,null); 解决条目显示不全
        MyHolder holder = new MyHolder(view);
          return holder;
   } 

第二个RecyclerView的Adapter(即子RecyclerView):

@Override
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);
   return holder;
  }

(20)Android手机真机调试,日志不打印的解决方案:

1、在拨号界面输入:*#*#2846579#*#* 进入测试菜单界面。
2、Project Menu–后台设置–LOG设置
3、LOG开关–LOG打开 LOG级别设置–VERBOSE
4、Dump&Log– 全部选中
5、重启手机

(21)java.lang.IndexOutOfBoundsException Inconsistency detected. Invalid item position 2(offset:2).state:4

解决方案:

Recyclerview在下拉刷新时,如果在数据没更新到之前将list clear 之后,迅速滑动会造成crash,所以一般在下拉刷新之前,等数据刷新回来再把之前的数据进行清除。

(22)使用友盟分享——微信、朋友圈分享出现java.lang.NoClassDefFoundError: org.apache.http.entity.mime.MultipartEntity

解决方案: 造成这样的原因是因为缺少httpmime_jar,添加是httpmime_jar包之后即可正常分享

(23)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);
}

(24)RecyclerView嵌套使用切换页面出现自动滚动问题

原因:

造成这样的原因是由于子RecyclerView抢占焦点导致的,如果你去查看RecyclerView的源码会发现,它会在构造方法中调用setFocusableInTouchMode(true),所以,设为false可以解决这个问题。

解决方案

在子RecyclerView中调用如下方法

//设置焦点不需要
secondRvList.setFocusableInTouchMode(false);
secondRvList.requestFocus();

(25)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 类。点击查看Android官方说明

解决方案

1.在清单文件添加如下代码

<provider
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>
  <paths>
    <external-path
      name="camera_photos"
      path="" />
  </paths>
</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);
}

 /**
  * 生成uri
  * @param cameraFile
  * @return
  */
  private Uri parUri(File cameraFile) {
    Uri imageUri;
    String authority = getContext().getPackageName()+ ".provider";
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
      //通过FileProvider创建一个content类型的Uri
      imageUri = FileProvider.getUriForFile(getContext(), authority, cameraFile);
    } else {
      imageUri = Uri.fromFile(cameraFile);
    }
    return imageUri;
  }

(26)ProcessException: Return code 1 for dex process

问题实际原因还是Apps over 64k method,

解决方案:

https://developer.Android.com/intl/zh-cn/tools/building/multidex.html

方案1:使用插件化框架 比如: https://github.com/singwhatiwanna/dynamic-load-apk

方案2:分割Dex

主要说说Dex分割

1、开发环境是eclipse时的解决方案:

在project.properties中添加一行 dex.disable.merger = true

2、Android Studio在app的 build.gradle 中

(1)在dependencies 中添加  compile ‘com.android.support:multidex:1.0.1‘

(2)在 defaultConfig 中添加multiDexEnabled true

android {
  compileSdkVersion 21
  buildToolsVersion "21.1.0"
  defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...
    // Enabling multidex support.
    multiDexEnabled true
  }
  ...
}
dependencies {
 compile 'com.android.support:multidex:1.0.1'
}

(3) 如果你的应用程序继承 Application , 那么你需要重写并继承 MultiDexApplication. 并添加以下代码。(晕,不添加也可以???)

/** * 分割 Dex 支持 * @param base */
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}

当没有继承Application 时,

manifest application 标签中添加

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.vieboo.test">
   <application
    ...
     android:name="android.support.multidex.MultiDexApplication">
    ...
  </application>
</manifest>

(27)依赖库属性冲突
gradle.properties加上android.enableAapt2=false可解决

您可能感兴趣的文章:

  • Eclipse NDK迁移到Android Studio的方法示例
  • 在启动栏制作android studio启动图标
  • 深踩Android Studio 缓存的坑及解决方法
  • Android Studio 3.0 Gradle 配置变更
  • Android Studio设置、改变字体和主题的方法
  • 使用Android studio编写一个小的jni程序
  • Android Studio 代码导航快捷键
  • Android Studio多工程引用同一个library项目配置的解决方法
  • Android Studio中Run按钮是灰色的快速解决方法
  • Android Studio 下载视频到本地
  • 详解Android Studio中Git的配置及协同开发
  • Android Studio配置内嵌JDK的方法
  • AndroidStudio 配置 AspectJ 环境实现AOP的方法
  • 详解如何在Android Studio中添加RecyclerView-v7支持包
  • Android Studio 一个工程打包多个不同包名的APK实例详解
  • android studio library 模块中正确引用aar的实例讲解
  • Android Studio中导入module的方法(简单版)
  • Android Studio 引用外部依赖时报错的解决方法
(0)

相关推荐

  • 深踩Android Studio 缓存的坑及解决方法

    本文记录的是今天在群里提到的昨天所踩的一个坑,有关 AndroidStudio 缓存的. 先说一下背景. 我负责的一个项目,对一个图表库有外部依赖.这个图表库是我在维护的,由于新功能在开发中,所以我就使用了 SNAPSHOT 版本发布到 OJO(oss.jfrog.org) 上.我在项目中刚更新了依赖,忽然想到还少几个 API,于是发布了 SNAPSHOT 版本. 故事就这样开始了. 这时候回到 AndroidStudio 再去 Sync Project with Gradle Files 肯定

  • Android Studio中导入module的方法(简单版)

    1.把要导入成Mudle的项目修改成符合Library的格式 修改该项目中bulid.gradle文件中第一行代码 把 apply plugin: 'com.android.application' 修改为 apply plugin: 'com.android.library' 然后,修改AndroidManifiest.xml文件中配置信息,此处主要是把原来配置的项目Style等配置以及MainActivity配置删除,这样处理是为了防止重复.以下以一个我的Moudle文件的AndroidMa

  • Android Studio 代码导航快捷键

    简评:作为一位 Android 开发者,Android Studio 肯定是每天都要打交道的,熟练掌握其中的快捷键等技巧可以提高我们不少的效率. 虽然,网上有着很多列出快捷键的文章,但只是简单的看一看快捷键和说明,很难让人理解和掌握.本篇文章就专注于代码间导航的快捷键,配合动图,希望能帮助你记忆. TL;DR 下面的快捷键都是在 mac 上,快捷键设置是 Mac OS X 10.5+: ⌘ + O : 查找类. ⌘ + ⌥ + O : 通过信息(symbol)查找. ⌘ + ⇧ + O : 查找

  • Android Studio 3.0 Gradle 配置变更

    多渠道打包变更 flavorDimensions "default" productFlavors { xxxx { dimension "default" } } productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name] } 更改打包命名及路径 android.applicationVariants.all { variant -> if (va

  • AndroidStudio 配置 AspectJ 环境实现AOP的方法

    昨天看了一段android配置aspectj实现AOP的直播视频,就试着自己配置了一下,可能是因为我自己的AndroidStudio环境的问题,碰到了不少的坑(其实还是因为对gradle理解的不多),但总归是配置好了,就分享一下. 试了两种方式,不过项目下的build.gradle,没什么变化,直接看一下代码吧: build.gradle(项目下) buildscript { ext { //android appcompat支持库版本 androidSupportVersion = '26.1

  • android studio library 模块中正确引用aar的实例讲解

    今天对接一个海康监控的sdk,其中sdk 是以aar的形式提供的,并且我需要用到此aar的模块是个library.所以按照正常的在application模块中引入aar的方式一致报错,首先提示要关闭offline ,然后关闭了还是会提示错误.想了很久不明白.最终通过公司前辈的指导,正确的引入了aar. 1.除了和正常的aar的引入方式外,我们还需要在application所在模块的build.gradle文件中加入如下一段: repositories { flatDir { dirs 'libs

  • Android Studio 下载视频到本地

    最近在研究视频下载到本地的问题,像爱奇艺,腾讯视频,迅雷看看等等一些视频播放器,如果在一个播放器里面视频下载到一半用户退出App之后,再次登录从头开始,那么就太可悲了,所以在做视频音频类的项目时,要实现的一个功能就是断点续传,就是将用户下载的视频或者音频等以字节流的形式存入数据库,下次用户再次下载时,将继续上次数据库的接着下载,这样用户体验就会很好,也大大节省了成本. 好了废话不多说,开始今天的正题. 一.先上效果图 二.使用GreenDao我们需要导入依赖 1.以下在项目gradle依赖中添加

  • Android Studio 一个工程打包多个不同包名的APK实例详解

    公司最近有个特别的需求,同一套代码,稍做修改(如包名不一样,图标不一样,应用名不一样等),编译出几个不同的应用.刚好用AS重构完项目,在网上查阅了一些资料,终于搞定!!在这记录一下. AS主要是利用gradle来实现这个需求的,具体做法如下: 修改app的build.gradle文件 假设我们同一套代码编译2个app:app1和app2 android { ... productFlavors { // app1 app1 { // 设置applicationId(这里很重要,两个相同appli

  • 使用Android studio编写一个小的jni程序

     1.简单介绍一下NDK和JNI NDK:NDK是Native Development Kit的缩写,是Google提供的一套工具集,可以让你其他语言(C.C++或汇编)开发 Android的 JNI.NDK可以编译多平台的so,开发人员只需要简单修改 mk 文件说明需要的平台,不需要改动任何代码,NDK就可以帮你编译出所需的so库. JNI:JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++) 2.打开Android

  • 在启动栏制作android studio启动图标

    https://www.linuxidc.com/Linux/2017-08/146066.htm 首先在~/bin/android-studio文件夹下新建一个Studio.desktop文件,并用gedit打开,然后将以下的内容复制进去并改动. [Desktop Entry] Name=AndroidStudio Type=Application Icon=你的AndroidStudio解压文件夹的绝对路径/android-studio/bin/studio.png Exec=sh 你的An

  • 详解Android Studio中Git的配置及协同开发

    一. Android Stutio配置git setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置,这个Stutio一般会默认配置好: 配置完路径后点击后面的Test按钮,出现下面提示框则表示配置成功: 二. 将项目分享到github 1. 设置github账号密码 打开Setting–>Version Control–>GitHub,填写完账号密码后,点击Test测试,如果连接成功会弹出如下提示

  • Android Studio中Run按钮是灰色的快速解决方法

    首先是,在不同的AS中,gradle版本不同,下载的sdk版本不同,这些,都在gradle(Project.Models)相关代码里调过来就好.之前的文章里有说过. 经过调好gradle这些文件,AS已经可以built 成功后. 下一步,Run the application. 这时候,遇到问题:Run按钮灰色,失效. 点击Run旁边 Select Run/Debug Configuration按钮 选择 Edit Configuration,于是: 在model下拉框中选择app.如果下拉框中

  • Android Studio配置内嵌JDK的方法

    今天发现JDK环境变量没有配置好. 我没有专门去下载java,在下载Android Studio时,会自带内嵌的JDK. 打开File-OtherSettings-DefaultProjectStructure,可看到AS已自动勾选Use embedded JDK,而且是官方推荐的做法. 以下是配置环境变量的操作. java 1.8以后就无需CLASSPATH环境变量了. 我们只需配置JAVA_HOME和PATH即可. JAVA_HOME C:\AndroidStudio\jre (JDK安装目

  • Android Studio多工程引用同一个library项目配置的解决方法

    在使用Android Studio开发的时候,如遇到多个项目引用同一个library的情况时,会遇到在每个项目中都要有一套library的代码的情况,对于还在开发和维护中的Library需要频繁的修改,这对同步就很麻烦,为了解决这个问题,出现了下面的解决方案. 首先:新建一个类库工程,工程名为AppLibs.Dev. 在该类库中包含一个公共的类库appLibs的Module,Module下面的build.gradle配置如下: /** 声明是Android类库 */ apply plugin:

  • 详解如何在Android Studio中添加RecyclerView-v7支持包

    一直知道RecyclerView可以代替ListView.GridView使用,听说功能很强大,但还没有去学习过.今天想学习,没想到还没开始便撞墙了.输入Recycler,只有这两个东西,没有提示RecyclerView,说明支持包中没有. 最后一番百度后,终于解决(真不敢想象没有网络的情况下,怎么开发.怎么解决问题). 1.打开SDK Manager,在Extras树下找到Android Support Library,下载好支持包.RecyclerView在v7-21版本就出来了.我这里不用

  • Eclipse NDK迁移到Android Studio的方法示例

    最近看一个NDK项目,因为源码使用Eclipse IDE写的,想把代码导入Android Studio使用,毕竟好用很多,使用AS导入后,第一个问题就是编码问题,项目之前竟然使用的是GBK编码.首先就是改变编码问题.我先在设置中将项目编码改为UTF-8,build结果显示一堆错误的乱码,在网上逛了一圈,找到解决方案. 编码 将AS右下角的UTF-8换成GBK. 跳出提示选择"reload",此时注释之类的乱码会显示正确. 右下角再选择UTF-8 跳出提示选择"convert&

  • Android Studio 引用外部依赖时报错的解决方法

    Android Studio 在引用外部依赖时,发现一直无法引用外部依赖.刚开始以为是墙的问题,尝试修改Gradle配置,未解决问题. 最终发现原来是在Android Sudio安装优化配置时,将Gradle设置为了离线工作模式 解决方法: 只需打开File->Settings->Build,Execution,Deployment->Gradle->取消offline work勾选 总结 以上所述是小编给大家介绍的Android Studio报错Unable to resolve

  • Android Studio设置、改变字体和主题的方法

    1.步骤:File >> settings >> Appearance & Behavior >>Appearance >> 来到修改界面 如下图所示:(Theme 主题修改 :Name 字体 :size 字号大小:其他的效果自己设置就可以看到,下图是其中的一种效果) 2.修改代码区域的字体,字号等设置 步骤:File >> settings >> Editor >>Colors & Fonts >&

随机推荐