Android Studio 小新兵
Posted angelshelter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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包,也会报错。
2020-09-19
新版的Android Studio4默认没有开启c debug模式。
需要手动修改:
Run -> Edit Configuration
app -> Debugger -> Debug type -> 选中 Dual (Java + Native) 修改后保存
我试一了一下,好像并没有生效,试了好久,没成功。后来灵光一闪,退出Android Studio 4 , 重新进,就ok了。
以上是关于Android Studio 小新兵的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段
错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段