LeakCanary Eclipse

欢迎访问我的技术博客Bigflower  http://www.flowerfat.com


本文主旨:如何将LeakCanary 加入到Eclipse工程中,并成功使用它。搞了一天终于成功了。真是笨。
言归正传,具体什么是LeakCanary我就不多说了。在CSDN中搜它就能看到别人写的介绍   http://blog.csdn.net/ahence/article/details/46008681
因为是小白,github不是很会用,上面的zip下载下来不会导入到工程中,后来在刚刚的链接里的第一篇***小记中找到了别人弄好的Eclipse工程,真心感谢。于是下载之,import到我们的eclipse中。然后新建我们的demo,很简单:

第一步,添加lib:添加后可能会出现v4包重复的问题,这里只需要替换一下就可以了。在报错的地方告诉了你v4包的路径,我是把LeakCanary的v4包替换成了测试demo的v4包,有不明白的可以看这个连接:http://blog.csdn.net/jackrex/article/details/8984033  (我是替换的 不是删除)

第二步,这里面要注意了。我们要配置测试demo的Manifest,如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hehe"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
    
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:name="com.example.hehe.myApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <service
            android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
            android:enabled="false"
            android:process=":leakcanary" />
        <service
            android:name="com.squareup.leakcanary.DisplayLeakService"
            android:enabled="false" />
        <activity android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"/>
        
        
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.hehe.TestActivity" />
    </application>

</manifest>
其中 , 除了下面的两个测试demo中的activity。 上面的一个权限,两个service和一个activity都是要自己从LeakCanary工程copy过来的。很重要。

至于测试demo吧,其实这个也是从github上看到的,我就不多说了。下面是两个prj的下载链接 http://download.csdn.net/detail/liudehuaii18/8756841

有一点我不明白的。我下载别人的demo.apk,安装后有两个应用,有一个专门是用来看内存泄漏结果的,不过我的方法最后导出来虽然可以弹出警告通知,不过没有另外生成另一个app。这里也希望朋友们能给予帮助。

更新日志:2015-06-02 找到上面问题的原因了!其实Manifest里应该这么写:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hehe"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:name="com.example.hehe.myApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <service
            android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
            android:enabled="false"
            android:process=":leakcanary" />
        <service
            android:name="com.squareup.leakcanary.DisplayLeakService"
            android:enabled="false" />

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.hehe.TestActivity" />

        <activity
            android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"
            android:enabled="false"
            android:icon="@drawable/__leak_canary_icon"
            android:label="@string/__leak_canary_display_activity_label"
            android:taskAffinity="com.squareup.leakcanary"
            android:theme="@style/__LeakCanary.Base" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

注意把DisplayLeakActivity这个复制到工程里的时候放到我们工程的主activity的下面哈。 其他的位置无所谓。

有啥问题朋友们在评论里指出哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值