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一致。