标签: library-project

使用图书馆项目的活动

我有一个Library项目设置和一个依赖于这个库项目的项目 - Everything编译得很好,但我的Dependent项目运行正常;

我在使用Library项目中的Activity时遇到了间歇性问题.

我的Library项目可以作为库项目"取消选中","选择器"活动可以单独运行.Library在它自己的权利运行项目工作正常没有问题.

当我使用Library依赖项目中的项目(和"选择器"活动)时,它给了我NullPointerExceptions(或历史上DexOp)错误,说"picker"Activity无法找到它的资源.

任何人都可以告诉我他们之前是否经历过这种情况吗?

编辑

手动将项目活动layout.xml使用的Library项目活动复制到依赖项目使项目正确打开"选择器"活动.这需要吗?!当然不是吗?这进一步让我想知道R.javaLibrary项目中合并/引用整数id是否存在问题.

编辑

我不确定这是否有任何后果,但我的一个Library项目是围绕在不同前端项目中使用的一组自定义视图的包装器.

这些自定义视图都有一个Activity,因此可以单独测试它们.

其中一个视图具有自定义属性,这些属性在隔离运行时非常有效.但是,似乎依赖项目没有正确地拉入属性并将它们保留在原始命名空间中,导致导入的布局抛出编译错误:

[2012-05-16 12:07:28 - Project] D:\opt\workspace\CustomGlowList\res\layout\main.xml:14: error: No resource identifier found for attribute 'listId' in package 'com.company.library.glowlist'
[2012-05-16 12:07:28 - Project] D:\opt\workspace\CustomGlowList\res\layout\main.xml:14: error: No resource identifier found for attribute 'type' in package 'com.company.library.glowlist
Run Code Online (Sandbox Code Playgroud)

编辑

通过删除Dependent项目中存在的重复文件名来解决DexOp错误.不确定文件名是问题还是文件内容.

编辑

到目前为止,我一直无法找到这个问题的解决方案(尽管@ yorkw的答案肯定有助于xml属性!谢谢).

我设法让这个问题断断续续:

我已经通过每个库项目中去,并确保他们都有自己的命名空间(即com.company.library.component1, …

android library-project

16
推荐指数
2
解决办法
6302
查看次数

Android应用程序中的Intermodule(库项目)通信

在下面显示的图中,我有3个模块(作为android库)扩展了基础"通用组件模块",所有这3个模块将被添加到单个Android应用程序中.所有3个模块都是独立的模块,但当它作为一个应用程序时,它需要共享一些数据,启动其他模块并需要更多的相互通信.

那么有谁能让我知道如何在这种架构中实现"数据共享层"和"导航控制器"?

示例:Module1 - > Login,Module2 - > Profile Management等,根据应用需要可能有"n"个模块.

在此输入图像描述

navigation android module data-sharing library-project

14
推荐指数
1
解决办法
3087
查看次数

从Android-Library-Project开始活动

经过长时间的搜索,我找不到任何合适的解决方案.我有一个Android-Library项目,几乎包含了应用程序的所有代码.从库项目中的主要活动我开始一个Intent到显式Activity A.在我使用库Project的派生Project中,我扩展了这个Activity A并添加了一些新代码.问题是活动A的超类将响应而不是派生类.

在使用库项目的新项目的清单中,我已使用新包声明了新的Activity.

这是来自图书馆计划的Intent调用:

Intent i = new Intent(getApplicationContext(), AndroidActivity.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

以下是派生的AndroidActivity类:

public class AndroidActivity extends de.app.library.activities.AndroidActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
            ...
Run Code Online (Sandbox Code Playgroud)

我无法进入onCreate方法

图书馆计划的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.app.library"
android:versionName="1.0" 
android:versionCode="1">

<uses-sdk android:minSdkVersion="4" />

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name">

    <activity android:name=".activities.MainActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".activities.AndroidActivity" android:label="@string/act_android" />
</application>
Run Code Online (Sandbox Code Playgroud)

这里是新项目的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="de.app.free"
  android:versionCode="1"
  android:versionName="1.0">

<uses-sdk android:minSdkVersion="4" />

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name">


    <activity android:name="de.app.library.activities.MainActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action …
Run Code Online (Sandbox Code Playgroud)

android android-intent library-project android-activity

11
推荐指数
1
解决办法
8639
查看次数

如何导入模块而不在Android Studio中创建副本

我正在使用Android Studio 1.3.1并尝试将库模块添加到现有的Android应用程序中.库模块在git存储库中可用.我可以导入模块,但它会在现有应用程序中创建一个副本.因此,我无法在模块中提取更新.

我确信有一种方法可以从工作室中的现有Android项目导入外部库.

我发现下面的stackoverflow帖子与我的疑问有关 -

  1. 如何在Android Studio 0.5.1上导入模块?
  2. Android Studio 0.8.1创建模块而不复制文件?

两者似乎都不适合我.我还发现其他用户的一些评论说它在最新版本的工作室中也没有为他们工作.

以下是我尝试过的事情

// in settings.gradle
include ':libraryName'
project(':libraryName').projectDir=new File('/path/to/library')

// in build.gradle
compile project(':libraryName')
Run Code Online (Sandbox Code Playgroud)

我也尝试使用这个网址

任何帮助表示赞赏.谢谢

git android library-project android-studio

11
推荐指数
2
解决办法
3132
查看次数

ActivityNotFoundException(是,此活动在AndroidManifest.xml中声明)

我发现一些线程报告了类似的问题,但它们都没有真正提供我尚未尝试过的东西.

一个无辜的这样的电话:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class));
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中使用以下内容:

 <application>
    <activity android:name="MyActivityLib" />
    <activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name">
    </activity>
 </application>
