Android源码引入第三方jar

Android O之前

首先确定要引入的jar包android系统是否包含,修改对应模块的Android.mk文件,如下:

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr305 \
                               libphonenumber \
                               com.mediatek.lbs.em2.utils \
                               com.mediatek.settings.ext \
                               android-support-v7-recyclerview \
                               android-support-design \
                               android-support-v7-appcompat \
                               libhellocharts

这里最后4个就是我要引入的,这4个中的前三个android系统本身就有,找到对应的名称添加即可(不知道怎么找?搜索package/app下看看其它模块怎么写的)。最后一个的完整jar名称是hellocharts-library-1.5.8.jar,在mk文件末尾的地方添加

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libhellocharts :libs/hellocharts-library-1.5.8.jar	
include $(BUILD_MULTI_PREBUILT)


ifeq (,$(ONE_SHOT_MAKEFILE))
include $ (call all-makefiles-under,$(LOCAL_PATH))
endif

注意,libhellocharts 字符串自己定义,但要与上面保持一致。

对于AppCompat之类还需要添加对应资源目录,否则会报错。
如果你的项目中继承了AppCompatActivity类,需要设置Theme.AppCompat主题,否则报

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.trafficranking.UI.TrafficRankingActivity}:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

类似的,如果设置了android:theme="@style/Theme.AppCompat.Light.NoActionBar"之后会报

Error: No resource found that matches the given name (at 'theme' with value '@style/Theme.AppCompat.Light.NoActionBar').

修改方法为在Android.mk中添加如下代码(根据需要选择):

LOCAL_RESOURCE_DIR += 
frameworks/support/v7/appcompat/res  
frameworks/support/design/res  
frameworks/support/v7/recyclerview/res

LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat:android.support.design:android.support.v7.recyclerview

类似找不到资源之类的问题,都可以试试上面的方法,如:

Caused by: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class android.support.design.widget.TabLayout

Android P

上面是Android O之前的方法,到了Android P之后,Google使用Androidx替换Android了支持库,因此android support包的引入方式需要修改下:
首先,搜索代码中所有import android.support.v4/v7/v13包的语句,替换成androidx下的同类型import语句,例如

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

替换为

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

再如:

 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;

替换为

import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

其次,Android.mk中做如下修改:

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat android-support-v7-recyclerview android-support-v4 android-support-v13 \
     eventbus1 rxandroid1 rxjava1 rxStream1

LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat

改为:

LOCAL_STATIC_JAVA_LIBRARIES := eventbus1 rxandroid1 rxjava1 rxStream1

LOCAL_STATIC_ANDROID_LIBRARIES := androidx.appcompat_appcompat
LOCAL_STATIC_ANDROID_LIBRARIES += androidx.recyclerview_recyclerview

LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages androidx.appcompat

其它自己引入的jar,添加方法不变,与Android O一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值