【发布时间】:2017-08-02 08:52:13
【问题描述】:
我正在开发一个 android APK,当单击某个按钮时,它将在我的手机中执行自动触摸事件,我正在遵循链接提供的解决方案:
How to simulate touch from background service with sendevent or other way?
我有来自here 的signapk.jar,我还使用提供的公共和私人测试密钥,我输入的命令是:
java -jar ./signapk.jar ./testkey.x509.pem ./testkey.pk8 ./app-debug.apk ./app-signed.apk
它确实像我预期的那样为我生成了一个新的签名 APK:
应用签名.apk
然后我使用以下命令安装并运行 APK:
adb install app-signed.apk
adb shell ps
每当我点击按钮时,什么都没有发生,我做错了什么?
注意
当我输入参数时:
android:sharedUserId="android.uid.system"
进入我的AndroidManifest.xml,发生错误:
失败 [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]
我以前从未这样做过,我以前从未尝试过自签名 APK,请指导我哪里出了问题。提前致谢。
【问题讨论】:
-
嗨,我建议 testkeys: "./testkey.x509.pem ./testkey.pk8" 不会将您的应用程序作为系统签名。
-
另外,“adb shell ps”不参与应用安装,它只显示安卓设备上正在运行的进程。我只用它来检查我的应用程序的进程是否正确运行。
-
我明白了,我现在已经生成了我自己的密钥文件,它只在应用程序中工作,当我在其他应用程序上使用motionevent时,它不会工作并崩溃,root设备是唯一的选择?
-
我不确定,该设备是否应该植根,我想在这种情况下,我会在关于触摸模拟的回答中注意到它。无论如何,它适用于原生 android 闹钟应用程序,并关闭了原生闹钟对话框,因此它不仅在应用程序内部运行良好。但它正在研究 Lollipop 和以前的版本,也许政治已经改变了。您是如何生成密钥文件的?实际上,您应该将系统应用程序视为一个 android 构建链接应用程序,因此您应该使用您的 android 操作系统源密钥文件,它只能在源代码中具有相同文件的 android 上工作。
-
是的,我怀疑 android 策略已经更新,所以你发现的以前的解决方案在当前最新的 android 中不起作用,现在我通过 root 设备解决了它
标签: android shell android-studio android-service adb