java - 从 JAR/Lib 启动 Activity

标签 java android android-activity android-studio

我想创建 android Project 让我们说 MyApplication。

MyApplication 有一个 Activity MyActivity.java。

我想要一些其他应用程序让我们说 NotMyApplication 来启动这个 Activity 而不在设备上安装 MyApplication。

对于这种情况,我想做的是我想以某种方式将 MyApplication 转换为 jar/lib,这样我就不需要安装,也不需要共享代码。

然后在 NotMyApplication 中导入 MyActivity.java 并创建一个 Intent,如下所示:

**Intent in = new Intent(MyActivity.class,NotMyActivity.this);
startActivity(in);**

我怎样才能完成整个过程。 有人可以指导 Stepwise for android studio 吗??

[编辑]

我在 eclipse 中创建了 Jar 文件,然后将其复制到 android studio 中的 libs 文件夹中。 比在 gradle 中添加 complie 语句:将 jar 导入为:

导入 com.example.testmylibs.MyClassToTest;

比启动 Activity 为:

Intent in = new Intent(getApplicationContext(),com.example.testmylibs.MyClassToTest.class);启动 Activity (在);

它仍然给出 FATAL 为:

android.content.ActivityNotFoundException:无法找到显式 Activity 类 {com.myapplication/com.example.testmylibs.MyClassToTest};您是否已在 AndroidManifest.xml 中声明此 Activity ?

[编辑]

如果我在 NotMyApplication 的 AndroidManifest.xml 中本地声明为:

    **<activity android:name="com.example.testmylibs.MyClassToTest" >
    </activity>**
    
    

出现以下异常:

java.lang.NoClassDefFoundError:解析失败:Lcom/example/testmylibs/R$layout; . . 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.example.testmylibs.R$layout”:DexPathList[[zip 文件“/data/app/com.myapplication-2/base.apk”] ,nativeLibraryDirectories=[/vendor/lib64,/system/lib64]]

最佳答案

我通过以下方式找到了答案,

我不知道,但 Jar 文件无法以这种方式工作,所以我所做的是制作普通的 android 项目 (MyApplication),我想将其导出为 lib。 一旦我完成了对我的 Activity 的更改,就说我的 Activity 。转到应用程序的 build.gradle 进行以下更改:

1) change code **"apply plugin: 'com.android.application'" to "apply plugin: 'com.android.library'"**

2) remove attribute "applicationId "com.myapplication"" from defaultConfig.

现在转到菜单栏并单击“构建”->“清理”,然后单击“构建”->“重建”。 它将在“app\build\outputs\aar”中创建一个“.aar”文件。

这是你的库。 将其导入您的应用程序,例如 libs 文件夹中的 NotMyApplication 并执行以下步骤: 1)在app的build.gradle中添加如下代码: 存储库{ flatDir { 目录“库”

2) Also add following to build.gradle of app : 
    **dependencies {
    ...
    compile (name: 'name_of_aar_file_without_ext', ext:'aar' )
    }**

3) Declare the Activity you want to launch in your apps manifest file : 

    **<activity android:name="com.testmylib.MyActivity" >
    </activity>**

4) Launch your activity as :
        **Intent in = new Intent(NotMyActivity.this,com.testmylib.MyActivity.class)
        startActivity(in);**

它将从 lib 启动您的 Activity 。需要注意的一点是,如果存在同名资源,Activity 将从 NotMyApplication 中选择。因此请记住,请为您要在库中导出的此类 Activity 的资源指定唯一的名称。

我仍然不知道为什么从 Jar 中它不起作用。任何帮助将不胜感激...:)

更多详情请访问链接:http://revisitingandroid.blogspot.in/2017/01/how-to-launch-activity-from-aar-files.html

关于java - 从 JAR/Lib 启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33253405/

相关文章:

android - 在 Activity 中使用 intent.getStringExtra

Javafx:如何将 ComboBox 项目动态绑定(bind)到从数据库更新自身的可观察列表

c# - Java 的 SimpleDateFormat 类在 C# 中的等价物是什么?

java - StackMapTable 会影响垃圾收集行为吗?

设备无法识别 Android 九补丁

android - 如何以编程方式设置通知音量?

java - 如何引用android文档?

android - Retrofit响应是一个html代码

android - 开始太多 Activity ?

android - 静态 Activity 生成器?