日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AS编写sdk并打成jar包供其它APP调用

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AS编写sdk并打成jar包供其它APP调用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果sdk中涉及res下面的資源注意package路徑。

1.?Android?Studio后,結(jié)合gradle來(lái)配置生成jar 包。

gradle在構(gòu)建的時(shí)候,會(huì)對(duì)各個(gè)module的class文件打包成classes.jar,并存放在build/bundles/release(或者debug) 目錄下,所以其實(shí)我們可以直接將classes.jar拷貝出來(lái),并重命名。這算是取巧,也是最便捷的方式,當(dāng)然這類方法也可以用gradle 腳本來(lái)實(shí)現(xiàn),

task makeJar(type: Copy) {from('build/intermediates/bundles/release/')into('build/libs/')include('classes.jar')rename ('classes.jar', 'sdk.jar') }makeJar.dependsOn(build)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后在終端執(zhí)行 gradlew makeJar 命令,就可以在bulid/libs 目錄下生成對(duì)應(yīng)的jar包。但這種打包方式經(jīng)常會(huì)把一些冗余的文件一塊打進(jìn)jar ,不僅影響jar包的體積,還會(huì)經(jīng)常導(dǎo)致com.Android.dex.DexException: Multiple dex files define 此類的錯(cuò)誤 。

這類的問(wèn)題,我們?cè)谟玫降谌教峁┑膕dk 時(shí),也會(huì)經(jīng)常碰到,比如集成微博sdk時(shí)的這類 weibo sdk Multiple dex files define Lcom/sina/weibo/sdk/BuildConfig 問(wèn)題

原因是sdk 的jar包中打入了BuildConfig.class,解決方法很簡(jiǎn)單:解包,刪除里面的 BuildConfig.class,然后重新打包 jar。

具體如下:?
1. 解壓jar包:?
jar xf xxx.jar?
2. 刪除解壓后目錄里面的//BuildConfig.class?
3. 重新打包:?
jar cvf xxx.jar *

當(dāng)然我們不希望自己提供的jar 也給其他開(kāi)發(fā)者帶來(lái)同樣的困擾,所以我們期待可以有選擇性的選擇需要打包的class,排除不需要的class ,如BuildConfig.class、R.class 等

task makeJar(type: Jar) {from file('build/intermediates/classes/release')archiveName = 'sdk.jar'destinationDir = file('build/libs') //過(guò)濾不需要的classexclude "**/**/BuildConfig.class"exclude "**/**/BuildConfig\$*.class"exclude "**/R.class"exclude "**/R\$*.class" //指定打包的classinclude "com/test/**/*.class" } makeJar.dependsOn(build)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

通過(guò)上述腳本就可以實(shí)現(xiàn)選擇性的打包,關(guān)于打包時(shí)的混淆配置等,感興趣的朋友可以參考:?
http://my.oschina.net/u/2531612/blog/591366?fromerr=Xd1Kd7dY

===============幾個(gè)錯(cuò)誤============



這個(gè)是因?yàn)橐蕾嚢貜?fù)了 (像v4和nineoldandroids),如圖。app中實(shí)現(xiàn)了對(duì)easeUI的依賴,但是app和easeUI都添加了對(duì)這個(gè)包的依賴。所以就報(bào)這個(gè)錯(cuò)誤,修改之后再報(bào),就clean,rebuild一下



Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finished withnon-zero exit value 2


這個(gè)錯(cuò)誤在app的build.gradle里面添加下面這句就好了。

android {defaultConfig {...multiDexEnabled true }}


Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finished withnon-zero exit value 3


這個(gè)錯(cuò)誤就在app.bulid里面加上這句,再rebuild ,之后再運(yùn)行就行了。4g可以看電腦配置修改(2g,3g,6g,8g)。

dexOptions {javaMaxHeapSize "4g" } 如圖:

http://blog.csdn.net/edisonchang/article/details/51296265

http://blog.csdn.net/qq_26296197/article/details/52157272


原文地址:?http://blog.csdn.net/ccm_oliver/article/details/53407718

總結(jié)

以上是生活随笔為你收集整理的AS编写sdk并打成jar包供其它APP调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。