How to use my custom library apk file in other app

2020-02-01 02:27发布

I have my own custom library apk file (say lib.apk) & i want make it available to other applications. How to provide the uses-library in the android manifest.xml file in other apps so as to use my custom library.

标签: android
5条回答
我欲成王,谁敢阻挡
2楼-- · 2020-02-01 02:43

I try to use a jar library in eclipse (I added an external jar library in the Java Build Path options of my project). The application compiles but I have a "Could not find class..." exception at runtime.

查看更多
女痞
3楼-- · 2020-02-01 02:48

The <uses-library> element is for add-ons supplied as extensions to the firmware. AFAIK, it will not be usable for your scenario.

Most likely, you will need to implement a service that exposes an API via AIDL, or uses a set of documented Intent actions to exchange data with other applications, or exposes a ContentProvider.

Otherwise, package your code as a JAR, not an APK. You can see many examples of this in my github repositories (all of the cwac- ones follow this pattern).

查看更多
对你真心纯属浪费
4楼-- · 2020-02-01 02:50

When converting from a jar library to and apk library make sure that the reference to the jar is removed from "Java Build Path" -> "Projects" and the library is added to "Android" -> "Library".

查看更多
兄弟一词,经得起流年.
5楼-- · 2020-02-01 02:51

You can actually make a project that links to another project.

You have to do two things in Eclipse:

  • add uses-library = package name in the manifest.xml
  • open project properties -> Java Build Path -> Projects and add the project of the used library

But i haven't managed to make it run. The sdk correcly uploads both packages, but I get an link error

WARN/dalvikvm(444): Link of class 'Lme/guillaumin/android/osmtracker/activity/DisplayTrackMap;' failed
ERROR/dalvikvm(444): Could not find class 'me.guillaumin.android.osmtracker.activity.DisplayTrackMap', referenced from method me.guillaumin.android.osmtracker.activity.TrackLogger.onOptionsItemSelected
WARN/dalvikvm(444): VFY: unable to resolve const-class 154 (Lme/guillaumin/android/osmtracker/activity/DisplayTrackMap;) in Lme/guillaumin/android/osmtracker/activity/TrackLogger;

The VM cannot load the class in my app that links into the libs app.

查看更多
够拽才男人
6楼-- · 2020-02-01 03:05

The lib.apk "application" should publish intents using Intent-Filters in the AndroidManifest.xml file.

The activity which requires to use the activity within the lib.apk, just needs to start an intent like below :

  Intent i = new Intent();
  i.setClass(this, libAPKActivity.class);
查看更多
登录 后发表回答