發現:Android 4.2 新增 UserManager.isUserAGoat() 方法,文檔稱「判斷用戶是否為山羊(以確定是否傳送)」。
public boolean isUserAGoat() {
return false; // 一直返回 false
}
return getUserManager().isUserAGoat(); 委託給系統服務,但底層實現仍返回 false。if (UserManager.isUserAGoat()) {
// 這裡的代碼永遠不會執行
// 但編譯器不會優化掉(不像 if(false))
// 適合放置調試斷點、測試桩、實驗性功能入口
enableExperimentalFeatures();
}
優於 if (BuildConfig.DEBUG):不受構建類型影響,可在 Release 包中保留且不執行。
ActivityManager.isUserAMonkey():返回是否由 Monkey 測試工具啟動(真實功能)。BuildConfig.FLAVOR 相關彩蛋。認清 isUserAGoat() 本質,用好「永假條件」調試技巧,享受 Android 開發團隊的幽默感。