簡體   English   中英

如何為根Android編譯純本機可執行文件

[英]How to compile a pure native executable for rooted Android

我正在開發扎根的Android 2.3。 在我的應用程序中,使用jni機制,我調用了一個需要root權限才能運行的本機(c / c ++)函數,這就是為什么它總是會失敗的原因(即使我的電話是root的-因為特定的進程/應用程序需要授予root權限) 。

我想將該功能移動到將通過從Java運行的命令“ sudo exec_name”在Linux上運行的外部可執行文件( Runtime.getRuntime().exec("sudo ...") ;)

所以

1)如何編譯本機可執行文件? (不是通常的[.so]庫)

2)在擁有獨立的可執行文件之后,我必須將其放置在系統中的哪個位置並具有什么權限?

要編譯本機可執行文件,請使用include $(BUILD_EXECUTABLE)而不是include $(BUILD_SHARED_LIBRARY) NDK有一個名為test-libstdc++的示例,該示例顯示了如何構建最簡單的本機可執行文件。

然后,您需要將其放在/data/local類的可執行位置,並調用chmod 777使其可執行。 之后,您可以通過外殼運行它。

我想將該功能移動到將通過從Java(Runtime.getRuntime()。exec(“ sudo ...”);)運行的命令“ sudo exec_name”在Linux上運行的外部可執行文件。

在這種情況下,您的工作流程將如下所示:

  • 您將代碼編譯為本機可執行文件,並將其放入應用程序資產中
  • 開始時,您需要將yoru可執行文件從資產復制到/system/bin
  • 允許使用chmod 777運行它
  • 實際運行您的可執行文件

前三點應該只做一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM