2011年7月10日

Android "剖析程式時發生問題" 的原因

最近自己在寫 Android 的程式,結果我發現原本在 emulator 上面可以跑的 APK,丟到我的 HTC Desire HD 會有以下問題:

  1. 將 APK 放到 SD 卡上面,用程式瀏覽器安裝時,出現「剖析程式時發生問題」的錯誤訊息
  2. 改用 adb install 則會出現 Failure [INSTALL_FAILED_OLDER_SDK]
  3. 用 Eclipse 直接 online run 程式,則變成 ERROR: Application requires API version 11. Device API version is 10 (Android 2.3.3).

研究許久,才發現當初一開始玩的時候想要直接用 Honeycomb (Android 3.0,API level = 11),後來把 APK 丟到 Gingerbread (Android 2.3,API level = 10) 的手機才會發生這個現象。

原先 Google 有在 AndroidManifest.xml 中定義最小支援的作業系統版本  -- android:minSdkVersion,故需要將下面這個欄位的值從 11 改成 10 就可以了。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mytest"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="11" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MytestActivity"
                  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>

11 則留言:

Unknown 提到...

感謝。

sunflier 提到...

不客氣~

潘少鈞1086406 提到...

不好意思
請問你是用哪個程式改數字的呢?
用一般文本編輯器開AndroidManifest.xml都會亂碼
那是用電腦改還是在手機中改呢?
謝謝

sunflier 提到...

這個是要在 build APK 之前就要改了,不知道你是不是在拿到 APK 以後才去打開來改的呢?

匿名 提到...

是非自寫的apk
請問這樣可以改嗎?

sunflier 提到...

我認為應該不行... 因為當初寫 APK 的人應該可能只想要供某個特定的 Android 版本設計的,後來再改可能也會出問題

匿名 提到...

嗯好
謝謝你的消息^^

匿名 提到...

關於這個問題
我找了很多網站
最後問了其他人也解決不了
所以真的很感謝你!
辛苦你了^^

sunflier 提到...

小事一樁 ^^

匿名 提到...

??

匿名 提到...

45656