小米應(yīng)用商店之應(yīng)用開發(fā)常見問題

來源: 小米開放平臺
作者:小米開放平臺
時間:2020-09-04
18376
本文介紹了最佳實踐與兼容性建議以及應(yīng)用開發(fā)常見問題,您可通過了解本內(nèi)容后,自行解決問題。

N2U5MDgxYS5qcGVn.jpg

本文介紹了最佳實踐與兼容性建議以及應(yīng)用開發(fā)常見問題,您可通過了解本內(nèi)容后,自行解決問題。

一、最佳實踐與兼容性建議

MIUI是基于Android深度定制的操作系統(tǒng),和Android保持100%兼容,我們準(zhǔn)備了一些在Android開發(fā)過程中你可能遇到的問題,也許對您有所幫助。

如果在基于MIUI進行開發(fā)、測試的過程中遇到問題,我們會竭盡所能協(xié)助開發(fā)者解決。在和開發(fā)者溝通的過程中,我們發(fā)現(xiàn),很多應(yīng)用遇到的問題,并非因MIUI導(dǎo)致,而是對Android本身。

1、盡量用Android標(biāo)準(zhǔn)的接口,最好不要很“聰明”的讀取較為底層的數(shù)據(jù)

每個手機的底層都有可能有自己獨特的實現(xiàn),這種特殊性,其實是對開發(fā)者屏蔽的,開發(fā)者直接利用,有時會得不到期望的效果。

比如之前我們發(fā)現(xiàn)一款app,會直接讀取底層frame buffer,然后以錄像的方式顯示當(dāng)前屏幕,但是由于我們frame buffer的特殊性,結(jié)果它讀出來的就是兩三段斷開的屏幕。

再比如,有些游戲會直接從底層的讀取motion event,然后自己再根據(jù)這些事件做些相應(yīng)操作,但這些事件未經(jīng)過android處理,結(jié)果就有可能有問題。

2、要和Android版本保持一致

Android隨著版本的升級,會有些向后兼容性不好。常見現(xiàn)象是,本來在較低版本上正常運行的app,在較高版本上運行失敗。

一個常見的問題是權(quán)限相關(guān),比如WRITE_APN_SETTINGS這個權(quán)限是在某個版本上加進去的,若app不申請此權(quán)限,在之前Android版本可正常運行,但是一旦Android升級,app就會因為缺乏權(quán)限而FC。

3、NDK版本

有些app可能是用NDK開發(fā)的,對于這樣的app,一定要在對應(yīng)的NDK版本下編譯測試,否則極有可能出現(xiàn)莫名其妙的問題。

比如,我們之前和某播放器應(yīng)用聯(lián)調(diào)過一個問題:該播放器在MIUI上播放一段時間后,立即卡死,當(dāng)時我們調(diào)試了好久,懷疑SurfaceFlinger,懷疑播放器本身,等等,各種調(diào)試,無果。

最終,還是發(fā)現(xiàn)是由于該播放器編譯時,NDK版本不對。

4、一定要釋放資源

一些資源,比如WakeLock,WifiLock,F(xiàn)ile descriptor,Cursor等一定要釋放,這些資源甚至?xí)绊懙饺帧1热鏦akeLock和WifiLock會影響屏幕和Wifi的休眠,從而導(dǎo)致耗電。

而Cursor,尤其是一些較為常用的Provider獲得的Cursor,長期不關(guān)閉,有可能會導(dǎo)致該Provider無法工作。

5、耗電操作

1)、慎用某些對耗電敏感的操作,比如Alarm,比如頻繁掃描Wifi,一定要考慮這些操作的極端最壞情況。比如,之前我們手機上某NetworkProvider導(dǎo)致手機空置狀態(tài)下,比以前成倍的耗電。原因就是,Alarm不斷喚醒手機,每次喚醒又不斷的掃描Wifi。

2)、對于有后臺Service的,確保該service只在必要情況下運行,而不會一直運行,可以用strace查看下app的活動狀態(tài)

