编译带第三方jar库的app

从一个博客中学习的方法,很实用。

+++++++++++++++++UPDATE++++++++++++++++++UPDATE+++++++++++++++++++++UPDATE+++++++++++++++++++++++++++++++++++++UPDATE

时隔很久了,因为项目中一直认为这个是个瓶颈,导致本来可以放在一个AP里面的东西要写成两个AP,所以我又回来看了这个问题,这次我想到了在android源码中是不是有AP用过jar包,那我学习它不就好了?

所以我在Ubuntu下搜索package/app目录: find -name '*.jar'

结果发现Calculator就有用到jar包,我真是蠢,以前都不晓得怎么想的,会去绕那么一大圈,人家calculator不是写好了例子啊,其实很简单就是MK文件的问题,最后我模拟Calculator写了一个例子就成功了,总共耗费不到半小时就搞完了。具体代码如下:

 

[c-sharp]  view plain copy
  1. LOCAL_PATH := $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3. LOCAL_STATIC_JAVA_LIBRARIES := libarity  
  4. LOCAL_SRC_FILES := $(call all-java-files-under, src)  
  5. LOCAL_PACKAGE_NAME := TestJar  
  6. include $(BUILD_PACKAGE)  
  7. ##################################################  
  8. include $(CLEAR_VARS)  
  9. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:lily.jar  
  10. include $(BUILD_MULTI_PREBUILT)  
  11. # Use the folloing include to make our test apk.  
  12. include $(call all-makefiles-under,$(LOCAL_PATH))  
 

 

关键在于

LOCAL_STATIC_JAVA_LIBRARIES := libarity

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:lily.jar

其实libarity是个名字可以随便取,但是两个属性的值要一样就好了,但是后面那个冒号里面就一定要写你的jar包名,你的jar包一定放在工程的根目录就好了,目录结构如下:

-res

-src

android.mk

AndroidManifest.xml

default.properties

lily.jar

 如上路径

 

最后再贴上代码吧

 

JAR包的代码:

Lily.java

[java]  view plain copy
  1. package com.ianc.jar;  
  2. public class Lily {  
  3.     String name;  
  4.       
  5.     public void setName(String name) {  
  6.         this.name = name;  
  7.     }  
  8.     public Lily() {  
  9.         super();  
  10.     }  
  11.     public Lily(String name) {  
  12.         super();  
  13.         this.name = name;  
  14.     }  
  15.     public String getName(){  
  16.         return "lily";  
  17.     }  
  18. }  
 

用Eclipse-->export-->选中JAVA里面的JAR file这项,然后一路next就可以生成JAR包

 

测试工程的简单代码(TestJar.java):

[java]  view plain copy
  1. package com.ianc.testjar;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import com.ianc.jar.Lily;  
  5. public class TestJar extends Activity {  
  6.     /** Called when the activity is first created. */  
  7.     @Override  
  8.     public void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.main);  
  11.         Lily l = new Lily("lily");  
  12.         String result = l.getName();  
  13.         this.setTitle(result);  
  14.           
  15.     }  
  16. }  
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值