我想创建 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/