android studio生成aar/ jar包及混淆 (项目模块化,Module),动态和静态Jar

  代码模块化,功能模块化,项目模块化。
android自定义静态jar包和动态jar包的编译、使用- https://blog.csdn.net/bukker/article/details/51672506
Android导入第三方静态库.a,编译成动态库.so。

> Android Studio生成jar包,并混淆
Android Studio 将module打成jar包 , Android Studio将自定义控件打成jar包
Android Studio将library手动打成jar包- http://blog.csdn.net/hard_working1/article/details/52639776
Android Studio 如何打JAR包- http://blog.csdn.net/ta893115871/article/details/46955791/
Android Studio 如何打JAR包并解决资源使用问题- http://www.jianshu.com/p/367b84e7dd0f https://github.com/ta893115871/MakeJar
AndroidStudio导出jar包- http://blog.csdn.net/beijingshi1/article/details/38681281
当模块化遇上多渠道- http://blog.csdn.net/qibin0506/article/details/71307301
Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)- http://blog.csdn.net/xiaanming/article/details/9257853
Android Studio 如何打JAR包:http://blog.csdn.net/ta893115871/article/details/46955791/
android studio 使用gradle 导出jar包,并打包assets目录:http://blog.csdn.net/getchance/article/details/46844227

Proguard进行Jar包混淆- http://blog.csdn.net/mengweiqi33/article/details/51736519

> 创建新的Module

Android Studio中新建module的步骤:New-> New Module-> Android Library。

> Android Studio生成aar包,并混淆 ; Android Studio 生成aar包多Module引用问题?
  生成Module aar文件:选中项目中的Module,单击;点击菜单栏 Build里面的Make Module ‘xxx’

合并AAR踩坑之旅- https://www.jianshu.com/p/8f7e32015836
Gradle script that allows you to merge and embed dependencies in generted aar file- https://github.com/adwiv/android-fat-aar

[Android Studio] 使用本地 aar 文件- http://www.cnblogs.com/0616--ataozhijia/p/4662744.html
Android studio中生成引用.aar和.jar的方法- https://yq.aliyun.com/ziliao/138460?spm=5176.8246799.0.0.P9bh2X
android studio生成aar包并在其他工程引用aar包- http://blog.csdn.net/getchance/article/details/47257389
AndroidStudio之如何使用aar- http://www.jianshu.com/p/59efa895589e
Android studio 如何打.aar包,并应用- http://blog.csdn.net/wonghoman/article/details/49928613
Android多模块构建合并aar解决方案- http://blog.csdn.net/wwj_748/article/details/53230706
[Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法- http://blog.csdn.net/qiujuer/article/details/39754517
AndroidStudio中导入module(超详细)- http://blog.csdn.net/ygd1994/article/details/51348323
Android Studio Project 中Module打包成aar包- http://blog.csdn.net/qq_27945669/article/details/55044972
android studio生成aar包并在其他工程引用aar包:http://blog.csdn.net/getchance/article/details/47257389
android studio 把源码和资源文件一起打包生成aar包:http://blog.csdn.net/getchance/article/details/46844227
eventbus:3.0.0-beta1混淆的坑 - https://blog.csdn.net/roben518/article/details/77483683

-- 如何解决aar中的第三方依赖无法调用问题

-- module中依赖api 'com.google.code.gson:gson:2.8.2',然后打成aar包,在主工程App里面引用aar,然后运行App发现,还是找不到Gson。
如何解决aar中的第三方依赖无法调用问题- https://blog.csdn.net/hpc19950723/article/details/77773253

 方法一:compile 'com.example:myLibrary:versionX'换成 compile('com.example:myLibrary:versionX'){transitive=true} (这个不行)
 方法二:解决方案是将aar打包发布到本地的Maven仓库,如果公司有私服的话,可以直接放到私服上,私服上会自动让aar继续依赖其他的第三方库,
这样在主项目中就可以在build.gradle中以依赖的形式来集成aar.
 方法三:将gson.jar放到Module libs包下,然后打包为aar,最后才可以引用到。

一个简单的Android Library工程,导出aar有这几种方式:
1.编译后自动会在build/outputs/aar目录下生成.aar文件。此aar仅打包了Library工程的class、libs和资源文件,但Library引用的其他库(比如compile "com.squareup.okhttp3:okhttp:3.4.1")并未包含在aar中。使用Library时还需把它引用的库再手动声明一遍,差评!

2.发布到本地Maven库(或jCenter、MavenCentral)。发布出来的内容除了aar还包含了Library的所有dependencies信息。使用时直接设置好
maven库地址,声明引用Libraray,gradle就会帮你自动引用Library中嵌套引用的所有dependencies了。

 而.so 处理后放到 aar 模块下 src\main\jniLibs 对应的目录里,重新编译 aar 模块,这个是APP可以依赖到

-- aar包能带so 
 可能Run App程序后module没生成AAR包,可以在程序运行后再Rebuild Project下,就可以生成aar包了。
  *.jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
  *.aar: 包含所有资源 ,class以及res资源文件全部包含

ANDROID动态加载 使用SO库时要注意的一些问题- https://segmentfault.com/a/1190000005646078
 使用SO库的时候,除了“armeabi-v7a”等文件夹名需要严格按照规定的来自外,SO库要放在项目的哪个文件夹下也要按照套路来,以下是一些总结:
  1.Android Studio 工程放在 jniLibs/xxxabi 目录中(当然也可以通过在build.gradle文件中的设置jniLibs.srcDir属性自己指定);
  2.Eclipse 工程放在 libs/xxxabi 目录中(这也是使用ndk-build命令生成SO库的默认目录);
  3.aar 依赖包中位于 jni/ABI 目录中(SO库会自动包含到引用AAR压缩包到APK中);
  4.最终构建出来的APK文件中,SO库存在 lib/xxxabi 目录中(也就是说无论你用什么方式构建,只要保证APK包里SO库的这个路径没错就没问题);
  5.通过 PackageManager 安装后,在小于 Android 5.0 的系统中,SO库位于 APP 的 nativeLibraryPath 目录中;在大于等于 Android 5.0 的系统中,SO库位于 APP 的 nativeLibraryRootDir/CPU_ARCH 目录中;
 总结:既然扯到了这里,顺便说一下,我在使用 Android Studio 1.5 构建APK的时候,发现 Gradle 插件只会默认打包application类型的module的jniLibs下面的SO库文件,而不会打包aar依赖包的SO库,所以会导致最终构建出来的APK里的SO库文件缺失。暂时的解决方案是把所有的SO库都放在application模块中(这显然不是很好的解决方案),不知道这是不是Studio的BUG,同事的解决方案是通过修改Gradle插件来增加对aar依赖包的SO库的打包支持(GitHub有开源的第三方Gradle插件项目,使用Java和Groovy语言开发)。
  编译APK的时候,我们总是希望使用最新版本的build-tools来编译,因为Android SDK最新版本会帮我们做出最优的向下兼容工作。
  但是这对于编译SO库来说就不一样了,因为NDK平台不是向下兼容的,而是向上兼容的。应该使用app的minSdkVersion对应的版本的NDK标本来编译SO库文件,如果使用了太高版本的NDK,可能会导致APP性能低下,或者引发一些SO库相关的运行时异常,比如“UnsatisfiedLinkError”,“dlopen: failed”以及其他类型的Crash。
  如果我们的项目是SDK项目,我们最好提供全平台类型的SO库支持,因为APP能支持的设备CPU类型的数量,就是项目中所有SO库支持的最少CPU类型的数量(使用我们SDK的APP能支持的CPU类型只能少于等于我们SDK支持的类型)。
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值