文章目錄
- 01.Android Studio “Cannot resolve symbol” 解決辦法
- 02 java.lang.RuntimeException Unable to instantiate activity ComponentInfo異常解決
- 03 播放音頻程式出錯
- 04 Android Studio 出現 call requires api level 11 (current min is 2)解決方法
- 05 Android Studio建立jniLibs檔案夾添加jar包
- 06 INSTALL_FAILED_NO_MATCHING_ABIS 解決方案
- 07 Android Studio打包時候報錯 app lintVitalRelease
- 08 啟動AVD時,Waiting for target device to come online
- 09 android.support.v7.app.actionbaractivity 報錯
- 10 android 配置報錯 Program type already present android.support.v4.app
- 11 移動項目後,Gradle sync failed: java.lang.NullPointerException
本文是作者在使用Android Studio遇到的一些問題,現在總結出大緻的解決方案,希望能對讀者有所幫助。若作者在Android的使用上遇到了新的問題,本文仍将繼續更新。
01.Android Studio “Cannot resolve symbol” 解決辦法
解決方法一
在方法之前加上如下代碼以導入相關包
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
解決方法二
重新開機Android Studio
02 java.lang.RuntimeException Unable to instantiate activity ComponentInfo異常解決
不能執行個體化activity有如下三種情況:
- 沒有在Manifest.xml 清單中注冊該activity,或者在建立完activity後,修改了包名或者activity的類名,而配置清單中沒有修改,造成不能執行個體化。
- 自己建立了一個包,而注冊時候依然用的預設包,例如,預設包是com.ghg.Dao包,你建立了一個com.ghg.DaoImpl包,并在此包中寫了個FirstActivity,在manifest.xml中注 冊時你寫的是,此時相當于你在的類注冊到了預設包中,系統在預設包中是找不到的,因為你的FirstActivity在com.ghg.DaoImpl包 下,是以你注冊時應寫成包名加類名,如:<activity android:name=“com.ghg.DaoImpl.FirstActivity”;這樣系統才能在指定的包中找到對應的類。
- 還用一種就是你的FirstActivity定義成了抽象類,這種情況好像一般人不會犯。
如果上述三種情況都考慮到了,還會抛出此異常,那麼就檢視一下activity類裡是否同時存在這個類的構造函數和oncreate(),如果是,那麼删除構造函數試試,并把初始化放到oncreate()中試試。
03 播放音頻程式出錯
問題詳情
練習《第一行代碼》中的程式,播放音頻小節(8.4.1),在手機上運作後音頻無法播放。手機在根目錄放了音頻檔案“music.mp3”,在SD卡根目錄上也放了該檔案,在手機根目錄建立“sdcard”檔案夾下也放了該檔案。
運作後,一點選播放按鈕會出現下方錯誤
05-02 15:20:35.197 31272-31272/com.example.android.mediaplayer E/MediaPlayer: start called in state 1
05-02 15:20:35.197 31272-31272/com.example.android.mediaplayer E/MediaPlayer: error (-38, 0)
05-02 15:20:35.199 31272-31272/com.example.android.mediaplayer E/MediaPlayer: Error (-38,0)
再點播放按鈕,每次隻列印一行錯誤,如下
05-02 15:20:37.738 31272-31272/com.example.android.mediaplayer E/MediaPlayer: start called in state 0
解決方法一
添加SD卡通路權限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
解決方法二
問題很可能是因為對應的路徑沒有“music.mp3”檔案。
建議在initMediaPlayer()方法中try語句的中的File file = new File(Environment.getExternalStorageDirectory(),“music.mp3”);的後面加上上一條Log語句: Log.i(“音樂檔案路徑”, file.getPath());,看輸出的路徑是什麼。
解決方法三
Error (-38,0)和Error (-19,0)一般是硬體裝置不支援所緻,在播放音樂時可以采用異步緩存,看你在寫代碼時直接加載到緩存,可以嘗試建立一個模拟器,ram配置設定700m多一點。
04 Android Studio 出現 call requires api level 11 (current min is 2)解決方法
打開圖檔中被選中的配置檔案“build.gradle”
然後将
defaultConfig {
applicationId “name.bagi.levente.pedometer”
minSdkVersion 2
targetSdkVersion 2
}
改為
defaultConfig {
applicationId “name.bagi.levente.pedometer”
minSdkVersion 11
targetSdkVersion 2
}
點選右上角Sync No
05 Android Studio建立jniLibs檔案夾添加jar包
eclipse中項目自帶libs檔案夾,用來放需要的jar包之類的,可是在AndroidStudio中建立項目并沒有這個檔案夾,是以需要建立,名字統一為jniLibs。
1.Android建立項目預設為:
2.找到這個頁面:
3.加入一段代碼:(注意和buildTypes那一個大括号并列,在android大括号之内)
sourceSets{
main{
jniLibs.srcDirs=['libs']
}
}
4.儲存後會在上方出現提示:
5.點選後在項目中就出現jniLibs檔案夾了。
6.将需要的bar包放入該檔案夾,如果要引用,找到jar包(前邊有小三角的是已引用的,沒有小三角的可以引用)右鍵,選擇Add As Library…,就引用好了。
06 INSTALL_FAILED_NO_MATCHING_ABIS 解決方案
在網上看到出現這個異常的原因是使用的了 Native lib 或者 JNI 之類的反正就是跟硬體有關的亂七八糟的包.
例如使用了 一個圖檔壓縮的包, 涉及到了 JNI, 之後打包就出現了上述的異常.
解決方案:
在 app 的 moudle 的 build.gradle 檔案中, 粘貼一下代碼, 注意是添加在 android {} 大括号中.
// 解決 native libraries 不支援cpu的體系結構。允許模拟器調試
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a','x86_64'
universalApk true
}
這樣就可以直接跑模拟器了. 但這樣做後在打包時會産生多個 apk, 是以釋出版本時把上面的代碼注釋掉後 rebuild 一下工程再打包. 切記一定要 rebuild 工程!
07 Android Studio打包時候報錯 app lintVitalRelease
apply plugin: 'com.android.application'
android {
//添加這段代碼
lintOptions {
checkReleaseBuilds false
abortOnError false
}
compileSdkVersion 26
defaultConfig {
applicationId "com.example.administrator.test"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support:gridlayout-v7:26.1.0'
implementation files('libs/nineoldandroids-2.4.0.jar')
}
在配置檔案“build.gradle”中添加注釋代碼
08 啟動AVD時,Waiting for target device to come online
ctrl+alt+s,調出SDK Manager,選擇SDK tools,檢視SDK Tools
主要原因是Build-Tools或者SDK Platform-Tools或SDK Tools 有更新,造成版本不一緻。下載下傳并安裝新版,保證版本一緻就可以了。
09 android.support.v7.app.actionbaractivity 報錯
actionBarActivity已經由AppCompatActivity取代了
把
import android.support.v7.app.ActionBarActivity;
; 改成
import android.support.v7.app.AppCompatActivity;
用這個AppCompatActivity類就行了
10 android 配置報錯 Program type already present android.support.v4.app
錯誤:Program type already present: android.support.v4.app.BackStackRecord$Op
錯誤:Program type already present: android.support.v4.app.ActionBarDrawerToggle$Delegate
兩個錯誤的大緻意思就是 前邊已經存在了v4包的類檔案,說實話,沒太了解它真正的意義,不過已經猜出大概錯誤,是跟v4包有關。
看了一些博友的部落格,發現我在配置
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
implementation 'com.google.code.gson:gson:2.3.1'
implementation project(':library-pulltorefresh')
implementation 'com.mcxiaoke.volley:library:1.0.16'
implementation project(':library-sidedrawer')
implementation project(':library-circleimageview')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'
implementation project(':library-slidingmenu')
implementation 'com.baoyz.swipemenulistview:library:1.3.0'
implementation 'org.greenrobot:eventbus:3.0.0'
}
的時候 少了一個v4的導入(不加這個導入的話 ) 下面這行會報紅線,但是不影響程式運作
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'
加上這句話之後,以上問題迎刃而解。
11 移動項目後,Gradle sync failed: java.lang.NullPointerException
超級大坑!!!在網上搜尋了一系列的解決方法,最終解決方法如下: