2017-01-20 5 views
9

Я пользуюсь [email protected] и part of the setup включает указание applicationIdSuffix.React Native приложение не запускается при использовании applicationIdSuffix

Я установил это в предыдущем приложении в прошлом без проблем (React Native 0.37). Я дважды сталкивался с этой ошибкой с этим проектом (React Native 0.40). В первый раз я перестроил весь свой проект, и он ушел. Это начало происходить снова без видимых причин, поэтому я клонировал последнюю стабильную версию моего проекта в новом каталоге и получил ту же ошибку.

Ошибка возникает при использовании react-native run-android. Ошибка происходит после успешной сборки:

Starting: Intent { cmp=com.packagename/.MainActivity } 
Error type 3 
Error: Activity class {com.packagename/com.packagename.MainActivity} does not exist. 

ошибка уходит, если удалить applicationIdSuffix ".debug" из app/build.gradle и приложения начинается на моем телефоне без проблем.

Мой телефон Nexus 6P с Android 7.0. Я только пробовал на физическом устройстве, так как у меня нет симуляторов.

Я тройной проверил все против моего другого проекта, и я не думаю, что это проблема конфигурации.

+0

Он должен работать после того, как вручную запускать приложение на телефоне. Случается и со мной. – Andreyco

+1

Его знакомый с реакционной командой, я верю: https://github.com/facebook/react-native/pull/8950 – vonGohren

ответ

6

По ссылке выше, это обсуждается в течение длительного времени (более года) на github, и, кажется, есть несколько патчей на своем пути, поэтому мое исправление ниже может работать или не работать в зависимости от версии react-native вы используете.

Вот как я (временно) решил проблему. Проблема заключается в том, что react-native-cli пытается вызвать adb shell am start с неправильным аргументом:

com.packagename/com.packagename.MainActivity 

, когда он должен называть что-то вроде

com.packagename.debug/com.packagename.MainActivity 

Так, пока ваша версия react-native не будет устранена, вы можете использовать эту команду (как это рекомендовано в this code-push PR:

cd android && ./gradlew installDebug && adb -s <DEVICE_ID> shell am start -n com.packageName.debug/com.packageName.MainActivity 

Это не идеальный исправить, но есть патч на github что делает по существу одно и то же (по отношению к нескольким вопросам и запросам на тяну here & here).

1

Я тоже не нашел реального решения. Прямо сейчас я использую обходной путь, где я не использую run-native run -..., но напрямую использую AndroidStudio.

Я нашел подсказку http://sex-gril.com/project/45838.html, в которой говорится, что вы должны добавить имя пакета в свой defaultConfig в build.gradle.

android { 
    ... 
    defaultConfig { 
     ... 
     resValue "string", "build_config_package", "Your App ID LIke in Manifest" 
    } 
} 

Но это не сработало для меня = /.

4

это работало для меня на реагируют родной 0.50.3

react-native run-android --appIdSuffix "debug"