简体   繁体   中英

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?

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM