怎么百变android studio 中库的arr文件的输出目录呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么百变android studio 中库的arr文件的输出目录呢?相关的知识,希望对你有一定的参考价值。

android studio中,有两种方式:
一种是jar包,一种是带资源文件的aar包,
jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
aar: 包含jar包和资源文件,如图片等所有res中的文件
这里将着重介绍如何使用本地的aar包
新建一个Demo项目

新建好的项目结构如下图:
其中app是我们的主要module,
libs下存放外部的library
build.gradle是配置App module的,接下来主要对其操作。

复制外部aar包到libs目录下。

修改build.gradle 配置文件:
1:添加
repositories flatDir dirs 'libs'
这个是添加一个本地仓库,并把libs目录作为仓库的地址。

2:修改dependencies:
添加一行:
compile(name:'usericonchooserutil', ext:'aar')
其中name就是libs目录下usericonchooserutil.aar文件名称,
ext,就是usericonchooserutil.aar的扩展名

重新编译项目:
从工具栏依次选择:"Build"-->"rebuild project"

编译完成后,在app/build/intermediates/exploded-aar/ a就可以看见我们引用的aar包内容了,其中jar目录下是jar文件,res下是我们aar包里的资源文件。

这个时候我们就可以在项目中使用第三包的类了,如下图:
参考技术A

可以在build.gradle中定义个gradle任务:

//copy aar to [x] path
task copyAAR(type: org.gradle.api.tasks.Copy) 
    from 'build/outputs/aar/xxx.aar'
    into gradle.rootProject.buildDir.path + "/x/";

可自行指定 x 路径和指定 xxx.aar,然后在gradle中执行此task即可

参考技术B


    假设工程所在文件夹
    .com.yourproject
    那么sqlite数据库文件所在文件夹是:
    /data/data/com.yourproject/databases
    假设数据库名: testdatabase
    控制台输入命令
    adb pull /data/data/com.yourproject/databases/testdatabase.db d:\\shownearby.db
    (成功运行adb的前提是把adb.exe所在的文件夹放入windows环境中,用win7系统,不知道Linux要怎么设置,whatever,it\'s your work)
    这样,数据库文件就copy到了D盘。用火狐插件sqlite manager打开吧。

参考技术C 在Android Studio菜单上,依次选择: File New Xml Layout xml File Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 在IDEA的基础上,Android Studio 提供: 基于Gradle的构建支持 Android 专属的重构和快速修复 提示工具以捕获性能、可用性、版本兼容性等问题 支持ProGuard 和应用签名 基于模板的向导来生成常用的 Android 应用设计和组件 功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览

Android Studio 中库的 NoClassDefFoundError [重复]

【中文标题】Android Studio 中库的 NoClassDefFoundError [重复]【英文标题】:NoClassDefFoundError with libraries in Android Studio [duplicate] 【发布时间】:2013-05-13 07:20:46 【问题描述】:

我花了几个小时试图让一个库与我在 Android Studio 中的项目一起工作,但我就是想不通。

这是我的模块的依赖项的样子

还有我的图书馆:

我什至添加了

compile files('libs/signpost-commonshttp4-1.2.1.2.jar')
compile files('libs/signpost-core-1.2.1.2.jar')

到我的 build.gradle。没有这个,应用程序甚至无法编译。

在这个阶段,当我尝试在代码中引用其中一个库时,应用程序崩溃并出现 NoClassDefFoundError 异常。

有些东西告诉我这不应该这么难——我忽略了什么?

LogCat:

05-17 21:51:15.676: I/ActivityManager(714): START u0 flg=0x10104000 cmp=com.crazydog.splitwiser/.InitialSplash bnds=[328,402][656,692] from pid 1513
05-17 21:51:15.896: I/ActivityManager(714): Start proc com.crazydog.splitwiser for activity com.crazydog.splitwiser/.InitialSplash: pid=18174 uid=10288 gids=50288, 3003, 1028
05-17 21:51:16.326: I/ActivityManager(714): Displayed com.crazydog.splitwiser/.InitialSplash: +437ms (total +1m9s209ms)
05-17 21:51:17.017: I/ActivityManager(714): START u0 cmp=com.crazydog.splitwiser/.LogIn from pid 18174
05-17 21:51:17.097: E/dalvikvm(18174): Could not find class 'oauth.signpost.commonshttp.CommonsHttpOAuthConsumer', referenced from method com.crazydog.splitwiser.Toolkit.oAuthTransaction
05-17 21:51:17.097: W/dalvikvm(18174): VFY: unable to resolve new-instance 662 (Loauth/signpost/commonshttp/CommonsHttpOAuthConsumer;) in Lcom/crazydog/splitwiser/Toolkit;
05-17 21:51:17.097: D/dalvikvm(18174): DexOpt: unable to opt direct call 0x112f at 0x08 in Lcom/crazydog/splitwiser/Toolkit;.oAuthTransaction
05-17 21:51:17.107: E/AndroidRuntime(18174):    at com.crazydog.splitwiser.Toolkit.oAuthTransaction(Toolkit.java:65)
05-17 21:51:17.107: E/AndroidRuntime(18174):    at com.crazydog.splitwiser.LogIn.onResume(LogIn.java:116)
05-17 21:51:17.117: W/ActivityManager(714):   Force finishing activity com.crazydog.splitwiser/.LogIn
05-17 21:51:17.117: W/ActivityManager(714):   Force finishing activity com.crazydog.splitwiser/.InitialSplash
05-17 21:51:17.618: W/ActivityManager(714): Activity pause timeout for ActivityRecord40d040d0 u0 com.crazydog.splitwiser/.LogIn

【问题讨论】:

我已将其添加到帖子中。 核心是否依赖http? 我认为你导入了错误的类。请检查代码顶部的导入语句 Toolkit.java第7行:import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; @Blundell:不——核心库不依赖于 commonshttp 库,如果这就是你的意思的话。 commonshttp 可能依赖于核心。 【参考方案1】:

我遇到了完全相同的问题, 和你一样,我认为添加

compile files('libs/signpost-commonshttp4-1.2.1.2.jar')
compile files('libs/signpost-core-1.2.1.2.jar')

在我做了./gradlew clean 之后,这一切都奏效了(我在 Mac 上,所以在你的情况下,相当于。) 当您位于项目的根目录时,您应该在终端/命令提示符下执行此命令。

【讨论】:

非常有用,谢谢!适用于 Windows 8,在 proj 目录中调用“gradle clean”。 哦,非常感谢...这花了我 4 个小时! 很奇怪 gradlew clean 工作而 Build -> Project clean 不工作... 什么是 windows 10 等效的 cmd line gradle clean?

以上是关于怎么百变android studio 中库的arr文件的输出目录呢?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中库的 NoClassDefFoundError [重复]

android studio 怎么用arr

Eclipse/Gradle 多项目中库的不稳定行为 (UnsatisfiedLinkError)

Unix中库的使用

Android Studio 3.3+ 每次打开项目出现AppCompatActivity等组件找不到的解决办法

android studio第三方框架导入为空怎么办