6、在MIUI上出現(xiàn)問題后,排查的手段

首先看原生系統(tǒng)上有無問題找對應(yīng)的Nexus 4或者Galaxy Nexus等,看看是否有相同問題,若有,基本確定是app自身問題,否則有可能和MIUI有關(guān)。

MIUI對權(quán)限控制較為嚴(yán)格:若出現(xiàn)問題,可先看看授權(quán)管理,打開相應(yīng)權(quán)限。

若確定為MIUI問題,可以和我們聯(lián)系,我們會竭盡全力幫助您解決問題之前我們曾協(xié)助啪啪、暴風(fēng)影音、唱吧以及其它個人開發(fā)者或者終端用戶調(diào)研過遇到的問題,均得到較好的解決方法。

二、常用問題

1、為什么在Manifest聲明了android.permission.INTERNET還是無法訪問網(wǎng)絡(luò)?

A:安全中心-網(wǎng)絡(luò)助手里為用戶提供了網(wǎng)絡(luò)控制功能,如果把A應(yīng)用的移動網(wǎng)絡(luò)權(quán)限或者WIFI網(wǎng)絡(luò)權(quán)限禁用了,那么在調(diào)用網(wǎng)絡(luò)請求的時候會拋出異常:java.net.ConnectException:socket failed:EACCES(Permission denied)

2、為什么無法訪問環(huán)回地址(127.0.0.1)?

A:安全中心-網(wǎng)絡(luò)助手里為用戶提供了網(wǎng)絡(luò)控制功能,如果把A應(yīng)用的移動網(wǎng)絡(luò)權(quán)限禁用,則該應(yīng)用訪問環(huán)回地址失敗。

3、為什么我的應(yīng)用在開啟騷擾攔截之后收不到驗證短信?

A:騷擾攔截有智能引擎的判斷,在開啟智能攔截后我們會識別某些帶有騷擾短信特征的短信。如果您認(rèn)為您的短信被誤判,可以聯(lián)系我們。

4、為什么我的應(yīng)用發(fā)起的回?fù)茈娫挄粩r截?

A:回?fù)茈娫捰袃煞N:一種是空號碼,騷擾攔截有空號碼攔截,在用戶手動設(shè)置之后會攔截空號碼。一種是正常號碼,騷擾攔截有標(biāo)記攔截的功能,在開啟標(biāo)記攔截且該號碼被多次標(biāo)記拉黑則會被攔截。

5、為什么我的應(yīng)用申請使用su命令會失???

A:

1)、MIUI的穩(wěn)定版沒有root權(quán)限。

2)、開發(fā)版有root權(quán)限,但是受手機端App安全中心控制。如果您需要您的應(yīng)用開啟某項權(quán)限,可以引導(dǎo)用戶跳轉(zhuǎn)應(yīng)用權(quán)限管理頁面由用戶手動開啟。

Intent intent=new Intent();intent.setAction("miui.intent.action.ROOT_MANAGER");intent.addCategory(Intent.CATEGORY_DEFAULT);

3)、一些應(yīng)用在獲取root權(quán)限后,會修改系統(tǒng)的su等文件,導(dǎo)致其他應(yīng)用的root不可用。

6、為什么我在Manifest聲明了權(quán)限,依然不能控制Wifi,Gps,顯示懸浮窗等?

A:安全中心會控制權(quán)限的使用,如果需要開放某個權(quán)限,可以在安全中心-授權(quán)管理-應(yīng)用權(quán)限管理內(nèi)修改。我們會根據(jù)應(yīng)用的主要功能開放權(quán)限。

7、為什么WindowManager.addView TYPE_TOAST不能顯示自定義Toast

A:MIUI取消了對TYPE_TOAST的支持,只能使用zhiandroid.widget.Toast.setView來實現(xiàn)自定義Toast。用其他方式使用TYPE_TOAST,會報告permission denied for this window type錯誤,后果取決于應(yīng)用實現(xiàn),或者閃退,或者內(nèi)容無法顯示。

