第一種:把framework的jar包放到工程目錄外
1、把framework.jar包放到當(dāng)前工程以外的地方。例如我放到SDK目錄下。如下圖
?2、在項(xiàng)目根目錄的gradle中引入jar包
String SDK_DIR = System.getenv("ANDROID_SDK")
if (SDK_DIR == null) {
Properties props = new Properties()
props.load(new FileInputStream(project.rootProject.file("local.properties")))
SDK_DIR = props.get('sdk/platforms.dir');
}
...
compileOnly files("$SDK_DIR/framework.jar")
?導(dǎo)入后我們可以在項(xiàng)目中導(dǎo)入的包 External Libraries 中找到“Gradle D”的包。是因?yàn)槲业腟DK在D盤(pán)下,framework包放在SDK包下。
3、引入后我們?nèi)ナ褂脮?huì)發(fā)現(xiàn)不會(huì)優(yōu)先使用framework下的api。這是因?yàn)樵陧?xiàng)目中會(huì)默認(rèn)優(yōu)先使用android.jar的api。所以我們需要把framework包使用優(yōu)先級(jí)排到前面。在根目錄下的gradle中添加配置,在Xbootclasspath中添加framework.jar。然后添加prebuild配置使framework優(yōu)先級(jí)在最前面。
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xbootclasspath/p:$SDK_DIR/syslibs/framework.jar")
}
}
preBuild {
doLast {
def imlFile = file(project.name + ".iml")
println('Change ' + project.name + '.iml order')
try {
def parsedXml = (new XmlParser()).parse(imlFile)
def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
parsedXml.component[1].remove(jdkNode)
def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
} catch (FileNotFoundException e) {
}
}
}
第二種:把framework的jar包放到工程目錄下,如放到單獨(dú)的目錄或者lib目錄都可以。(這里介紹放到單獨(dú)新建的目錄)如下
1、在項(xiàng)目目錄下新建一個(gè)目錄如 syslibs (名稱隨意)
?2、在項(xiàng)目根目錄的gradle中引入jar包
compileOnly files("$rootProject.rootDir/syslibs/framework.jar")
?3、重復(fù)第一種的第三步,如下文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-706773.html
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xbootclasspath/p:$rootProject.rootDir/syslibs/framework.jar")
}
}
preBuild {
doLast {
def imlFile = file(project.name + ".iml")
println('Change ' + project.name + '.iml order')
try {
def parsedXml = (new XmlParser()).parse(imlFile)
def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
parsedXml.component[1].remove(jdkNode)
def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
} catch (FileNotFoundException e) {
}
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-706773.html
到了這里,關(guān)于Android Studio 導(dǎo)入framework.jar的兩種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!