从这个问题:
在使用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?我试着将它放在每个项目的根部,但到目前为止它没有起作用.
任何建议欢迎!谢谢
好,
所以我正在制作一个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
我有一个库项目和主项目,我尝试从主项目启动库项目中定义的活动.
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 Studio项目中,当我查看项目结构时,有2个模块.一个是"ProjectName",另一个是"ProjectName-ProjectName".创建项目时我做错了吗?

我正在使用Android Studio并且有几个依赖于相同代码的应用程序.我将共享代码移动到一个单独的库中,以便将其包含在我的应用程序中.
我为此目的创建的库项目(MyLib)需要一个jar文件来编译,所以我将它添加到项目的libs目录中.
我build.gradle的MyLib主模块如下所示:
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从我的库项目的构建中排除?
我在网上找不到我的问题的答案,所以我觉得我想要的是一个糟糕的设计.我还可以做些什么?
先感谢您.
我想用Gradle构建一个闭源的android库.我的库对开源项目有一些依赖性.我该如何构建我的库?我可以使用gradle吗?
我使用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但它仍然失败.
谁知道如何解决这个问题?
我很抱歉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) 我试图将库模块中的活动的意图发送到主应用程序中的活动.但是无法发送,因为库模块不能依赖主应用程序导致循环依赖.有没有办法做到这一点?