使用AS将项目打包成aar供其他项目使用

前言:

使用eclipse开发android时候,如果需求将一个项目打包成jar以便其他项目调用,存在一个资源文(drawable/layout/values...)无法打包的弊端所以使用起来很不友好!

jar包即使包含了xml资源,在应用的时候也会报资源找不到的错误,为什么?因为在引用这个jar包的工程中,jar包中引用ID 指向的是当前项目的资源,目前也没有针对此的解决方法。aar包的出现,让打包资源简单化成了现实。但是如果你是eclipse工程,没办法引用aar包,那可以到这个博客中看看他是怎么解决的(http://blog.csdn.net/xiaanming/article/details/9257853)

如何打aar包:

1. 新建一个project,在project中新建一个module,选择Android jar,然后下一步下一步。新建之后你会看到在你的module里的build.gradle文件第一行apply plugin: 'com.android.library',它代表它是一个jar。然后运行Build,会在你工程目***\build\outputs\aar看到你的aar.


2.实现library中代码逻辑

  简单实现了一下library中的MyActivity一个界面及点击事件:

public class MyActivity extends Activity implements View.OnClickListener {

    Button leftbt, rightbt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.test_view);
        initView();
    }
    void initView() {
        leftbt = (Button) findViewById(R.id.leftbt);
        rightbt = (Button) findViewById(R.id.rightbt);
        leftbt.setOnClickListener(this);
        rightbt.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.leftbt) {
            Toast.makeText(MyActivity.this, "msg", Toast.LENGTH_SHORT).show();
        }
        if (id == R.id.leftbt) {
            Toast.makeText(MyActivity.this, "setting", Toast.LENGTH_SHORT).show();
        }
    }
}

编译后在library的build—>outputs—>aar文件夹下生成对对应的library文件



3.如何使用aar

3.1将aar放在你所需要引用工程的libs文件夹中。



3.2在project的build.gradle文件中添加

repositories {
    flatDir {
        dirs 'libs' 
    }
}

注意,是project的不是module的build.gradle文件,下图是添加前后的对比。




3.3然后再在module的build.gradle文件中dependencies标签中添加下面的依赖。 compile(name:'你的aar名字', ext:'aar')




3.4在项目中配置需要使用aar中的组建(Activity/Service.....)


代码调用:

public class MainActivity extends Activity {

    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                test();
            }
        });
    }
    private void test(){
        Intent intent = new Intent(this, MyActivity.class);
        startActivity(intent);
    }
}

原文:http://jingyan.baidu.com/article/ca2d939d0faed1eb6c31ced9.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值