标签: android-library

在使用ant为库项目构建Android测试时,如何使用filter for emma?

从这个问题:

在使用ant构建Android测试时,如何使用filter for emma?

我知道emma可以通过在目标项目的ant.properties中添加以下行来使用过滤器,而不是测试项目,

emma.filter=-com.your.excluded.package.*
Run Code Online (Sandbox Code Playgroud)

但如果我的目标项目是图书馆项目,它似乎无法正常工作.

我的工作区看起来像这样:

projectlib1         : lib project using lib2
projectlib1/tests   : unit tests for lib1
projectlib2         : lib project using lib3
projectlib2/tests   : unit tests for lib2
projectlib3         : stand alone lib
Run Code Online (Sandbox Code Playgroud)

当我为lib1运行覆盖时,我也获得了lib2和lib3的覆盖文件,这是我不想要的.我应该在哪里添加emma.filter?我试着将它放在每个项目的根部,但到目前为止它没有起作用.

任何建议欢迎!谢谢

ant android emma android-library

4
推荐指数
1
解决办法
1055
查看次数

从Android中的库项目调用应用程序活动

好,

所以我正在制作一个UI元素的库项目.该库有一些基于ActionBarSherlock的活动,它是android中操作栏的向后兼容库.在这些活动中,我想在操作栏中有一个按钮,无论用户在图书馆项目中使用哪种活动,都会将其带回家.

一些术语."库"指的是我正在研究的Android UI库项目."应用程序"是指开发人员可能在使用库时使用的任何客户.

通常,当你进行一项活动而你想打电话给另一项活动时,你会做这样的事情.

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

很简单.但这是棘手的一点.Android库几乎不知道什么应用程序正在使用它们.所以'WhateverMyActivityName.class'是无用的,因为没有办法预测开发人员应用程序将调用他们的活动.

我需要更换

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

有这样的东西

intent = new Intent(this, getApplication().MainActivity().getClass());
Run Code Online (Sandbox Code Playgroud)

或者可能使用某种意图动作来调用应用程序中的主Activity (Intent.ACTION_MAIN or Intent.CATEGORY_LAUNCHER)

简而言之:如何从库项目中获取应用程序主要活动?

android android-intent android-library library-project android-activity

4
推荐指数
1
解决办法
6185
查看次数

尝试启动库项目Activity

我有一个库项目和主项目,我尝试从主项目启动库项目中定义的活动.

Intent intent = new Intent("isr.LAUNCH");
intent.setComponent(new ComponentName("com.ISR", "com.ISR.activity.CameraActivity"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下异常:

05-14 17:13:42.853: E/AndroidRuntime(29217): java.lang.SecurityException: Permission Denial: starting Intent { act=isr.LAUNCH cmp=com.ISR/.activity.CameraActivity } from ProcessRecord{40aa7178 29217:com.ssbs.sw.SWE/10094} (pid=29217, uid=10094) requires null
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Parcel.readException(Parcel.java:1322)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Parcel.readException(Parcel.java:1276)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1351)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1374)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.Activity.startActivityForResult(Activity.java:2827)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.Activity.startActivity(Activity.java:2933)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at com.ssbs.sw.IR.view.MainActivity$1$1.onMenuItemClick(MainActivity.java:58)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at com.ssbs.sw.SWE.actionbarV5.menu.MenuButtonHelper$1.onClick(MenuButtonHelper.java:108)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.view.View.performClick(View.java:2492) …
Run Code Online (Sandbox Code Playgroud)

android android-library

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

Android Studio:为什么我的New项目包含2个模块

在新的Android Studio项目中,当我查看项目结构时,有2个模块.一个是"ProjectName",另一个是"ProjectName-ProjectName".创建项目时我做错了吗?

Android Studio项目结构

android intellij-idea android-library android-studio

4
推荐指数
1
解决办法
4440
查看次数

如何从我的Android库构建目标中排除jar文件

我正在使用Android Studio并且有几个依赖于相同代码的应用程序.我将共享代码移动到一个单独的库中,以便将其包含在我的应用程序中.

我为此目的创建的库项目(MyLib)需要一个jar文件来编译,所以我将它添加到项目的libs目录中.

build.gradleMyLib主模块如下所示:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.example.android"
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {

        }
    }
}

dependencies {
    compile files('./libs/external-java-lib.jar')
}
Run Code Online (Sandbox Code Playgroud)

