zoukankan      html  css  js  c++  java
  • 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了。





  • 相关阅读:
    第三章 Jenkins参数及web项目
    第二章 Jenkins的详细介绍
    第一章 Git+Gitlab介绍和安装
    第二章 Centos7下Airflow2.1.0安装
    第一章 Airflow基本原理
    第五章 Pinpoint-Apm常见报错
    第四章 Docker方式安装 Pinpoint
    数论练习
    CF练习
    矩阵乘法
  • 原文地址:https://www.cnblogs.com/angelshelter/p/6851530.html
Copyright © 2011-2022 走看看