标签: android-library

如何从Gradle设置AAR输出的名称

我有一个项目,里面有几个模块,其中一个是名为(很差)的Android库sdk.当我构建项目时,它输出一个名为的AAR sdk.aar.

我无法在Android或Gradle文档中找到允许我更改AAR输出名称的任何内容.我希望它有一个基本名称+版本号,就像Jar任务一样,但我无法弄清楚如何为AAR做同样的事情,因为它的所有配置似乎都隐藏在android.library插件中.

在此阶段重命名模块不是一个选项,仍然不会将版本号添加到最终的AAR.

如何更改com.android.libraryGradle中生成的AAR的名称?

Gradle解决方案

defaultConfig {
    minSdkVersion 9
    targetSdkVersion 19
    versionCode 4
    versionName '1.3'
    testFunctionalTest true
    project.archivesBaseName = "Project name"
    project.version = android.defaultConfig.versionName
}
Run Code Online (Sandbox Code Playgroud)

android gradle android-library

51
推荐指数
6
解决办法
2万
查看次数

java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader

有没有经历过这个错误的人?

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.swig.simple-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "liborg.swig.simple.example.so"
Run Code Online (Sandbox Code Playgroud)

通过这种方式加载库时发生错误.

static {
    System.loadLibrary("example");
}
Run Code Online (Sandbox Code Playgroud)

我确定'example'类存在于当前文件夹中.

c++ android swig android-library

50
推荐指数
10
解决办法
8万
查看次数

使用aar和source jar将Android库发布到Maven

有人可以给我一个关于如何使用maven-publish gradle插件发布带有aar和source jar的com.android.library项目/模块的提示吗?我可以使用旧的maven插件执行此操作 - 但我想使用新的maven-publish插件.

android gradle android-library android-gradle-plugin maven-publish

49
推荐指数
4
解决办法
3万
查看次数

如何让Proguard忽略外部库?

我想使用Proguard主要是出于混淆的原因.

我的问题是我有三个库,Twitter4J和两个路标库.当我尝试创建签名的APK时,这些库会导致错误.为了克服这个问题,我在proguard.config文件中添加了以下内容......

-dontwarn org.apache.commons.codec.binary.** 
-dontwarn org.slf4j.** 
-dontwarn com.sun.syndication.io.**
-dontwarn com.sun.syndication.feed.synd.*   
Run Code Online (Sandbox Code Playgroud)

虽然这摆脱了控制台中的错误,当我将签名的APK加载到我的手机上时,它立即崩溃了.DDMS说这是由于Twitter4J中没有找到的课程.

摆脱"dontwarns"上述情况并没有帮助.也没有添加dontshrink dontoptimise.

我希望Proguard完全忽略这些库(因为它们无论如何都是开源的).这可能吗?

android proguard android-library

47
推荐指数
2
解决办法
4万
查看次数

适用于Android的REST API客户端库

我们正在构建一个基于位置的消息传递应用程序,它使用Parse.com作为后端(Parse.com类似于Urban Airship/PubNub等),我们现在想切换到我们自己的后端以获得更好的控制.为此,我们构建了一个基于node.js的后端,其功能通过REST API公开

要使用此API,我们需要构建一个Android库(类似于Parse.com的Android SDK),它抽象所有HTTP请求/响应或REST API调用,并为各种操作提供直接函数,如getUsers(),sendMessage()等

在Android中实现REST API客户端的方法:

现在,考虑到我们想要构建一个android库,并且在用户与应用程序交互时可能会同时进行REST API调用,哪种方法最好继续进行?我也对其他建议/建议持开放态度.

更新:我们首先使用IntentService + ResultReceiver构建我们自己的库,它工作正常.但我们后来偶然发现了Android Async Http.用它.这很棒!

rest android asynchronous android-library intentservice

45
推荐指数
3
解决办法
7万
查看次数

在Android中使用新的"manifestmerger"属性