Run Code Online (Sandbox Code Playgroud)

触发以下异常:

06-14 14:06:50.297: ERROR/AndroidRuntime(9272): 
android.content.ActivityNotFoundException: Unable to find explicit activity class
{com.example.baseapp.paypal/com.example.baseapp.MyEditPreferences};
have you declared this activity in your AndroidManifest.xml?
Run Code Online (Sandbox Code Playgroud)

问题是,在将代码从单个应用程序项目更改为由库项目和应用程序项目组成的由两部分组成的项目之前,此代码用于完美地工作.

AndroidManifest.xml是项目中的一个.

我需要做什么来消除这个ActivityNotFoundException

android preferenceactivity android-manifest library-project

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

检查"是库"复选框做什么"在封面下"?

我注意到当我通过选中"is Library"复选框将现有的Android应用程序项目转换为Android库项目时,项目的源代码或XML文件没有任何变化.

那么当选中"is Library"复选框时会发生什么?内部,包和/或项目文件中有什么变化?我在哪里可以了解更多相关信息?

为了更好地解释我的问题:

  1. 我有兴趣知道(主要是为了排除故障)是 什么使应用程序包与"封面下的"库包有区别
  2. 那是一个项目是"图书馆计划"的事实某处标记?如果是这样,它在哪里标记它(显然不在源文件中,甚至不在res XML文件中)

android android-library library-project

8
推荐指数
2
解决办法
3621
查看次数

如何在Application的AndroidManifest.xml中引用Library Project中的图标

我正在尝试为从库项目派生的所有应用程序使用相同的应用程序图标.

我认为它将像实现此线程中提供的建议一样简单,但遗憾的是它不起作用.

我所做的是添加到<manifest>应用程序中的标记,AndroidManifest.xml如下所示:

xmlns:mylib="http://schemas.android.com/apk/res/com.example.baseapp"
Run Code Online (Sandbox Code Playgroud)

并在同一个AndroidManifest.xml文件中输入几行,将典型更改@drawable/icon为:

   <application android:icon="@mylib:drawable/icon">
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

相反,Eclipse告诉我:

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

显然,从布局XML和清单XML引用drawable是不一样的.

如何在Application的AndroidManifest.xml中引用Library Project中的图标?

android android-manifest android-library library-project

7
推荐指数
2
解决办法
7032
查看次数

将SDK工具和ADT更新为17,现在获得VerifyErrors

我有一个引用两个库项目的项目.将ADT和SDK工具升级到版本17后,应用程序在访问其中一个库项目中定义的类的引用后立即崩溃.错误如:

Unable to resolve superclass of Lcom/my/package/name/MyActivity; (118)
Link of class 'Lcom/my/package/name/MyActivity;' failed
VFY: unable to find class referenced in signature (Lcom/my/package/name/MyActivity;)
Run Code Online (Sandbox Code Playgroud)

和:

 FATAL EXCEPTION: main
  java.lang.VerifyError: my/package/name/util/SomeClass
    at my.package.name.App.onCreate(App.java:120)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3925)
    at android.app.ActivityThread.access$1300(ActivityThread.java:122)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4340)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

(我的包和类没有这样命名,只是将它们修改为在这里发布)

关于这里发生了什么的任何想法?据我所知,没有构建错误,我的项目看起来正确引用了库项目.

android adt library-project

7
推荐指数
1
解决办法
2931
查看次数

在Eclipse中,如何从使用它的项目源快速访问"android库项目"的源代码?

  • 项目A是我工作区中的一个android库项目(通过项目属性 - > android-> library:是库).
  • 项目A声明classA.
  • 项目B使用项目A(通过项目属性 - > android-> library:add ...).
  • 项目B实例化classA.

当我在项目B中的classA实例上使用F3("open declaration")时,它引导我到A.jar中的classA.class,它包含在B中,由A构建.

有没有办法直接转到项目A中的源classA.java而不是在包资源管理器中查找它?

我认为这是ADT14的新功能,以前每个包含的库项目都有X_src文件夹:例如,A_src将作为项目根目录中的源文件夹出现在B中.

eclipse android adt library-project

6
推荐指数
1
解决办法
622
查看次数

为什么不能将.aidl放入库项目中?

我发现这个答案的评论说明了一个图书馆项目:

  1. 无法保存.aidl文件,
  2. 不能依赖另一个图书馆项目,
  3. 不能持有资产

好吧,这个评论是在大约一年半前做出的,我可以非常肯定地告诉你项目#2不再是真的(2010年9月?),因为我有一个完美的工作项目,由一个图书馆项目组成取决于另一个图书馆项目.

所以,我的问题是两个:

  1. 图书馆项目是否仍然无法保存.aidl文件?
  2. 如果#1的答案是肯定的,那么这是什么原因?

顺便说一下,作为一个实验,我试图将IMarketBillingService.aidl(从应用程序内的计费样本中)放入一个库项目中(没有任何使用它的东西),并且该项目像以前一样构建和运行.因此,如果图书馆项目仍然无法包含a .aidl,那么这必须更深入......

android aidl library-project

6
推荐指数
1
解决办法
2537
查看次数