Android Library 工程创建和使用

  • Post author:
  • Post category:其他



将公共组件或常用工具类创建一个Library工程供多个项目共享使用,这是我们在开发久了所总结出来的经验,当然网上也有很多开源项目也是类似的模式和用法。


本文着重介绍如何创建Android library,并且在工程中使用此library提供的资源,具体步骤如下:




1.创建

Android library工程





110131_blMF_98452.png

a.应用名成

b.项目名称

c.包名:由于编译后,Library和引用它的project是合并在一起的,为了区分明显、使用方便,建议这里包名进行修改

d.最小SDK指向

e.目标sdk指向

这里的设置会在AndroidManifest.xml里进行配置

113538_kGza_98452.png

f.编译sdk指向

这里的设置会在project.properties里进行配置

114720_0WCc_98452.png

g.主题:这里选择不使用任何主题


2.将工程设置为 Library


111340_VzC9_98452.png

a.由于是library工程,所以这里不选择创建icon图标

b.选择mark this project as a library ,选择此项,会将此工程配置为library工程。

( 我这里选择之后,没有成功,不知道啥原因,通过project.properties可以看出是否成功.)

如果成功,将出现如下配置:

115419_EPr8_98452.png

如果这里没有出现此配置,那么可以通过在项目上右键-properties,点击左边Android,右边拖动滚动条到最下面,选择Is Library ,确定则配置成功:

115641_9TCa_98452.png

此处的appcompat_V7是选择4.0以上SDK会自动继承的,这里不需要可以删除。

删除之后style.xml会报错,可以直接删除style.xml ,由于我这里不需要,同时删除,values-v11 ,values-v14 ,menu文件夹也删除。(根据自己需求进行处理)

library工程的AndroidManifest.xml不需要 application,如下:

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

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

</manifest>




3.创建默认activity类,选择相应的模板,当然也可以不创建,这里根据需求情况。


113246_gCZz_98452.png


4.创建默认activity及布局文件




113309_DQrp_98452.png

删除V7之后,默认这个类会报错,通过修改如下:

package com.example.lllll;
  
import com.example.lllll.R;
import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends  Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}



创建好Library如何使用?

  1. 创建一个普通的anroid工程,LibTest,步骤同上,不用选择library:

  2. 项目上点右键-android,右边拖到最下面,add刚才的library工程,确定,就继承成功。

    122618_cbJh_98452.png

  3. 在此可以引用Library里的类

    package com.example.libtest;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.TextView;
    
    public class MainActivity extends  Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            TextView t = (TextView) findViewById(R.id.test);
            t.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this,levent.snail.core.MainActivity.class);
                    startActivity(intent);
                }
            });
        }
     
    }

    这里注意调用Library里的activity一定先要在当前工程里引用activity,否则会出现notfoundactivity,

     <activity   android:name="levent.snail.core.MainActivity"  >      </activity>


注意:SDK在编译时候,会把Library和引用它的project进行合并,为了避免重名引起的问题,需要对library里的资源进行重命名。

转载于:https://my.oschina.net/NTCCRPzhrah1P/blog/531245