当我构建项目时,gradle会生成一个包含的jar文件external-java-lib.jar.

我希望我的Android应用程序项目提供"external-java-lib.jar",而不是MyLib.因为在我的应用程序中我可能会使用不同版本的external-java-lib.jar.

如何配置Gradle以external-java-lib.jar从我的库项目的构建中排除?

我在网上找不到我的问题的答案,所以我觉得我想要的是一个糟糕的设计.我还可以做些什么?

先感谢您.

android jar build gradle android-library

4
推荐指数
1
解决办法
5918
查看次数

基于Gradle构建一个封闭源码的Android库

我想用Gradle构建一个闭源的android库.我的库对开源项目有一些依赖性.我该如何构建我的库?我可以使用gradle吗?

android gradle maven android-library

4
推荐指数
1
解决办法
716
查看次数

Android Gradle Manifest合并失败

我使用leanback库为Android TV开发.我的应用程序将min API声明为16,但leanback作为最小API为16.因此,文档说我在我的清单中声明了这一点:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="com.mypackage.package">

    <uses-sdk tools:overrideLibrary="android.support.v17.leanback" />
Run Code Online (Sandbox Code Playgroud)

但是我仍然有错误:

错误:(6,5)任务':app:processAdhocProdManifest'的执行失败.

清单合并失败:使用-SDK:16的minSdkVersion不能比库/thepathtotheapp/build/intermediates/exploded-aar/com.android.support/leanback-v17/22.2.0/AndroidManifest.xml建议宣布版本17小:使用tools:overrideLibrary ="android.support.v17.leanback"强制使用

在Manifest合并报告中我可以看到:

MERGED from io.fabric.sdk.android:fabric:1.0.2:7:5
    android:targetSdkVersion
        INJECTED from AndroidManifest.xml:0:0
        INJECTED from AndroidManifest.xml:0:0
    android:minSdkVersion
        INJECTED from AndroidManifest.xml:0:0
        INJECTED from AndroidManifest.xml:0:0
    tools:overrideLibrary
        ADDED from AndroidManifest.xml:21:15
    tools:ignore
        ADDED from com.mixpanel.android:mixpanel-android:4.5.4-RC1:14:9
application
ADDED from AndroidManifest.xml:23:5
Run Code Online (Sandbox Code Playgroud)

所以看起来它正在添加工具:overrideLibrary但它仍然失败.

谁知道如何解决这个问题?

android gradle android-library android-tv leanback

4
推荐指数
1
解决办法
3036
查看次数

将库源添加到Android Studio中

我很抱歉fr问这个新手问题.

我试图在我的项目中使用这个库. https://github.com/gfranks/GFMinimalNotifications

我想导入源代码而不是二进制代码.

github页面说 Simply copy the source/resource files from the library folder into your project.

所以我尝试将这两个文件直接拖放到libsAndroid Studio中的文件夹中.

然后我回到我的Activity并尝试在我的代码中使用它.但是自动完成功能似乎无法识别库.

有什么帮助吗?我复制到我的libs文件夹后.

考虑到项目有许多与图书馆本身无关的资产,导入整个模块似乎是浪费.

找到了解决方案

我把它复制到app/libs文件夹,然后在build.gradle我添加

sourceSets {
    main.java.srcDirs += 'libs/GFMinimalNotifications/src/main/java'
}
Run Code Online (Sandbox Code Playgroud)

android android-library android-activity

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

如何将Intent从Library Module中的活动发送到Main Applications的活动

我试图将库模块中的活动的意图发送到主应用程序中的活动.但是无法发送,因为库模块不能依赖主应用程序导致循环依赖.有没有办法做到这一点?

android module android-intent android-library

4
推荐指数
1
解决办法
1374
查看次数

不能从最终的类继承

我刚刚创建了我的第一个android库.在另一个应用程序中,我想从它扩展一个类.但它显示了一个错误:"无法从最终'library.com.kukaintro.activities.KukaIntro'扩展."在此输入图像描述

在此输入图像描述

正如你所看到的,没有一个超级类是最终的.如果我点击超类KukaIntro(在应用程序而不是图书馆)它会说: 在此输入图像描述

这是我第一次创建图书馆.有人可以告诉我如何才能解决这个问题?

java android android-library kotlin-android-extensions

4
推荐指数
1
解决办法
4966
查看次数