Android編程常見問題及解決(持續更新)

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) 重啓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章