android - studio教學 - google play上架規範




Android無法安裝我的應用程序,從Eclipse移植到Android Studio,在我的測試手機上,一個Pixel XL (3)

幾年來,我一直在為一個朋友的公司維護一個應用程序。 當他們最近從Android 5更新到Android 7時,該應用程序停止工作。 所以我移植到Android Studio,並開始修復東西。 現在,在壓縮了一堆錯誤之後,我無法將應用程序安裝到我的測試手機上,這是一台運行Android 8的Pixel XL。它正在運行調試圖像,直到我卸載它,以便測試安裝。 (我認為那是因為即時運行。)

現在我得到以下內容:

$ adb install-multiple -r -t I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_0.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_1.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_7.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_4.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_5.apk I:\Users\...\app\build\intermediates\split-apk\debug\dep\dependencies.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_6.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_3.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_8.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_2.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_9.apk I:\Users\...\app\build\outputs\apk\debug\app-debug.apk 
Split APKs installed

$ adb shell am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
    Error while executing: am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
    Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.pbs.deliverytrack1/.MainActivity }
    Error type 3
    Error: Activity class {com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity} does not exist.

    Error while Launching activity

com.pbs.deliverytrack1 / com.pbs.deliverytrack1.MainActivity的外觀是否正確?

附加說明:我能夠通過運行Nougat 7.0的三星邊緣7.0上的電子郵件安裝apk。 我仍然無法將其安裝到運行Oreo 8.0的Google Pixel XL上。

我已經嘗試了我能想到的所有版本的組合。 關鍵,我想是在錯誤信息:

$ adb shell am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Error while executing: am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.pbs.deliverytrack1/.MainActivity }
Error type 3
Error: Activity class {com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity} does not exist.

在說的部分:cmp = com.pbs.deliverytrack1 / .MainActivity,應該是com.pbs.deliverytrack1 / com.pbs.deliverytrack1.MainActivity?

更新在解決了minSDK,maxSDK和targetSDK以及三個不同版本的Android:7.0,7.1.1和8.0之後,我發現了一種繼續工作的方法。 我的客戶端使用7.0和7.1.1,所以我建立了一個運行7.0的模擬器,我一直用它來調試我的應用程序。 (其實是我妻子的建議)所以我再往前走。

在處理奇怪的問題時,我也會做我通常做的事情。 我將通過-XLint來解決所有的警告。 (當你不能修復你想要的bug時,寶貝,修復你所得到的bug。)除了清理一些長期懸而未決的問題之外,我希望最終能夠壓扁這個bug。

感謝大家的幫助和建議。 我會留下這個開放一點,看看有人想出了奇蹟。 我寧願獎勵賞金,也不願意讓它進入鬥牛場。 :)

所以,我再次虛心求助。 謝謝,雷


像評論中提到的CommonsWare,它看起來像你的應用程序正在安裝,它只是無法啟動。 我可以想到兩件事情來檢查:

  1. 確保您的AndroidManifest.xml文件列出了MainActivity的正確完全限定的類名。 如果這是不正確的,那麼你的應用程序將安裝,但它會在啟動時崩潰,並抱怨無法找到您的MainActivity
  2. 如果您正在使用ProGuard,請檢查以確保您的規則已設置,以便ProGuard不會從APK中剝離MainActivity類。 許多開發人員只是ProGuard他們的非調試版本,你提到你的調試版本工作正常,所以這可能是一個提示。
  3. 編輯:我可以再想一個。 如果您要更改debug buildType ,那麼您需要在adb am start命令中指定相同的ID。

如果什麼都行不通,可以嘗試在Android Studio中創建一個新的項目,並在創建第一個活動時將所有的內容複製到您的Java和XML佈局文件中(例如相同的包名稱,與Android設備的兼容性)來自舊項目。 創建另一個活動(例如,如果您的Eclipse項目中有DrawerActivity ,則在Android Studio中創建另一個DrawerActivity,這樣可能會有效。

我不確定這是否可行,但這更容易的選擇。 首先,複製舊項目的Resources文件夾中的所有內容,將所有Java文件複製到新項目中,並且由於需要定義Activities ,請將您的AndroidManifest.xml複製到新的應用程序中。

希望這可以幫助!


現在Android有很多變化,Android Android-8Android-7.1Android-7

因此,如果您使用的是後台服務,則需要添加額外的Job scheduling for Android 7,7.1,8

牛軋糖行為改變

奧利奧行為改變

更新Android SDK構建工具27.0.1

您可以更改模塊應用程序Gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.example.package"
        minSdkVersion 16
        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 {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

支持模擬器

更新Sdk Android-7,7.1,8。 用於創建本地模擬器文件菜單 - >設置 - >外觀與行為 - >系統設置 - > Android的Sdk





installation