android问题总结报告,Android开发中常见的问题总结
1.在cmd命令行中輸入android list target出現android不是內部或外部命令
新建一個環境變量ANDROID_HOME=你的sdk所在目錄
然后在path中加入%ANDROID_HOME%\tools
2.移除程式
我們已經順利地啟動了虛擬機器,那麼,該怎麼移除安裝到虛擬機器上的程式哩?
Android SDK中提供一個adb (Android Debugger)命令行工具(在android-sdk/tools中),我們可以用裡面的shell工具連上虛擬機器來移除應用程式。在某些平臺上,這些動作可能需要擁有root權限才能執行。
首先打開命令列,啟動adb shell
$ adb shell
接著切換到data/app目錄中
$ cd data/app/
使用ls命令(等同windows上命令行的dir命令)來檢視檔案列表
# ls
com.example.android.apis.apk
接著使用rm命令來刪除ApiDemos應用程式
# rm com.example.android.apis.apk
# ls
我們可以使用「android list avd」命令來列出所有的虛擬機器
$ android list avd
Available Android Virtual Devices:
Name: eclair
Path: /Users/mac/.android/avd/cupcake.avd
Target: Android 2.0 (API level 5)
Skin: HVGA
表示現在系統中有一個名為eclair的虛擬機器。我們可以使用「android delete avd --name eclair」命令來刪除名稱為「eclair」的虛擬機器。
$ android delete avd --name eclair
AVD 'eclair' deleted.
刪除後再次執行「android list avd」命令,得到的結果為
$ android list avd
Available Android Virtual Devices:
表示系統中已經不存在任何模擬器,我們真的已經將虛擬機器刪除了。
3.出現“Project has no target set. Edit the project properties to set one.”的錯誤
Eclipse導入步驟:1. File.../Import.../General/Existing Projects into Workspace
2.點Browse按鈕,選擇要導入的項目所在目錄,點Finish
3.如果出現“Project has no target set. Edit the project properties to set one.”的錯誤,則需要在該項目的屬性里選中Project Build Target的Android版本4.文件夾中會自動追加一個gen的小目錄,里面是自動生成的R.java文件,如果導入的文件中已有R.java,則會報錯,此時只要將原來的R.java文件刪掉即可。如果有提示關于AndroidManifest.xml的錯誤,請選中此項目,并右鍵選擇Android Tools->Fix Project,將會自動幫你修復錯誤。
4. Could not find *.apk
1)選擇工程的Properties->Java Build Path->Libraries,去掉默認的Android包;
2)點擊左側的Android標簽,在右邊的Project Build Target中選擇Android 2.0;
3)右鍵單擊工程,選擇Android Tools->Fix Project Properties.
有時候也可能是jdk版本的問題,改了jdk版本后,重啟下eclipse
5、emulator: ERROR: the user data image is used by another emulator. Aborting
沒有正常關閉導致的,刪除android-sdk-windows\.android\avd\對于版本\下的以.lock結尾的文件夾就行
6. qemu: could not open disk image E:\Android\sdcard.img
待解決
7. music player時需要在sdcard中加入文件
今天試用一下android的music player.運行music player,點擊songs,顯示如圖:
原來,默認android沒有加載sdcard,為了播放歌曲我們需要讓android模擬張sdcard,具體操作如下:
D:\Tools\Android\android-sdk-windows-1.5_r1\tools>mksdcard.exe -l sdcard 256M E:
\study\android\sdcard.img
啟動android時,需要指定sdcard,操作如下:
D:\Tools\Android\android-sdk-windows-1.5_r1\tools>emulator.exe -avd myroid -sdca
rd e:\study\android\sdcard.img
接下來,還需要在卡里放幾首歌曲。需要使用到另一個工具ddms.bat,如下圖:
點擊Device—>FileExplorer,可以看到android系統的所有目錄及文件,包括新創建的sdcard:
選中sdcard,點擊toolbar上的push file onto Device,選擇你要上傳的音樂:
文件傳好,就可以看到sdcard上顯示的音樂了:
這時重新啟動android,再運行music player點擊songs,就可以看到sdcard里放入的音樂了:
選擇歌曲就開始播放了:
回到桌面,可以看到music player的widget顯示正在播放的歌曲:
怎么樣,android還是挺有趣的吧,不過這里暫且報告幾個使用過程中的android的bug(也許不是bug,只是我
還不會玩,:))
1.使用ddms的file explorer傳輸中文名稱的文件不行,控制臺顯示如下錯誤:
55:41 E/ddms: transfer error: Invalid argument
Failed to push水木年華-啟程.wma on emulator-5554: Invalid argument
2.使用file explorer上傳文件到sdcard上,需要重啟android,music player才能看到sdcard上的媒體文件。
3.android的music player對mp3的id3 tag信息中文還是有亂碼,如下圖:
今天就到這里吧,下回要學習一下怎么開發個android的widget了。
8.程序啟動處錯誤the application。。。source not find
解決:F11調試 ,F6單步調試(加上斷點),可以發現 “source not find”的錯誤,
看了一下 問題出在了Acitvity這里 到 文檔里面 包:android.app.Activity里面看了下
如下:我標上了黃色的底紋的地方,問題就出在這里了,我雖然新建了一個活動但是我沒有把這個活動注冊到AndroidManifest.xml.這個文件里面。
下面是關于Activity的簡單的介紹,很容易看懂,大概就是 ,活動是什么,子類可以實現、方法,還介紹了一下生命周期等。
9.Failed to push Angels.mp3 on emulator-5554: Read-only file system
打開cmd運行如下命令
mksdcard -l sdcard 256M E:\Android\test\sdcard.img
emulator -avd tm -sdcard E:\Android\test\sdcard.img
再打開cdm運行
adb push F:\MP3\EnglishSong\Angels.mp3 sdcard
(如果是用MediaStore獲取歌曲列表,添加完后,進入模擬器,進入Dev Tools,里面有個Media Scanner.運行一下。ok現在進入應用就能看到歌曲列表了)
后查看sdcard如下圖:
10.Console
[2010-03-26 10:18:34 - TestMediaPlayer]Installation failed due to invalid APK file!
[2010-03-26 10:18:34 - TestMediaPlayer]Please check logcat output for more details.
[2010-03-26 10:18:34 - TestMediaPlayer]Launch canceled!
LogCat
03-26 02:18:33.950: DEBUG/asset(59):failed to open Zip archive '/data/app/vmdl10030.tmp'
03-26 02:18:33.959: WARN/PackageParser(59): Unable to read AndroidManifest.xml of /data/app/vmdl10030.tmp
03-26 02:18:33.959: WARN/PackageParser(59):java.io.FileNotFoundException: AndroidManifest.xml
03-26 02:18:33.959: WARN/PackageParser(59):at android.content.res.AssetManager.openXmlAssetNative(Native Method)
03-26 02:18:33.959: WARN/PackageParser(59):at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:469)
03-26 02:18:33.959: WARN/PackageParser(59):at android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:437)
03-26 02:18:33.959: WARN/PackageParser(59):at android.content.pm.PackageParser.parsePackageName(PackageParser.java:560)
03-26 02:18:33.959: WARN/PackageParser(59):at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:4237)
03-26 02:18:33.959: WARN/PackageParser(59):at com.android.server.PackageManagerService.access$1600(PackageManagerService.java:109)
03-26 02:18:33.959: WARN/PackageParser(59):at com.android.server.PackageManagerService$5.run(PackageManagerService.java:3768)
03-26 02:18:33.959: WARN/PackageParser(59):at android.os.Handler.handleCallback(Handler.java:587)
03-26 02:18:33.959: WARN/PackageParser(59):at android.os.Handler.dispatchMessage(Handler.java:92)
03-26 02:18:33.959: WARN/PackageParser(59):at android.os.Looper.loop(Looper.java:123)
03-26 02:18:33.959: WARN/PackageParser(59):at android.os.HandlerThread.run(HandlerThread.java:60)
03-26 02:18:33.959: ERROR/PackageManager(59):Couldn't find a package name in : /data/app/vmdl10030.tmp
根據以上提示找不到AndroidManifest.xml文件,將R.Java刪除,重新運行就可以了
11. java.net.SocketException: Permission denied (maybe missing INTERNET permission)
這是一個經典錯誤,Socket不能對外連接,錯誤不會被報出,調試的時候,能看到Exception,這個Exception會有很多變體,所以不一一舉例,只要存在網絡互聯,該東東挺身而出,讓你的程序不得運行。
原因是:需要訪問到網絡,所以,在AndroidManifest.xml中,需要進行如下配置:
or
" android:name="android.permission.INTERNET">
12. 如何避免打開鍵盤或橫豎屏切換,active重啟?
在androidmanifest.xml中的activity標簽加入這個屬性android:configChanges=”orientation|keyboardHidden”
然后重載onConfigurationChanged(Configuration newConfig)這個方法
public
void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
}
13. 如何處理界面的延遲動畫
用Thread.sleep()是不行的,要用android.os.Handler,例如:
class RefreshHandler extends Handler {
public void handleMessage(Message msg) {
Main.this.updateUI();
}
public void sleep(long
delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
總結
以上是生活随笔為你收集整理的android问题总结报告,Android开发中常见的问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国载人航天工程公开征集航天育种,让优良
- 下一篇: “腰缠万贯”!男子腰缠239个CPU入境