Android Studio 小新兵

1. java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.

网上是说要升级Gradle版本。

遇到这个问题,我是想创建一个API 10 (Android2.3.3) 开发环境。

后来改成功了。先创建一个Minimun SKD为API 10: Android 2.3.3的工程。

然后打开Gradle Scripts 里面的 build.gradle文件

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

把1.5.0改为2.0.0,然后去下载 gradle-2.10-bin.zip  下载地址 https://gradle.org/releases

下载后放到某一个目录,然后解压。

然后回到Android Studio:  File -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle

默认选中了当前项目  Project-level settings  先第二项 Use local gradle distribution 选目录指向刚才下载解压的目录上,然后右下角的 "Apply"  ->   "OK"   然后重新编译,重新运行就ok了。

2. 创建安卓模拟器。

创建模拟器的时候,要下载System Image,然后有3种类型

然后提示说 x86 的速度最快。我就选它了,然后win7系统还要装HAXM 下载地址http://pan.baidu.com/s/1i4AWyu5

3 Android Studio复制粘贴的bug。

有时候,在外部复制一个新内容后,在编辑器里面粘贴的话,还是旧的内容,试了几次都这样。解决办法,在编辑器里随便复制一点东西,在编辑器里粘贴,然后再去外部复制内容,然后到编辑器里复制,就是最新的了。

4. 

Error:(153, 64) 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
对于 varargs 调用, 应使用 Object
对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告

反射调用中很常用,你不能

ReflectUtil.invoke(linkProperties, "setHttpProxy", null);

而要写成

ProxyProperties proxySettings = null;
ReflectUtil.invoke(linkProperties, "setHttpProxy", proxySettings);

就是说你不能传一个null,你传null它不知道null是什么类型的,如果加一个申明,就知道原来null是ProxyProperties对象。

5 Android Studio 代码混淆(如何导出jar包)2017-05-21

网上很多这样的代码,看得我是云里雾里的,花了我一天的时候,其实这个很简单,只要理清的思路。

如果你只是想简单 代码混淆,一句话搞定,在build.gradle里面加上 minifyEnabled true 就可以了。

android {
    buildTypes {
        release {
            minifyEnabled true
        }
    }
}

然后双击一个build就出来了

我这边是在目录WifiProxyappuildintermediates ransformsproguard eleasejars31f里面,地址好奇怪,我也不知道怎么设置的,反正找到 main.jar 就对了。

不过这样打出来的包,多半不是你想要的,这个是按系统默认的配置去混淆的,不够具体。

有时候你想定制一下,哪些类需要混淆,哪些不需要混淆,你就需要多写几个配置信息了,

首先,补加一条

