通过AndroidManifest中的meta-data标签来设置log开关

来源:互联网 发布:ubuntu 解压缩 编辑:程序博客网 时间:2024/05/16 07:18

通过AndroidManifest中的meta-data标签来设置log开关

一般来说,我们在APP项目中可以通过BuildConfig.DEBUG来控制Log的开关,这样在调试的版本有log,release版本没有log。如果我们在sdk(或lib)中需要调试代码怎么办?我们可以通过在AndroidManifest.xml中定义一个标签,通过获取标签来控制log打开和关闭。

代码如下:

sdk(或lib)中代码:

LogManager类

public class LogManager {    private static boolean logSwitch = false;    //在APP的初始化的时候调用    public static void init(Context c) {        c = c.getApplicationContext();        try {            PackageManager packageManager = c.getPackageManager();            ApplicationInfo applicationInfo = packageManager.getApplicationInfo(c.getPackageName(), PackageManager.GET_META_DATA);            Bundle metaData = applicationInfo.metaData;            LogManager.logSwitch = metaData.getBoolean("log_switch");        } catch (Exception e) {            e.printStackTrace();        }    }    public static void e(String tag, String message) {        if (logSwitch) {            Log.e(tag, message);        }    }}

APP的代码:

App类:

public class App extends Application {    @Override    public void onCreate() {        super.onCreate();        LogManager.init(getApplicationContext());    }}

MainActivity类

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        LogManager.e("zhang", "测试OK");    }}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.yundoku.demo201708">    <application        android:name=".App"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <!--lib中的log开关控制,关闭log可以将value的值设为false或者删除该标签信息-->        <meta-data android:name="log_switch" android:value="true"/>    </application></manifest>
阅读全文
0 0