[TOC]
64k方法數(shù)限制解決方案
Eclipse下Android 64k方法數(shù)的解決方案
eclipse Android工程方法超過(guò)65535歼指,一般使用MultiDex庫(kù)進(jìn)行分包處理捉邢。
而eclipse中使用multidex庫(kù)一般分為以下步驟:
- 下載android-support-multidex.jar
- jar包合并
- 合并后的jar包轉(zhuǎn)換為classes.dex文件
- 將classes.dex文件放置到項(xiàng)目的src目錄
- 配置MultiDexApplication
android-support-multidex.jar下載
百度下載android-support-multidex.jar放置在主工程使用
jar包合并
jar包合并有很多種方式淤袜,可以使用jdk提供的jar命令、ant腳本等。這里介紹使用ant命令。
ant命令: ant -buildfile b.xml
執(zhí)行命令獲取合并后的libs.jar文件(使用ant腳本需要安裝ant,如何安裝可以自行百度)
編寫(xiě)的b.xml文件如下:
basedir 為所合并jar的目錄
destfile 為輸出合并后的jar包全路徑
zipfileset 為需要合并的jar包
<?xml version="1.0" encoding="utf-8"?>
<project name="libs" basedir="E:\AntPackager\test\smjq" default="makeSuperJar">
<target name="makeSuperJar" description="description">
<jar destfile="libs.jar">
<zipfileset src="support-annotations-25.0.0.jar"/>
<zipfileset src="support-compat-25.0.0.jar"/>
<zipfileset src="support-core-ui-25.0.0.jar"/>
<zipfileset src="support-core-utils-25.0.0.jar"/>
<zipfileset src="support-fragment-25.0.0.jar"/>
<zipfileset src="support-internal_impl-25.0.0.jar"/>
<zipfileset src="support-media-compat-25.0.0.jar"/>
<zipfileset src="swipe-recyclerview.jar"/>
</jar>
</target>
</project>
合并后的jar包轉(zhuǎn)換為classes.dex文件
jar包轉(zhuǎn)化為dex文件弧蝇,可以使用sdk提供dx工具。 dx工具位于sdk/build-tools/26.0.2目錄下折砸。
dx命令: dx --dex --output=outputfile srcfile
示例:dx --dex --output=E:\libs\classes.dex E:\libs\all.jar
outputfile為輸出文件的dex文件
srcfile為所轉(zhuǎn)化的jar包
將classes.dex文件放置到項(xiàng)目的src目錄
MultiDexApplication配置
如果您沒(méi)有替換 Application 類看疗,請(qǐng)編輯清單文件,按如下方式設(shè)置 <application> 標(biāo)記中的 android:name:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
如果替換了 Application 類睦授,請(qǐng)按如下方式對(duì)其進(jìn)行更改以擴(kuò)展 MultiDexApplication(如果可能):
public class MyApplication extends MultiDexApplication { ... }
或者两芳,如果替換了 Application 類,但無(wú)法更改基本類去枷,則可以改為替換 attachBaseContext() 方法并調(diào)用 MultiDex.install(this) 來(lái)啟用 Dalvik 可執(zhí)行文件分包:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(context);
Multidex.install(this);
}
}
Android Studio下Android 64k方法數(shù)的解決方案
gradle配置
- 在主工程的
build.gradle
文件中增加配置:
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
android {
defaultConfig{
multiDexEnabled true
}
}
AndroidManifest配置
- 在主工程的AndroidManifest.xml文件中怖辆,找到游戲Application標(biāo)簽,增加一行配置:
android:name="android.support.multidex.MultiDexApplication"
- 如果代碼中有聲明游戲Applicaition删顶,請(qǐng)讓Applicaition繼承MultiDexApplication類
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:name="android.support.multidex.MultiDexApplication"
android:label="@string/app_name" >