Не удается установить версию отладки и выпуска на том же устройстве
Я сконфигурировал варианты сборки в своем проекте с помощью applicationIdSuffix
, чтобы установить на своем устройстве обе версии отладки и выпуска.
вот мой build.gradle
(соответствующие части):
buildTypes {
debug {
buildConfigField "String", "BASE_URL", '"http://dev.xyz.com"'
applicationIdSuffix ".debug"
}
release {
buildConfigField "String", "BASE_URL", '"http://api.xyz.com"'
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Но когда я пытаюсь установить оба, это терпит неудачу. Я пробовал разные способы:
1. Сгенерировано как отладка, так и релиз apks и перенесены в хранилище телефона. Первый устанавливает, а второй дает ошибку "Приложение не установлено" - дополнительной информации нет. Это то же самое независимо от того, какую версию я устанавливаю в первую очередь.
2. Установленная версия отладки из хранилища, а затем попыталась установить версию выпуска из магазина воспроизведения, но в режиме воспроизведения появляется ошибка:
Невозможно установить код ошибки приложения: -505.
3. Установленная версия выпуска из магазина, а затем попыталась запустить проект из студии android, и это мой журнал "run":
Launching app
$ adb push D:\myPROJECTS\MyApp\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.example.myapp.debug
$ adb shell pm install -r "/data/local/tmp/com.example.myapp.debug"
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String android.os.SystemProperties.native_get(java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Ljava_lang_String_2)
at android.os.SystemProperties.native_get(Native Method)
at android.os.SystemProperties.get(SystemProperties.java:52)
at android.os.Environment$UserEnvironment.<init>(Environment.java:123)
at android.os.Environment.initForCurrentUser(Environment.java:98)
at android.os.Environment.<clinit>(Environment.java:92)
at android.os.Environment.getLegacyExternalStorageDirectory(Environment.java:597)
at android.os.Debug.<clinit>(Debug.java:103)
at android.ddm.DdmHandleHello.handleHELO(DdmHandleHello.java:164)
at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:91)
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
java.lang.UnsatisfiedLinkError: android.os.Debug
at android.ddm.DdmHandleHello.handleFEAT(DdmHandleHello.java:176)
at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:93)
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
java.lang.UnsatisfiedLinkError: android.os.Debug
at android.ddm.DdmHandleProfiling.handleMPRQ(DdmHandleProfiling.java:187)
at android.ddm.DdmHandleProfiling.handleChunk(DdmHandleProfiling.java:88)
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
Aborted
$ adb shell am start -n "com.example.myapp.debug/com.example.myapp.LoginActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Error while executing: am start -n "com.example.myapp.debug/com.example.myapp.LoginActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myapp.debug/com.example.myapp.LoginActivity }
Error type 3
Error: Activity class {com.example.myapp.debug/com.example.myapp.LoginActivity} does not exist.
Error while Launching activity
любая идея, что происходит?
Обновить: не знаю, помогает ли это, но вот как я объявил свою активность запуска в androidmanifest.xml
:
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Ответы
Ответ 1
Хорошо, я понял, что происходит.
Я действительно создавал unsigned apk для варианта debug (Build > Build APK). Но мне пришлось использовать ( Сборкa > Сгенерировать подписанный APK), а затем выбрать вариант отладки из параметров.
![введите описание изображения здесь]()
Кроме того, при запуске проекта на моем устройстве gradle будет генерировать unsigned apk. Так что это тоже не сработало. То есть - если я не настроил SigningConfigs
, как описано в этом ответе.
Ответ 2
Вместо использования типов сборки, почему бы не использовать продукт Flavors вместо этого? Здесь ссылка на документация о том, как это сделать, а также то, что вы в настоящее время пытаетесь сделать. Надеюсь, это поможет.