1. 程式人生 > >Android開發中遇到的錯誤及解決方法(1)

Android開發中遇到的錯誤及解決方法(1)

(1)Android APK安裝後不在桌面生成快捷方式圖示 

大家知道在Android系統的手機安裝APK應用後會在桌面上生成此APK的快捷方式,使用者通過直接點選可以進入此應用程式。但作為開發人員,我們有時候並不希望在安裝APK完成後生成快捷方式,而是通過先進入某個應用程式,然後在此應用程式中進入另一個應用程式,那麼該怎麼在安裝完APK後不生成桌面快捷方式呢?

開啟AndroidMainfest.xml檔案:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.ok"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <application

        android:allowBackup

="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.example.ok.MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

              <

action android:name="android.intent.action.MAIN" />

              <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

</manifest>

在這裡只要將activity中的“<category android:name="android.intent.category.LAUNCHER" />”去掉便可防止在安裝完APK後生成桌面快捷方式。 

(2)

01-01 21:39:06.344: E/AndroidRuntime(2387): Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to cn.com.shine.hospital.television.TVRootApp

 <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:name=".TVRootApp"

         >

出現這個的錯誤原因就是在manifest.xml檔案中沒有加

  android:name=".TVRootApp"

這句話

一定要把name寫正確,如果寫錯誤,可能會出現

逆推之,如果出現上述錯誤,可以檢視是否是manifest.xmlname寫錯


(3)

Android模擬器中push檔案時出現Failed to push xx on emulator-5554: Read-only file system錯誤

這說明該資料夾無讀寫許可權,那麼就得對該資料夾進行mount

命令為:

mount -o remount,rw /system

即可


android開發當中,在為應用程式佈局時,用到了:

android:textSize="24px"

這時發現編譯器警告:

Avoid using "px" as units; use "dp" instead

google讓我們避免使用px單位了,這是因為px單位大小始終是固定的,而dp單位的大小卻可以隨著螢幕的大小而改變,所以使用dp可以使應用程式適應任何尺寸的螢幕而不改變UI比例的大小。

androidxml佈局當中,經常會看到dipdppxsp等單位,知道它們的作用才可以更加精確的佈局UI

dip:英文device independent pixels(裝置獨立畫素)。所有的裝置都有一個統一的dip大小(480*320),就是說,androiddip就是把螢幕的高分成了480dip,寬分成了320dip,每個dip在高中表示螢幕的1/480,在寬中表示螢幕的1/320。這樣做的好處顯而易見,我們可以使應用UI在不同大小的螢幕上都能正常的顯示。

dp:完全等同於dip

pxpixels,就是絕對畫素。大小固定,不會隨著螢幕不同而改變。

spscaled pixels,放大畫素,主要用於字型顯示,也是為了字型顯示可以適應不同大小尺寸的螢幕。


Android下面使用命令列截圖。

因為工作除錯用的機器,沒法連線USB,所以用不了一般的截圖方法,後來查了一下,Android4.0以後都內建了截圖命令。

可以使用下面命令擷取螢幕。

screencap /mnt/card/test.png

這是我在linux shell下執行的命令


執行完就可以把當前螢幕圖片儲存到SD卡里面(具體路徑根據你實際開發機器來看)

除了screencap,還有screenshot,不過試驗後,發現截圖都是空白的,網上查資料是可以用來截圖。


也可能是我這邊機器環境問題。