我想创建和android项目让我们说MyApplication。
MyApplication有一个活动MyActivity.java。
我想要一些其他应用程序,让我们说NotMyApplication启动此活动,而无需在设备上安装MyApplication。
对于这种情况,我想做的是我想将我的应用程序转换为jar/库,这样我就不需要安装,也不需要共享代码。
并在NotMyApplication中导入MyActivity.java并创建一个Intent,如下所示:
**Intent in = new Intent(MyActivity.class,NotMyActivity.this);
startActivity(in);**
我怎么能做整个过程。有人可以为android studio指导Stepwise吗??
[编辑]
我在eclipse中创建了Jar文件,并将其复制到android studio中的libs文件夹中。比在gradle中添加了compie语句:导入jar:
导入com. example.testmylibs.MyClassToTest;
比启动的活动为:
Intent in=new Intent(getApplicationContext(), com.example.testmylibs.MyClassToTest.class);start Activity(in);
仍然它给致命的:
android. content.ActivityNotFoundException:无法找到显式活动类{com.myapplication/com.example.testmylibs.MyClassToTest};您是否在AndroidManifest.xml中声明了此活动?
[编辑]
如果我在NotMyApplicattion的AndroidManifest. xml中本地声明为:
**<activity android:name="com.example.testmylibs.MyClassToTest" >
</activity>**
以下例外情况如下:
java. lang.NoClassDefFoundError:Lcom/example/testmylibs/R$布局解析失败;…由以下原因引起:java.lang.ClassNotFoundException:没有在路径上找到类"com.example.testmylibs.R$布局":DexPathList[[zip file"/data/app/com.myapplation-2/base.apk"],nativeLibraryDirectory=[/供应商/lib64, /system/lib64]]
我通过以下方式找到了答案,
我不知道,但Jar文件不是这样工作的,所以我做的是我做了正常的android项目(MyApplication),我想导出为库。一旦我开始对我的活动进行更改,说我的活动。转到build. gradle的应用程序进行以下更改:
1) change code **"apply plugin: 'com.android.application'" to "apply plugin: 'com.android.library'"**
2) remove attribute "applicationId "com.myapplication"" from defaultConfig.
现在转到菜单栏并单击Build-
这是你的库。将其导入到您的应用程序中,例如libs文件夹中的NotMyApplication并执行以下步骤:1)将以下代码添加到app: repositories{platDir{dirs'libs'}的build.gradle
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将从NotMyApplication中选择。因此请记住,为您要在lib中导出的此类活动的资源指定唯一名称。
我仍然不知道为什么从Jar它不起作用。任何帮助都将不胜感激…:)
更多详情请访问链接:http://revisitingandroid.blogspot.in/2017/01/how-to-launch-activity-from-aar-files.html
我想用@Tarun的回答补充一点:
>
将SDK项目的build. gradle(Module:app)文件中的所有依赖项复制粘贴到Base Project(NotMyApplication)的build.gradle(Module:app)文件中;
添加这个:
flatDir {
dirs 'libs'
}
在您的基本Project的build. gradle(Project:NotMyApplication)文件中,例如:
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs 'libs'
}
}
}
在基本项目的build. gradle(Module:app)文件中,使用“实现”而不是“编译”,例如:
implementation(name: 'name_of_aar_file_without_ext', ext:'aar' )
因为,配置“编译”已经过时,并且已经被替换为“实现”。它将很快被删除。有关更多信息,请查看此处:http://d.android.com/r/tools/update-dependency-configurations.html