8、鏈?zhǔn)絾涌刂?/strong>

A:從MIUI7.3中就添加了“鏈?zhǔn)絾印惫δ?,所以A應(yīng)用啟動B應(yīng)用也會受到一定的限制當(dāng)應(yīng)用試圖啟動另外一個應(yīng)用時,根據(jù)鏈?zhǔn)絾右?guī)則,可能有部分調(diào)用會受限制,應(yīng)用應(yīng)該處理啟動失敗的情形。如果不處理,依賴于應(yīng)用實現(xiàn),或者閃退,或者無法正常工作。如果日志中出現(xiàn):miui.security.WakePathChecker:MIUILOG-WAKEPATH:xxx call was rejected by wakepath就代表應(yīng)用啟動被鏈?zhǔn)絾涌刂凭芙^了。

9、為什么不能在鎖屏顯示Activity

A:MIUI引入了鎖屏顯示窗口權(quán)限控制,默認(rèn)不能在鎖屏上顯示Activity(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD),需要用戶主動授予鎖屏上顯示權(quán)限.如果功能需要,可以編碼提示用戶去授權(quán)管理設(shè)置。

10、如何獲取某項權(quán)限是否開啟?

A:暫時沒有這個查詢接口,如果您需要您的應(yīng)用開啟某項權(quán)限,可以引導(dǎo)用戶跳轉(zhuǎn)應(yīng)用權(quán)限管理頁面由用戶手動開啟。

11、為什么我的Alarm不太精確?

A:Google和MIUI都啟用了對齊喚醒功能,會把一小段時間內(nèi)的Alarm對齊到某個Alarm的時間點一起執(zhí)行,達到省電的目的。

12、我的應(yīng)用為什么不能自啟動?

A:在MIUI上應(yīng)用的自啟動由用戶進行控制,默認(rèn)不開放自啟動權(quán)限,其中自啟動包含開機自啟動和接收系統(tǒng)廣播等方式啟動,但是由A應(yīng)用啟動B應(yīng)用則不受限制。如果您需要您的應(yīng)用自啟動,可以引導(dǎo)用戶跳轉(zhuǎn)自啟動管理頁面由用戶手動開啟。

13、我的應(yīng)用在小米應(yīng)用商店審核失敗怎么辦?

A:關(guān)于應(yīng)用審核問題、認(rèn)領(lǐng)問題、開發(fā)者郵箱認(rèn)證問題,以及其它關(guān)于小米應(yīng)用商店的運營問題(除開發(fā)中遇到的問題),請聯(lián)系小米應(yīng)用商店開發(fā)者支持郵箱:developer@xiaomi.com。

14、添加了MIUI提供的沉浸式代碼后發(fā)現(xiàn)軟件盤是否彈出的狀態(tài)獲取不到以及android:windowSoftInputMode="adjustResize"的設(shè)置無作用,該怎么解決?

A:這個問題是android原生的問題,我們的MIUISDK已經(jīng)解決。如果使用MIUISDK則不會出現(xiàn)此問題。如果是在原生系統(tǒng)上開發(fā),可以通過如下參考辦法繞過adjustResize無效,參考辦法:輸入法原來沉浸的方法繼續(xù)加上,然后在布局view上面設(shè)置setFitSystemWindow屬性為true,這樣resize屬性會生效。但是view的頂部會預(yù)留出來狀態(tài)欄的高度。再重寫界面根view(應(yīng)用xml布局的頂層view)的fitSystemWindow函數(shù),將頂部的padding去掉。有點繞,但是效果出來是對的。

15、據(jù)說雙卡雙待的功能不是安卓原生的功能,現(xiàn)在我需要調(diào)用系統(tǒng)撥打電話但沒有辦法控制使用那個卡來撥打,我該怎么解決?

A:原生android在5.1之前本身是沒有雙卡方案,所以5.1之前的所有雙卡方案都是隨著平臺的不同而不同的。建議就按正常的單卡呼叫方案進行,理論上會給用戶提示選擇用哪個卡進行呼叫。而在原生android5.1及以后,android原生支持了雙卡,這個將是業(yè)界標(biāo)準(zhǔn)接口,按google方案即可。

16、在SSL協(xié)議握手過程中出現(xiàn)的exception,該怎么解決?

A:可以通過如下方法排查:模擬器里網(wǎng)絡(luò)設(shè)置的是否正常,是否能上其他https的網(wǎng)站。換個時間點試試,有可能是服務(wù)器端的問題更新下/system/lib/libssl.so文件

17、如何解決app在淺色背景的主題通知欄看不清通知的問題?如何解決默認(rèn)系統(tǒng)通知欄處部分app字體顏色顯示不明顯問題?

A:在MIUI系統(tǒng)中,通知欄的每一條通知的字體顏色(包括標(biāo)題、主次要文字、時間等)均使用原生Android規(guī)范,并未系統(tǒng)定義,故,建議各app參照原生Android規(guī)范來寫字體,保證當(dāng)主題修改原生Android字體顏色時,各app的通知顏色可隨之調(diào)整。如下內(nèi)容請轉(zhuǎn)達給相應(yīng)開發(fā)處理。要想文字跟隨主題變化,TextView需要用android原生的style比如標(biāo)題的Textview可以加上android:textAppearance=" android:style/TextAppearance.StatusBar.EventContent.Title"

以上為應(yīng)用開發(fā)常用問題內(nèi)容。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于小米開放平臺,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
雙十一秘籍 | 11月米盟增收指南助你搶占電商大戰(zhàn)先機
雙十一秘籍 | 11月米盟增收指南助你搶占電商大戰(zhàn)先機
雙十一即將來臨,電商預(yù)算爭奪戰(zhàn)已經(jīng)打響!
小米開發(fā)者
小米應(yīng)用商店
2024-10-182024-10-18
小米應(yīng)用商店關(guān)于《APP備案標(biāo)準(zhǔn)變更》的公告
小米應(yīng)用商店關(guān)于《APP備案標(biāo)準(zhǔn)變更》的公告
為了保護用戶權(quán)益,提升用戶體驗,根據(jù)《工業(yè)和信息化部關(guān)于開展移動互聯(lián)網(wǎng)應(yīng)用程序備案工作的通知》,小米應(yīng)用商店新增了APP備案包名與主辦單位的要求,以下是詳細(xì)內(nèi)容。
小米開發(fā)者
小米應(yīng)用商店
2024-10-132024-10-13
App各大應(yīng)用商城的排名被哪些因素影響著?(小米/vivo篇)
App各大應(yīng)用商城的排名被哪些因素影響著?(小米/vivo篇)
小米應(yīng)用商店允許在后臺設(shè)置關(guān)鍵詞,8個關(guān)鍵詞,每個詞不超過5個字,權(quán)重從左到右逐漸降低。
App
小米應(yīng)用商店
應(yīng)用商店
2024-10-022024-10-02
米盟10月廣告增長提效指南【附新功能預(yù)告】
米盟10月廣告增長提效指南【附新功能預(yù)告】
國慶長假即將拉開序幕,7天長假將帶來一波流量的高峰。小米廣告聯(lián)盟(以下簡稱:米盟)為開發(fā)者伙伴帶來了10月廣告增長提效指南,內(nèi)含eCPM趨勢和預(yù)算分布預(yù)估、變現(xiàn)提效Tips、新功能爆料,助力開發(fā)者伙伴在小長假期間高效地把握預(yù)算節(jié)奏、提前精準(zhǔn)布局,實現(xiàn)量效雙贏!
小米開發(fā)者
小米應(yīng)用商店
應(yīng)用商店
2024-10-012024-10-01
優(yōu)質(zhì)服務(wù)商推薦
更多
個人VIP