Android Studio 小新兵

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

網上是說要升級Gradle版本。android

遇到這個問題,我是想建立一個API 10 (Android2.3.3) 開發環境。api

後來改爲功了。先建立一個Minimun SKD爲API 10: Android 2.3.3的工程。app

而後打開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/releaseside

下載後放到某一個目錄,而後解壓。svn

而後回到Android Studio:  File -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle佈局

默認選中了當前項目  Project-level settings  先第二項 Use local gradle distribution 選目錄指向剛纔下載解壓的目錄上,而後右下角的 "Apply"  ->   "OK"   而後從新編譯,從新運行就ok了。gradle

2. 建立安卓模擬器。ui

建立模擬器的時候,要下載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包,也會報錯。
相關文章
相關標籤/搜索