[Android]MQTT如何設置雙向認證與APP實作

MQTT的安裝和Publisher/Subscriber運作方式,我相信已經有雙向認證需求的應該都已經很清楚了。這我就不多做贅述,只講配置和Android程式實作的部分。

所謂的雙向認證就是Clinet端會需要驗證Server的憑證,而Server需要驗證Client是否是使用他允許的憑證。這時就需要建立三張憑證來達到這個效果。CA憑證,Server端憑證和Client憑證。Mosquitto會配置CA憑證和Server端憑證,而Publisher/Subscriber會配置Client憑證,如下圖。

[Android]透過am start並加入參數啟動特定app

由於需要反覆啟動某隻app做一些事情後再關閉,如果用程式來啟動寫法如下,但這樣就會是建構在自己寫的app之上
[java]
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://www.xxxx.com/watch/81721411”));
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.setPackage(“com.xxxx.yyyy”);
startActivity(intent);
[/java]

[Android]確保APP或Service不被Kill (LowMemoryKiller) 的方法

在講方法前,先來說說一下它的原理,如果沒興趣是也可以直接拉到最下面看作法

Android中的程序是託管的,當系統記憶體資源不足時會發出java.lang.OutOfMemoryError時(即OOM),此時會依照優先順序自動進行程序的回收。 而回收的標準則是透過oom_adj、oom_score、oom_score_adj的值來決定

  • oom_score: kernel根據oom_score_adj值,結合該處理程序使用的記憶體量算出的值,後面無論是oom killer還是lmkd都是根據這個值來決定殺哪些處理程序的。
  • oom_score_adj: 取值為-1000—1000,如果賦值為-1000將關閉oom killer對他的管理(如init、surfaceflinger等native 處理程序)。它和oom_adj都是kernel留給使用者空間更改處理程序被殺優先順序的介面

Android將程序分為不同等級,它們依優先順序由高到低依序是:

執行CTS一直遇到 AAPT_PARSER_FAILED

運行CTS會發現有些測項會出現類似以下的error message:

Early failure resulting in no testRunStart. Results might be inconsistent:
com.android.tradefed.targetprep.TargetSetupError[AAPT_PARSER_FAILED|520050|DEPENDENCY_ISSUE]: AaptParser failed for file CtsContentTestCases.apk. The APK won’t be installed [XXXX AA]

代表你的aapt2版本太舊,需要到官網下載最新版本取代
https://maven.google.com/web/index.html#com.android.tools.build:aapt2