5

我有一個Android AAR庫。我想對我的圖書館的消費者應用程序施加的一個安全策略是,當debuggable爲true或者使用debug buildType.如何在Android庫中檢查可調試性或調試構建類型?

時,它不能使用我的庫我該如何在android中以編程方式檢查此問題?

+0

你可以檢查你的庫的'build.gradle'來檢測它的調試與否,但你將如何檢查消費者的'build.gradle'? – matrix

+0

@KostasDrakonakis這就是問題:) –

+0

@FarhadFaghihi但是什麼原因?重要的一點是你的庫不在調試中。每個人都以調試模式開發應用程序。 –

回答

5

有與反思的解決辦法,以獲得類似這樣的項目(不圖書館)BuildConfig值:

/** 
* Gets a field from the project's BuildConfig. This is useful when, for example, flavors 
* are used at the project level to set custom fields. 
* @param context  Used to find the correct file 
* @param fieldName  The name of the field-to-access 
* @return    The value of the field, or {@code null} if the field is not found. 
*/ 
public static Object getBuildConfigValue(Context context, String fieldName) { 
    try { 
     Class<?> clazz = Class.forName(context.getPackageName() + ".BuildConfig"); 
     Field field = clazz.getField(fieldName); 
     return field.get(null); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

要獲得DEBUG領域,例如,剛剛從圖書館Activity稱之爲:

boolean debug = (Boolean) getBuildConfigValue(this, "DEBUG"); 

我還沒有嘗試過這一點,並不能保證它會一直工作,但你可以繼續前進!

+1

似乎是合法的。我會盡力讓你知道結果。 –

+0

我測試瞭解決方案,它的工作原理。 –

+0

很高興能夠幫助! – matrix