如果我想研究在Android應用程序中如何使用[Mainfest.xml中的請求]的權限以及如何刪除它們,是否有一種簡單的方法可以執行此操作? lint或findbugs是否爲跟蹤項目中使用/濫用的權限提供某種支持?清理未使用的Android權限
回答
我可以從那裏開始,但該列表無法幫助我確定如何在應用程序中查找所有不同權限的使用情況。例如,如果我聲明「WRITE_SETTINGS」權限,那麼它適用於哪個API?如何搜索我的代碼以使用此類權限? – Cliff
您會在每個右上角的標題中注意到「在API級別1中添加」http://developer.android.com/reference/android/Manifest.permission.html#WRITE_SETTINGS – eshbeata
您將很難確定每個類需要一個權限,但是例如在每個需求類中,你會發現一個註釋,這需要ex的權限:http://developer.android.com/reference/android/hardware/Camera.html – eshbeata
你將不得不嘗試逐個刪除它們,並檢查我的應用程序仍然工作正常。這不是由lint以任何方式檢查(它應該是)。
當他們回來(目前是下跌),您可以將您的APK上傳到這個網站(如果這是確定你),讓他們進行靜態分析您所使用的權限:http://www.android-permissions.org/
最好的辦法是瞭解可能實際做了什麼。如果它將要使用相機,那麼你知道你需要相機許可。
或者您可以瞭解您的應用的功能,然後查看權限並查看哪些是額外的。你的應用做了什麼,它使用了哪些電話功能。應該有一些文件的地方應該做什麼,並在那裏有什麼方法
您認爲OP是首先將權限放在那裏的作者,而不是某些錯誤代碼的繼承者。 – tir38
我來自未來,以挽救你的生命。
在這裏(未來),LINT會檢查丟失的權限,您可以在LINT checks上看到。
- 所以,去你
AndroidManifest.xml
並使用Android權限(意思是,不要刪除屬於您的應用程序的權限,如UA_DATA
和C2D_MESSAGE
)去除所有標籤<uses-permission>
。 - 然後運行LINT分析。點擊
Analyze
然後Inspect Code...
- 看下
Android -> Constant and Resource Type Mismatches
- 你應該看到所有缺少的權限。
- 然後您可以右鍵單擊它們並選擇
Apply fix "Add Permission"
。如果您選擇此選項,Android Studio將包含每個錯誤的一個權限。因此,您最終將在Manifest文件中獲得相同權限的多個副本,只需刪除重複項即可。你也可以手動完成。
下面是LINT規則的描述:
ID的ResourceType
說明
這次檢查看已經標註了各種支持註解Android的API調用(例如RequiresPermission或UiThread),並標記任何未按註釋指定的API正確使用的調用。此檢查標記的錯誤示例:
- 將錯誤類型的資源整數(例如R.string)傳遞給期望不同類型的API(例如R.dimen)。
- 忘記調用重寫方法(通過超級)在需要它的
- 調用,需要一個許可,而不必聲明在清單
- 該權限傳遞一個資源顏色參照的方法的方法方法期望一個RGB整數值。
...還有更多。欲瞭解更多信息,請參閱文檔在http://developer.android.com/tools/debugging/annotations.html
我使用的Android 2.1.2工作室。
的確我確信林特會檢查權限。它不在Lint的基本檢查中執行,但可以通過在Lint的設置中包含更多檢查來輕鬆完成。 –
在你的應用清單文件中,你應該有一個標籤「合併清單」在那裏你可以看到你的最終清單和你請求的權限,你可以點擊權限來查看它來自哪裏。 (誰補充它 - 恩「:SDK或什麼樣的代碼它來自)
還有一種簡單的方法,通過增加體現刪除權限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
tools:node="remove" />
還記得在添加工具頂部:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="...">
以下鏈接更多解釋:[link](https://developer.android.com/studio/build/manifest-merge.html#inspect_the_merged_manifest_and_find_conflicts) – beee
- 1. 清單中的Android權限
- 2. 處理未授權用戶的權限
- 3. 使用權限android
- 4. 在manifest.xml文件中使用權限與android權限的權限
- 5. 的Android忽略清單權限
- 6. 清單中未識別權限聲明
- 7. ANDROID未授予權限
- 8. Android c2dm未知權限
- 9. Android - 未授予URI權限
- 10. 如何使用Windows 10的清單設置管理員權限?
- 11. Android Facebook牆貼 - publish_action權限未授權
- 12. Android權限管理器
- 13. android清單文件權限異常
- 14. 如何隱藏Android清單權限
- 15. 的Android GCM發送權限作品,未經使用的許可
- 16. 用戶獲取未包含在清單中的權限請求
- 17. Android M權限模型:詢問外部jar使用的權限
- 18. java.lang.SecurityException:權限被拒絕(缺少INTERNET權限?)即使在Android清單中添加此權限
- 19. 的Android權限
- 20. Android用戶權限
- 21. 如何清理當前oracle用戶的權限
- 22. Drupal 7.清除緩存會禁用我的管理權限
- 23. 如何管理Android中的Facebook權限
- 24. osx - 權限被拒絕(126)使用AppleScript和管理員權限
- 25. Android - 在清單中聲明的權限不起作用
- 26. android應用程序清單中的權限區別
- 27. Android刪除清單文件中的重複用戶權限
- 28. 使用SDK的Android運行時權限
- 29. 在Android中的權限使用
- 30. Android設備管理員權限活動未啓動
不是一個簡單的直接方式,我不認爲。有關此主題的[關於Google網上論壇](https://groups.google.com/forum/#!topic/android-developers/YVT33Vn7qFg)的討論和潛在解決方案,但鏈接的網站似乎已關閉。 –
[安全堆棧交換](http://security.stackexchange.com/questions/41887/static-analysis-of-android-applications-using-androguard)上的當前答案表示apkinspector可以檢測到權限的使用。 – HairyFotr
看到這個SO問題以及http://groups.google.com/tutorials/8257412/remove-extra-unwanted-permissions-from-manifest-android – Adrian