Android涉及軟硬件,因此相關的坑很多,以前每次都解決了就算了,現準備將這些錯誤記錄下,以便以後查閱。這裏只列出我自己的情況。
如果看這篇blog的人覺得有哪些地方需要完善,歡迎指正。
我會對每個錯誤標明自己用的配置。
1. Cannot Resolve Symbol R
配置:Window10,AS 3.1.3, buildToolsVersion:28.0.1, compileSdkVersion 28,手機:Nexus6P Android7.1.2(API25)
情況:有兩種:存在R.java和不存在R.java,我目前只遇到不存在R.java。
不存在R.java解決:
(1) 法一:Clean Project -> Rebuild Project
(2) 法二: 重啓AS
(3) 法三: New一個Project,copy原來的
參考:
(1)https://blog.csdn.net/pinklpig/article/details/6566578
(2)https://blog.csdn.net/ccpat/article/details/50738811(手動生成R.java,日後學習下)
2. 透明Activity崩潰
配置:Window10,AS 3.1.3, buildToolsVersion:28.0.1, compileSdkVersion 28,手機:Nexus6P Android7.1.2(API25)
錯誤:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lxiao.workpreapre2/com.example.lxiao.workpreapre2.ActivityTest.activityMain2}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:555)
at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:466)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.example.lxiao.workpreapre2.ActivityTest.activityMain2.onCreate(activityMain2.java:19)
at android.app.Activity.performCreate(Activity.java:6682)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
解決:透明Activity要繼承Activity類
https://blog.csdn.net/zhangwenchaochao/article/details/78654128
3. Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve xxx
配置:Window10,AS 3.1.3, buildToolsVersion:28.0.1, compileSdkVersion 28
解決:
(1)
(2)
(3) fan qiang(親猜最有效)
參考:https://blog.csdn.net/collorye/article/details/79173784
4. Ubuntu下adb devices:???????no permissions 問題
配置:Ubuntu16.04
解決:https://www.cnblogs.com/xiaoxuetu/p/3224386.html
5. No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
配置:Ubuntu16.03,AS3.1.3
解決:https://blog.csdn.net/qq_24118527/article/details/82867864
最後只要在toolchains目錄下執行ln -sf aarch64-linux-android-4.9 mips64el-linux-android即可,見評論2。
6. Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
配置:Window10,AS3.1.3,Build Tools:28.0.1
前提:添加Dexter6.0.1依賴庫(implementation 'com.karumi:dexter:6.0.1')後 build時報錯
原因:AndroidX和Android Support庫共存問題
解決:
(1) 法一:根據提示在<application ...>中添加代碼
android:appComponentFactory=""
tools:replace="android:appComponentFactory"
參考:https://blog.csdn.net/zxwd2015/article/details/86651216
(2) 法二:參考https://www.jianshu.com/p/f7a7a8765294:還沒看
7. Error:Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’.
》com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex。。
配置:Window10,AS3.1.3,Build Tools:28.0.1
前提:添加Dexter6.0.1依賴庫(implementation 'com.karumi:dexter:6.0.1')後 build時報錯
原因:包引用重複
解決:
(1) 法一:在module的build.gradle的defaultConfig添加 "multiDexEnabled true"
參考:https://blog.csdn.net/sparkleyn/article/details/79027796
補充:同時對multiDexEnabled的解釋,粗略看了下這文章https://www.cnblogs.com/wingyip/p/4496028.html
好像不錯,日後再讀。總的說multiDexEnabled就是分Dex,因爲ART之前Dex文件對方法索引用short類型存儲,導
致最大方法數是65536,因此當項目足夠大包含方法數(包括引用的外部Lib裏的所有方法)超過65536,就會報 錯。
(2) 法二:在module的build.gradle的dependencies裏把 implementation 'com.android.support:appcompat-v7:28.0.0' 註釋掉
參考:https://www.it72.com/thread-12286.htm
補充:我用控制變量法,發現是添加了Dexter依賴的問題,但要用該庫,所以註釋了 implementation
'com.android.support:appcompat-v7:28.0.0'。
8. Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> More than one file was found with OS independent path 'META-INF/androidx.legacy_legacy-support-core-utils.version'
配置:Window10,AS3.1.3,Build Tools:28.0.1
前提:按照7中的法一解決問題後,出現該問題。
原因:AndroidX和Android Support庫不能共存
解決:6,7,8三個是連在一起的,我用了6的法一,7的法一,到這裏build沒問題,但Run app就有問題,說明還是沒解決AndroidX和Android Support問題,這兩個概念之後要仔細整理下。
先解決問題,我首先根據網上多數說的方法,在build.gradle(Module:app)中添加如下代碼
packagingOptions {
exclude 'META-INF/androidx.legacy_legacy-support-core-utils.version'
}
但Run app時又出現了相似問題,只是路徑不同而已。那這看來不是正確解決方法。參照https://www.cnblogs.com/machach/p/10243528.html,正確解決方法是回退依賴庫,看了下Dexter6.0.1源碼的build.gradle
確實導入了androidx依賴,那就回退到5.0.0版本,解決問題。
9. 將assets中資源作爲File對象失敗
前提:想將assets中資源作爲File對象進行本地讀取
原因:assets是在apk中的,無法實現
解決:如要讀取assets資源,使用AssetManager
參考:https://www.cnblogs.com/spring87/p/5990156.html
10. Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
前提:使用Material Design的ToolBar
解決:使用自定義style,去掉actionbar
參考:https://www.cnblogs.com/hh9601/p/6404728.html
11. AS突然不顯示Logcat日誌
前提:AS3.1.3,小米9(Android9)
解決:
(1) 重啓