在最新版本的ADT(版本20预览版3)中,他们说可以使库的清单文件与使用它们的项目合并:

将库项目清单文件自动合并到包含项目的清单中.使用manifestmerger.enabled属性启用.

我如何以及在何处使用它?我无法在任何地方看到内容帮助我.

android adt android-manifest android-library

43
推荐指数
3
解决办法
2万
查看次数

在另一个项目中使用Android库项目Activity

我有一个Android库项目,我想在另一个Android项目中使用.

该库在其AndroidManifest中声明了一个Activity.当我在第二个项目中尝试以下内容时:

        Intent intent = new Intent(this, ReaderActivity.class);
        startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.digitalpages.reader.demo/br.com.digitalpages.reader.demo.ReaderDemoActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {br.com.digitalpages.reader.demo/br.com.digitalpages.reader.ReaderActivity}; have you declared this activity in your AndroidManifest.xml?
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
...
 Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {br.com.digitalpages.reader.demo/br.com.digitalpages.reader.ReaderActivity}; have you declared this activity in your AndroidManifest.xml?
     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
...
Run Code Online (Sandbox Code Playgroud)

如何从另一个项目中打开活动?

编辑:根据用户的答案,我将以下行添加到我的第二个项目中

<uses-library android:name="br.com.digitalpages.reader" android:required="true" />
Run Code Online (Sandbox Code Playgroud)

但它仍然不起作用

android android-library android-activity

38
推荐指数
2
解决办法
4万
查看次数

Android库Manifest与App Manifest

我在这里已经阅读了类似的问题,但我仍然不清楚几件事情.使用库项目意味着我的整个项目将有两个清单 - 一个用于库,另一个用于"主"应用程序项目 - 我不清楚是什么或哪些有冗余.

我正在开发一个带有"精简"和"付费"版本的应用程序小部件,因此几乎所有代码都在库项目中.作为一个小部件,该库至少会有一个接收器,一个服务,一个配置活动,以及其他一些活动.那么应该在哪里声明这些组件的完整声明 - 包括意图,过滤器等?它们是在库的清单中,还是在应用程序包本身的清单中,引用库中的类(例如android:name ="com.foo.mylibrary.MyService")?

我看过的一些例子似乎在两个清单中都声明了它们,但我怀疑将它们放在一个或另一个中是一个无操作.

android android-manifest android-service android-library android-activity

38
推荐指数
3
解决办法
2万
查看次数

Android库是否需要清单app_name,Icon?

我有一个android库,输出一个aar库.该库将构建到Mobile,TV和Wear应用程序的不同projectFlavors中.我认为这些平台中的每一个都应该是通过清单和产品风格设置应用程序名称,图标和权限等变量的平台.

有没有办法在不需要AndroidManifest.xml的情况下构建AAR,因此可以绘制drawable(用于图标)?

有关我正在做的事情的更多信息可以在我关于这个主题的最后一个问题中找到: Android Studio Java Library Module与Android Library Module

android android-library android-studio

38
推荐指数
2
解决办法
1万
查看次数

使用Android库项目时,如何正确引用xml资源?

我有一个Android库项目,其中包含在styles.xml文件中定义的几个样式/主题.

通常,在其他xml布局或清单文件中引用此样式时,您只需编写 android:theme="@style/TheNameOfTheStyle"

使用库项目时,依赖项目如何正确引用该样式?只是把它留下来android:theme="@style/TheNameOfTheStyle"给我一个错误,说没有找到匹配该名称的资源.

我想同样的问题也适用于@string,@ color等其他参考文献.

谢谢

编辑:好的所以看起来你似乎正常引用它,但是eclipse中的控制台给了我这个错误:

错误:找不到与给定名称匹配的资源(在'theme'处,值为'@ style/ThemeName').

(facepalm)编辑

我只需要在Eclipse中"清理项目".现在它正在运作.

xml android android-library

34
推荐指数
1
解决办法
1万
查看次数