Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android:add resource file in JAR

I have planned to create an SDK in android, that means to share my class files and resource(layouts) to another application that requires them. If I export my application as JAR it does not include the resource files and R.class. I know currently Android does not support to packaging resource file via JAR but I searched the net and found one solution if compile our resource files with source code means we can access the resource in some other application.

So for that reason I did it in the following way:

  1. copied all res folders content into my source folder

    • src ->com.mypackege -> res--->here i put my res folder
    • finally my src folder look like

    • src

      com.mypackage

            >myfile.java
           drawable-hdpi
           drawable-ldpi
           drawable-mdpi
           drawable-xhdpi
           com.mypackage.drawable
           com.mypackage.layout
           com.mypackage.menu
           com.mypackage.values
      
  2. and i build my project i got all class files including resource and r.class in my bin

  3. then i create jar manually by jar -cvf mysample.jar com/mypackage/*

  4. the final jar contain all classes and resource of my project in side mypackage.

then I add mysample.jar into another application say testapp, here I put the JAR in asset folder(because of layout )and add to build path. And also I configure the build path

In this application I call the myfile.class from mysample.jar which is needed to load the layout from that JAR.

The problem is here it doesn't see resource under the JAR file it only see the resource in current project res folder and though NULL pointer Exception

But it calls the R.java from JAR file. Ad also i tried to put xmlns:custom="http://schemas.android.com/apk/res-auto" in my manifest file it is also not working. I hope I exactly come to close this issue, it may be a resource mapping problem. do you have any idea to resolve this?

like image 887
Mr.Cool Avatar asked Feb 03 '26 12:02

Mr.Cool


1 Answers

You can't store resources in jar. It's possible, but it's tricky, so for now Android provides just Android Library. Otherwise you can use compiled source code and resourses separately (by providing resources ID's to your library)

like image 81
Taras Avatar answered Feb 05 '26 02:02

Taras



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!