android {
    buildTypes {
        release {
            minifyEnabled true
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
}

然后自定义规则就写在 app/proguard-rules.pro文件里,我这里只写几个实用语句。

之前我在写插件,因为一个类,没有被其它类引用,就成孤岛了,但是我想打包进去呀,就加了一句

-keep public class cn.angelshelter.app.apicloud.WifiProxyModule

好家伙,马上就有这个类了,可是我的悲剧就开始了,我打包插件一直失败,说找不到那个方法,费了我好多时候,我后来才发现,这个类是空的,就是一个壳,里面的方法没有打包进入,

泪崩。。。。

后来补了一句,方法就可以打包进去了

-keep public class cn.angelshelter.app.apicloud.WifiProxyModule
-keepclassmembers class cn.angelshelter.app.apicloud.WifiProxyModule {
   public *;
}

第二个实用方法:

如果你不想某一个框包被混淆了,你可以找到它的包名,

-keep class com.uzmap.pkg.uzcore.** { *; }

这样的话,com.uzmap.pkg.uzcore包下的类都不会被混淆了。

第三个方法,其实我也不懂,我看官方的例子里有出现

-dontnote android.support.**

我猜测作用是android.support包下的类,即使找不到也不要报错,继续打jar包,不要停。。。。。不要停。。。

2017-05-22

Android Studio默认是没有开启版本同步功能(比如SVN)。需要自己打开

VCS -> Enable Version Control Integration... -> 然后在弹出来的对话框中选Subversion(SVN)点ok就行了。

界面布局显示不了的问题:Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version 52.0

解决办法:http://blog.csdn.net/u010635353/article/details/52594507

2017-05-23

有时候,加一个jar,Android Studio并没有及时识别出来,需要关掉Android Studio,再重新打开。

2017-05-27

如果你有一个Eclipse ADT项目,应该选用“导入”,而不是打开它。

2017-05-28

:app:transformClassesAndResourcesWithProguardForRelease报这个错是因为,我在生成jar架包的时候,把main.jar用winRAR打开没有关,可以占用了文件锁,删除不了main.jar吧。

只要把打开的winRAR窗口关掉就可以了,重新build一下。

有时候把一个jar包拷贝到libs目录下,工程并没有立即识别出来,有没出现那个小三角形,可以选中那个jar文件,然后右击,选中Add As Library...就好了。

2017-05-31

出现svn提交不了的情况,我明明修改了文件,系统却提示没有修改,No changes detected  No changes to commit

解决办法:其实都是网上的:问题1,svn没有安装全,少安装了一个部件

解决办法,重新安装,或者通过修复的方式补安装。

第二步设置svn.exe的安装路径,

最后一步,重新检出就可以了。搞定。

我用的版本TortoiseSVN_1.9.4.27285_x64.msi  下载地址:http://pan.baidu.com/s/1jHM0BIY

2017-06-03

Demo也能害死人

错误提示:Warning:Project app: Only Jar-type local dependencies are supported. Cannot handle: I:Desktop新建文件夹 (8)KF360SDKDemoapplibskfvrlib.aar

Error:Execution failed for task ':app:prepareDebugDependencies'.
> Dependency Error. See console for details.

就是因为按了demo里写的

compile fileTree(dir: 'libs', include: ['*.jar','*.aar'])

老老实实写成 compile fileTree(include: ['*.jar'], dir: 'libs') 就没事了,不要加什么aar

另一种添加aar的方式

File -> New -> New Module -> Import JAR/AAR Package,选择路径并命名,然后把新加的module添加到工程的Dependencies(依赖)里面去。

具体操作是 File -> Project Structure -> 左边找到app ->  右边点tab切换到Dependencies,最右边有一个小+号,然后选最下面的,Module dependency 然后不说了。

2017-06-05

刚从svn析出来的Android Studio项目好多为操作按钮都是灰的,有时候并不是因为配置不对,而仅仅是没有找到gradle而以,

File -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle -> Use local gradle distribution -> 点Apple

2017-06-12

有时候打开(Open)一个项目半天都加载不出来的时候,可以试一试导入(Import)一下子就加载出来了。

2017-06-13

原来不同layout下的id是可以重复的, 这样我在整合sdk的时候,就只要修改layout,不用修改里面的id了。

2017-06-14

报错:app:transformClassesWithDexForDebug

混淆的时候,如果dex超过65k也会报上面的错误,而且还没有提示。唉,解决办法是把用到的jar包,从compile变为provided,不混淆到jar包里面去。

2017-06-15

今天在打包main.jar的时候,发现如果不把META-INF里面的东西删掉的话,就运行不通过!!!

META-INF
services
com.fasterxml.jackson.core.JsonFactory
com.fasterxml.jackson.core.ObjectCodec
     javax.annotation.processing.Processor

2017-07-18

Android Studio的Copy Reference有问题。如果是内部类的话,

复制出来是cn.angelshelter.app.apicloud.NetTimeModule.AppDelegate,

但实际上应该是cn.angelshelter.app.apicloud.NetTimeModule$AppDelegate

2017-08-16

mediaPlayer报错setDataSource failed。

后来发现原因是没权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

在做视频播放的时候,发现一直没效果,原来是mediaPlayer.start没有调用。。。

2018-03-17

加了一个模块后,Android Studio 报了

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 10 declared in library [Sunlogin:modulesunlogin:unspecified] D:SunloginmodulesunloginuildintermediatesundlesdefaultAndroidManifest.xml
    Suggestion: use tools:overrideLibrary="cn.angelshelter.app.apicloud.sunlogin" to force usage

参照博客:http://blog.csdn.net/jeek_job/article/details/52301239

但是奇怪的是,我放在manifest子结点下还是报错,只有放到application结点里才不报错。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="cn.angelshelter.app.apicloud.sunlogin">

        <application android:allowBackup="true" android:label="@string/app_name"
            android:supportsRtl="true">

        </application>

</manifest>

 2. 原来想用别人的so文件,还是能改别人在外部写好的类和包名。可能有绑定关系吧。

2018-03-29

新建的模块,如果包名不在根包下,不会加入编译。

2018-06-21

用Android Studio提交代码,死活提交不上,后来我找到那个目录或文件系统位置,然后用小乌龟(TortoiseSVN)提交了代码。

2018-06-22

Android Studio的工程路径中不能出现中文,出现中文项目就不编译。

2018-06-23

工程目录下有一个模块,但是工程又没识别出来,点导入又说模块已存在,解决办法:找到主工程的settings.gradle

文件,然后按格式,把你的模块拼写进去。

工程目录管理:

有时候,工程中明明有这个目录,工程中就是不显示出来,刷新也没用,

你可以手动打开   工程名.iml文件,

找到里面的

<excludeFolder url="file://$MODULE_DIR$/.gradle" />

可能被过滤掉了。

2018-06-27

项目中引入了aar包,但是在外部,识别不了aar包里面的class,于是,我把aar包里面的classes.jar拿出来。单独放到一个模块中,但是编译的时候,提示类重复,

然后我就加了

  provided files('libs/classes.jar') 

因为provided就是提供依赖,但并不编译进去,但是并没有生效,

后来我干脆把

compile fileTree(include: ['*.jar'], dir: 'libs')
都注解了,因为我lib里面就只有一个classes.jar我才这么做的。居然解决了。

2018-08-25
昨天要导入一个Eclips项目进Android Studio里面,软件默认用最新的gradle,下了好久没有成功,

然后我就在build.gradle
里面改了一个低版本的
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        //classpath 'com.android.tools.build:gradle:3.1.3'  以前的
            classpath 'com.android.tools.build:gradle:2.3.0'
    }
}
并且把常用项目根目录下的.gradle和gradle两个目录拷出来,覆盖掉新项目对应的目录,然后就可以进入了。

2018-08-25下午
新建了一个Android Studio工程,在so文件放到了libs下面,但是运行程序的时候,说找不到so文件,后来才知道

模块app目录里的build.gradle要加 sourceSets
android {
    sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
    }
}

2018-09-18

今天在集成qmf-ppplugin-android-3.0.3.aar的时候,一直报错,头晕呀

后来才知道,原来aar里面app使用了

 <application
        android:name="android.support.multidex.MultiDexApplication"

然后我的代码里使用了

<application android:name="com.uzmap.pkg.uzapp.UZApplication"

两个人都去抢application。后来我果断把aar里面的android:name那一行删除了。好了。

2018-09-20

昨天在调试demo工程的时候,一引用aar文件就报错,影响了主工程:app,表现为R文件都找不到。

然后我用排除法,把AndroidManifest.xml里面的东西一点一点移到外面工程的AndroidManifest.xml里,最后定位到了下面

    <application
        android:name="android.support.multidex.MultiDexApplication"
        android:hardwareAccelerated="true"
        android:largeHeap="true"
        android:theme="@android:style/Theme.NoTitleBar" >
最后发现是最后一行影响了,去掉就好了。
还有
一旦你创建了aar的module之后,它会创一个这个名字的目录,真实的aar已经复制到这个目录下了,所以你需要改那个目录里面的aar。
有时候,你aar里面有两种so包,但是外面只有一种so包,也会报错。
2020-09-19
新版的Android Studio4默认没有开启c debug模式。
需要手动修改:
Run -> Edit Configuration

 app -> Debugger -> Debug type -> 选中 Dual (Java + Native) 修改后保存

我试一了一下,好像并没有生效,试了好久,没成功。后来灵光一闪,退出Android Studio 4 , 重新进,就ok了。





原文地址:https://www.cnblogs.com/angelshelter/p/6851530.html