【问题标题】:Android - Add existing app to another app as a library projectAndroid - 将现有应用程序作为库项目添加到另一个应用程序
【发布时间】:2016-02-04 20:11:41
【问题描述】:

我通常按照步骤将我的应用程序转换为库项目,方法是将build.gradle 更新为具有apply plugin: 'com.android.library',然后通过将其添加到settings.gradle 和build.gradle 将其包含在我的其他应用程序中。

当我在已添加库的应用程序上进行 gradle 同步时,我可以看到库项目已编译。但是,我无法从应用程序内调用或访问库中的代码。这样做的正确方法是什么?

库项目是一个具有MainActivity 的应用程序,其行为通常与任何 Android 应用程序一样。是否需要做其他任何事情才能使其成为一个合适的库项目?

从包含库的应用程序从库中启动 Activity 时出现异常:

java.lang.RuntimeException:无法实例化活动 组件信息{myapp.debug/mylib.MainActivity}: java.lang.ClassNotFoundException:找不到类 路径上的“mylib.MainActivity”:DexPathList [[zip 文件 "/data/app/myapp.debug-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /系统/库]] 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 在 android.app.ActivityThread.access$800(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 引起:java.lang.ClassNotFoundException:找不到类 路径上的“mylib.MainActivity”:DexPathList [[zip 文件 "/data/app/myapp.debug-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /系统/库]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:511) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1066) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 在 android.app.ActivityThread.access$800(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 抑制:java.lang.ClassNotFoundException: com.janacare.aina.MainActivity 在 java.lang.Class.classForName(本机方法) 在 java.lang.BootClassLoader.findClass(ClassLoader.java:781) 在 java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 13 更多 引起:java.lang.NoClassDefFoundError: Class not found using the 引导类加载器;没有可用的堆栈

【问题讨论】:

  • 举一个你想调用的代码示例。这是你想开始的活动吗?是类中的静态方法吗?
  • 这是一项活动。通过意图启动。我在尝试这样做时收到了ClassNotFoundException。
  • 显示您应用的 manifest.xml,以及您用于从您的库中启动 Activity 的代码以及您收到的完整错误消息
  • 您是否将您的库作为依赖项添加到您的应用程序中?你能展示你的其他应用 build.gradle 吗?
  • 我已将compile project(':mylibraryproject') 添加到我的build.gradle 的dependencies 部分,并且我已添加include ':mylibraryproject' project(':mylibraryproject').projectDir = new File('mylibraryproject/ProjectName' )` 到应用程序的settings.gradle。

标签: java android android-studio gradle android-library


【解决方案1】:

也许你应该试试这些

在android studio中,点击file->new->import module->browse to your library will be app location
此方法会自动将您的应用添加到 gradle 并将您的应用导入到您的项目中

【讨论】:

    【解决方案2】:

    在另一个 android 项目中实现此代码以启动库模块 Activity

    1) Intent i = new Intent(Intent.ACTION_MAIN);

    2) i.setComponent(new ComponentName("myparent.company.com.myparent", "myparent.company.com.myparent.MainActivity"));

    3)startActivity(i);

    但给我错误:

    java.lang.RuntimeException:无法启动活动 ComponentInfo{mychild.agamitech.com.mychild/mychild.agamitech.com.mychild.MainActivity}:android.content.ActivityNotFoundException:无法找到显式活动类 {myparent.company .com.myparent/myparent.company.com.myparent.MainActivity};您是否在 AndroidManifest.xml 中声明了此活动?

    我想将我的另一个项目活动用于许多其他项目

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-16
      • 2010-11-05
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多