Tar*_*run 7 java android android-activity android-studio
我想创建和 android 项目让我们说 MyApplication。
MyApplication 有一个活动 MyActivity.java。
我想要一些其他应用程序让我们说 NotMyApplication 来启动此活动,而无需在设备上安装 MyApplication。
我想为这个场景做的是我想以某种方式将 MyApplication 转换为 jar/lib,这样我就不需要安装也不需要共享代码。
并在 NotMyApplication 中导入 MyActivity.java 并创建一个如下所示的意图:
**Intent in = new Intent(MyActivity.class,NotMyActivity.this);
startActivity(in);**
Run Code Online (Sandbox Code Playgroud)
我怎样才能完成整个过程。有人可以指导 Stepwise for android studio 吗??
[编辑]
我在 Eclipse 中创建了 Jar 文件,然后将其复制到 android studio 中的 libs 文件夹中。比在 gradle 中添加 complie 语句:将 jar 导入为:
导入 com.example.testmylibs.MyClassToTest;
比发起的活动为:
Intent in = new Intent(getApplicationContext(),com.example.testmylibs.MyClassToTest.class); 开始活动(在);
它仍然给 FATAL 为:
android.content.ActivityNotFoundException:无法找到显式活动类 {com.myapplication/com.example.testmylibs.MyClassToTest};您是否在 AndroidManifest.xml 中声明了此活动?
[编辑]
如果我在 NotMyApplication 的 AndroidManifest.xml 中本地声明为:
**<activity android:name="com.example.testmylibs.MyClassToTest" >
</activity>**
Run Code Online (Sandbox Code Playgroud)
比以下异常来了:
java.lang.NoClassDefFoundError:解析失败:Lcom/example/testmylibs/R$layout;. . 引起:java.lang.ClassNotFoundException:在路径上找不到类“com.example.testmylibs.R$layout”:DexPathList[[zip file“/data/app/com.myapplication-2/base.apk”] ,nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
我通过以下方式找到了答案,
我不知道,但 Jar 文件不能以这种方式工作,所以我所做的是我制作了普通的 android 项目(MyApplication),我想将其导出为 lib。一旦我完成对我的活动的更改,请说我的活动。转到应用程序的 build.gradle 进行以下更改:
1) change code **"apply plugin: 'com.android.application'" to "apply plugin: 'com.android.library'"**
2) remove attribute "applicationId "com.myapplication"" from defaultConfig.
Run Code Online (Sandbox Code Playgroud)
现在转到菜单栏并单击“构建”->“清理”,然后单击“构建”->“重建”。它将在“app\build\outputs\aar”中创建一个“.aar”文件。
这是你的库。将其导入到您的应用程序中,例如 libs 文件夹中的 NotMyApplication 并执行以下步骤: 1) 将以下代码添加到应用程序的 build.gradle 中: repositories{ flatDir { dirs 'libs' }
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);**
Run Code Online (Sandbox Code Playgroud)
它将从 lib 启动您的活动。需要注意的一点是,如果存在同名资源,则 Activity 将从 NotMyApplication 中选择。因此,请记住,为要在库中导出的此类活动的资源指定唯一的名称。
我仍然不知道为什么 Jar 不起作用。任何有关这方面的帮助将不胜感激......:)
有关更多详细信息,请访问链接:http://revisitingandroid.blogspot.in/2017/01/how-to-launch-activity-from-aar-files.html
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |