Не удается правильно установить APK на устройстве

Я создал и подписал свой apk с помощью Eclipse ADT, как это описано (экспорт и подпись путем создания нового ключа). Но его нельзя установить на реальное устройство, пока возникают ошибки, такие как «ошибка пакета установщика». У меня нет устройства Android, и я отправил apk друзьям по электронной почте. Я использую AVD, и с ним все в порядке. Какие-либо предложения? Спасибо, ребята.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.XXXX.YYYY"
android:versionCode="0"
android:versionName="0.9.2" android:installLocation="internalOnly">

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="17" />    
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" 
    android:hardwareAccelerated="true" 
    android:permission="android.permission.INTERNET" 
    android:allowBackup="true">
    <activity
        android:name="com.XXXX.YYYY.ActivityMain"
        android:label="@string/main_activity_title" 
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.XXXX.YYYY.ActivityDetails"
        android:parentActivityName="com.XXXX.YYYY.ActivityMain"
        android:excludeFromRecents="true"
        android:configChanges="orientation|screenSize">            
    </activity>
</application></manifest>

UPD: apk устанавливается хорошо, но при выборе Open возникает ошибка (см. скриншот). После этого приложение работает нормально. Но на планшете при попытке открыть приложение пишет "Приложение удалено". введите здесь описание изображения

UPD2: добавьте поддержку API 4+ метатег для второго действия, но он не действует

<meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.XXXX.YYYY.ActivityMain" />

person Konstantin Konopko    schedule 13.09.2013    source источник
comment
Просто проверьте имя вашего пакета...   -  person Piyush    schedule 13.09.2013
comment
Вы можете получить логарифм ошибки? Это должно показать, что происходит с менеджером пакетов, что приводит к его сбою.   -  person Jon    schedule 15.09.2013
comment
@Jon, к сожалению, мои друзья не могут получить журнал, они не такие компьютерные пользователи). Слушай, а что, если я опубликую приложение здесь, и тогда ты сможешь его протестировать?   -  person Konstantin Konopko    schedule 16.09.2013


Ответы (4)


Вероятно, вам нужно убедиться, что ваше устройство и устройства вашего друга могут устанавливать приложения, которые не из магазина игр.

Это функция, которую вы должны специально установить, иначе приложения, которые находятся за пределами игрового магазина, не будут установлены.

Вот как это сделать:

  1. Открыть настройки
  2. Найдите настройки безопасности (до 4.0 они находятся в разделе «Приложения»).
  3. Найдите параметр с надписью «Неизвестные источники или нерыночные приложения».
  4. Включить этот параметр

После этого все должно работать!

Вот статья с картинками, если вы все еще запутались :)

person Bmoore    schedule 13.09.2013
comment
Хотя это может быть проблемой, это не приведет к такому сбою. - person Chris Stratton; 13.09.2013

В вашем примере отсутствовали закрывающие </manifest> и android:enabled. Я не уверен, что последний помешает полной установке устройства, но первый помешает.

У меня также были проблемы с использованием полных имен действий в прошлом, поэтому вы можете попробовать упростить их, чтобы увидеть, поможет ли это.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.XXXX.YYYY"
    android:versionCode="0"
    android:versionName="0.9.2" android:installLocation="internalOnly">

    <uses-sdk
        android:minSdkVersion="13"
        android:targetSdkVersion="17" />    

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:hardwareAccelerated="true" 
        android:allowBackup="true">

        <activity
            android:name=".ActivityMain"
            android:label="@string/main_activity_title"
            android:enabled="true" 
            android:permission="android.permission.INTERNET"
            android:launchMode="singleTop" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".ActivityDetails"
            android:parentActivityName=".ActivityMain"
            android:excludeFromRecents="true"
            android:configChanges="orientation|screenSize">            
        </activity>
    </application>
</manifest>
person Jon    schedule 13.09.2013
comment
Они не должны быть, но могут быть. - person Geobits; 13.09.2013
comment
@Geobits После двойной проверки похоже, что сайт разработчиков Android согласен с вами. Это странно, поскольку их использование в прошлом доставляло мне проблемы. - person Jon; 13.09.2013
comment
@Jon, спасибо за ответ, но </manifest> я просто забыл скопировать этот тег) в любом случае кажется, что добавление android:enabled="true" не дает никакого эффекта - person Konstantin Konopko; 13.09.2013

Разрешена ли на устройстве опция «Неизвестные источники» в разделе «Безопасность»?

person Devrim    schedule 13.09.2013
comment
Я не знаю. Как я могу сделать свой ключ подписи известным источником? - person Konstantin Konopko; 13.09.2013
comment
Хотя это может быть проблемой, это не приведет к такому сбою. Konopko - это не ваш ключ, это известный источник, это способ доставки приложения, т.е. из магазина Google Play. - person Chris Stratton; 13.09.2013

Моя проблема заключалась в дублировании запроса на доступ в Интернет в манифесте! Когда я удаляю это из активности, приложение запускается нормально.

person Konstantin Konopko    schedule 19.10.2013