簡體   English   中英

以編程方式在我的 Android 應用程序中獲取庫的版本

[英]Get the version of a library in my Android app programmatically

我的 Android 應用程序中有一個庫,例如 UnityAds。 我想在運行時獲取它的版本名稱和版本代碼。 我寫了下面的代碼,但總是發生異常。 以編程方式獲取此信息的最佳做法是什么?

實施 'com.unity3d.ads:unity-ads:3.7.1'

try {
    Log.d("Version", getPackageManager().getPackageInfo("com.unity3d.ads", 0).versionName);
} catch (PackageManager.NameNotFoundException e) {
    Log.e("error", e.getMessage());
}

這行不通,PackageManager API 可幫助您檢查使用 package 名稱查找安裝的任何有效包/應用程序。

由於該庫位於您自己的 package 的 class 路徑中,因此在運行時引用這些 id 的唯一方法是有一個工作流在編譯期間記錄這些並在運行時將其公開給您的應用程序。

以下方法是可行的:

  1. 在構建配置/資源中公開庫元數據( https://developer.android.com/studio/build/gradle-tips#simplify-app-development

  2. 自定義 gradle 插件將類路徑中的所有庫捕獲到可以在運行時讀取的資產中,類似於https://github.com/google/play-services-plugins

使用 (1) 您無法方便地將其擴展到多個庫,因此它僅對非常特定的需求有用。

(2) 可能需要對您的用例進行一些自定義(添加版本信息),但絕對是可擴展的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM