Ответ 1
adb root
ничего не решает, существует множество проблем в зависимости от среды. Вот как я работал над эмулятором, где трачу много времени на разработку.
Сначала нам нужно решить ошибку only position independent executables (PIE) are supported
с помощью двоичного файла.
получить источник андроида конечного плагина:
git clone https://android.googlesource.com/platform/tools/adt/idea
cd idea/android/ultimate/get_modification_time/jni
Примените следующий патч:
diff --git a/android/ultimate/get_modification_time/jni/Application.mk b/android/ultimate/get_modification_time/jni/Application.mk
index a252a72..bdf815d 100644
--- a/android/ultimate/get_modification_time/jni/Application.mk
+++ b/android/ultimate/get_modification_time/jni/Application.mk
@@ -1 +1,2 @@
APP_ABI := all
+APP_PLATFORM := android-16
Вам нужно настроить последнюю версию NDK для сборки, у меня уже установлен ndk-r10d.
# ndk-r10d
ndk-build
cd ..
cp -R libs native_tools
# update the intellij plugin with whatever arch you plan to use
# adjust the path here to where your copy of IntelliJ is located
zip -u ~/local/apps/idea/plugins/android/lib/android-ultimate.jar native_tools/*/get_modification_time
Обратите внимание, что вам нужно обновить путь в этой последней строке, чтобы указать на локальную установку IntelliJ. Например, в MacOS это будет:
zip -u /Applications/IntelliJ\ IDEA\ 14.app/Contents/plugins/android/lib/android-ultimate.jar native_tools/*/get_modification_time
Перезапустите IntelliJ.
Затем мы заменим /system/bin/run-as
на эмулятор. Создайте следующий script локально и назовите его run-as
.
#! /system/bin/sh
INTELLIJ_NATIVE="/data/local/tmp/intellij_native_tools/get_modification_time"
if [ "$2" = "$INTELLIJ_NATIVE" ]; then
cd /data/local/tmp/intellij_native_tools
./get_modification_time "$3"
else
/system/bin/run-as.org "[email protected]"
fi
Запустите эмулятор. После его загрузки обновите его.
# update run-as after start
adb shell mount -o remount,rw /system
adb shell mv /system/bin/run-as /system/bin/run-as.org
adb push ./run-as /system/bin/run-as
Теперь вы можете синхронизировать свое сердце.
Обратите внимание, что вы также можете отслеживать прогресс в восходящем потоке ошибок, который только что получил приоритет после публикации этого сообщения: https://youtrack.jetbrains.com/issue/IDEA-137606