2016-10-03 35 views
0

我試圖重建Android的代理自定義密鑰庫(允許有自己的SSL證書,SSL)和任選的其他自定義設置。當構建如在documentation(產品-EMM 2.0.1)中描述的項目,Android的工作室(Android的工作室2.2,Androind 5.1.1,API 22)權利要求中的以下方法不明:WSO2EMM重建移動代理失敗

  • org.wso2 .emm.agent.api.RuntimeInfo - Environment.getLegacyExternalStorageDirectory(線159)
  • org.wso2.emm.agent.services.AlarmReceiver - intent.getExtra(線56)
  • org.wso2.emm.agent.services .NetworkConnectedReceiver - context.startServiceAsUser(line 42)
  • org.wso2.emm.agent.utils.CommonUtils - context.startServiceAsUser(line 432,445)

我需要不同的API級別(根據文檔應該是OK),差異工具什麼的?根據this post,「startServiceAsUser」不是公開的方法..

編輯:現在我看到項目重建應該是product-mdm(???)我假設MDM平臺是(應該是)的一部分EMM,但是 - 代碼庫略有不同。看來這個問題涉及產品EMM 2.2.0-SNAPSHOT

回答

1

EMM 2.0.1是相當陳舊(IMO至少半年的),有許多更改/ bug修復從那時起,這你可能想擁有。

如果您對EMM的Android劑源代碼做任何貢獻,那麼你一定需要編譯抵禦最新的EMM(2.2.0的時刻)。

我也遇到了編譯EMM 2.2安卓代理的相同錯誤 - 這是因爲他們使用隱藏的系統API,而這些API在常規的Android SDK中不可用,可以通過Reflection API訪問此API(WSO2維護者應該這樣)從ASDK「擴展」android.jar,包括隱藏的API。這些jar文件可以從設備上的系統jar文件中提取出來(你需要一個帶有適當Android API版本的固定設備),或者從正在構建Android ROM的AOSP構建中提取這些jar文件,並且系統應用程序是針對帶有隱藏API的系統jar構建的。

有關此事的更多信息,請參閱How do I build the Android SDK with hidden and internal APIs available?

顯然,WSO2維護人員使用這樣的「擴展」系統庫編譯android代理。

編輯:事實上WSO2維護人員使用隱藏的API針對ASDK進行編譯,這是一個概念性的觀點,因爲代理可以部署到具有隱藏API的COPE設備。在這裏看到更多的信息:https://wso2.org/jira/browse/EMM-141

我個人的偏好是更新的android.jar以隱藏API ASDK,可以在這裏下載:library that provides access to Android hidden API and internal resources

+0

謝謝你的全面的答案。那麼 - 的確,我遇到的問題是帶有隱藏API的android.jar。當前版本可以檢測到固定設備,但是 - 仿真器也被識別爲固定設備:P – gusto2

0

顯然,我已經使用了不正確的項目源(2.2.0-SNAPSHOT)。使用官方版本提供的源代碼(2.0.1)時。構建成功。