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就出来了

我这边是在目录WifiProxy\app\build\intermediates\transforms\proguard\release\jars\3\1f里面,地址好奇怪,我也不知道怎么设置的,反正找到 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)\KF360SDKDemo\app\libs\kfvrlib.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:\Sunlogin\modulesunlogin\build\intermediates\bundles\default\AndroidManifest.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包,也会报错。
Android Studio 小新兵的更多相关文章
- Android Studio 小技巧合集
本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62 ...
- Android Studio 小提示,新建Activity
Android Studio是在google I/O大会上新发布的一个IDE,基于IntelliJ,Android开发除了Eclipse之外又多了一种选择. 在Android Studio中如何在当前 ...
- android studio小技巧
1. 为了防止乱码,请将 android studio 右下角编码设置成 UTF-8 2. Ctri + Q 查看api 3 Ctri + Shift +U 大小写互换 4 Ctrl + Alt + ...
- 【Android Studio 小技巧】一键查看文件方法结构目录File Structure
看源代码的时候,如果可以查看class中的所有方法,可以提高效率.Android Studio 中可以使用快捷键一键显示所有方法的目录. Mac: command + fn + F12 (在mac中的 ...
- Android Studio 小技巧/快捷键 合集
参考: http://jaeger.itscoder.com/android/2016/02/14/android-studio-tips.html 1. 书签(Bookmarks) 描述:这是一个很 ...
- 62个Android Studio小技巧合集
1书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处. 调用:Menu → Navigate → Bookmarks 快捷键: 添加/移除书签 ...
- Android Studio 小技巧(2):AS中Button文字默认大写的问题
问题类型 设置Layout中添加一个Button <Button android:id="@+id/bt_showerror" android:layout_width=&q ...
- Android Studio 小技巧(1):如何导入AAR文件
1. 导入AAR.JAR文件 File- > New -> New Module 这样子AAR文件就导入了,然后在app中的build.gradle中做如下添加 dependencies ...
- Android Studio 小技巧
请参照http://blog.csdn.net/jdsjlzx/article/details/50689047 个人认为较有用: 30
随机推荐
- 提升系统的QPS和吞吐量
简单而言通过增加集群来提升qps和吞吐量 实际上要比这个要复杂 首先我们需要知道系统的瓶颈 我们所知道的系统拓扑架构 对于rest接口而言 系统设施依次是: dns nginx tomcat db/s ...
- Java 中位移运算符 >>,>>>,<<
Java 中的三种位移运算符 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : ...
- 【C++】构造函数语意
构造函数的构造操作 编译器何时会为一个类合成默认构造函数? 答:当编译器需要的时候. 有以下四种情况: 带有默认构造函数的类对象 以下代码为例: class Foo {public: Foo();} ...
- VS2013 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array<int>::operator [](int)”只是在返回类型上不同
1,VS2013 错误 1 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array ...
- hbase备份数据与异地新建
hbase org.apache.hadoop.hbase.mapreduce.Driver export news /tmp/news1 备份news表至hdfs的/tmp目录下面. hadoop ...
- Linux系统一本通(实用篇)
本人最近一直在ubuntu,接下来和大家分享我曾经踩过的坑,和一些非常实用的命令知识- 安装中的磁盘分配 一般来说,在linux系统中都有最少两个挂载点,分别是/ (根目录)及 swap(交换分区), ...
- QT注意事项(持续更新...)
同样要注意new和delete的问题: is not a member of QApplication:这个错误可能是找不到信号或槽函数: 想用到信号槽,必须至少继承QObject类,并在类第一行写上 ...
- 被遗忘的having
清明节后公司网站搞活动主要功能很简单就是实现一个消费送的功能.比如, 当天消费金额满5000 返回10%,5000 及以下 返 7% 的功能.本身这个功能不是很难,但是 这个功能跟上次的一个 新用户 ...
- Java_1简介
1.Java版本 JavaSE 基础标准版 J2ME 小型版 JavaEE 企业版(主要针对Javaweb程序进行开发) 2.Java特点 开源跨平台 跨平台的原因:Java必须先只能装 ...
- tar.gz和.rpm包的区别与使用(转)
一.Linux软件的二进制分发 Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它 ...