2013-10-21 74 views
0

我有一個gradle項目。 這個項目取決於android sdk。 現在我想爲這個項目生成一個jar庫,以便在其他android應用程序中使用。將庫構建爲jar文件

我有這樣的文件的gradle:

apply plugin: 'java' 

dependencies { 
    Properties props = new Properties() 
    props.load(new FileInputStream("./local.properties")) 
    compile files(props.get("sdk.dir")+'/platforms/android-18/android.jar') 
} 

是compilig罰款和生成jar文件。我可以將它導入到我的android應用程序項目(同時嘗試eclipse和android studio),並且ide可以從我的庫中看到類並編譯爲evryting到apk。 (該庫已標記爲輸出)。其他庫(例如TestFlightLib.jar)工作正常。

的問題出現在運行時,它不能從我的圖書館找到類:

java.lang.NoClassDefFoundError: com/solvek/test/MyClass 
     at com.example.jartest.MainActivity.onCreate(MainActivity.java:29) 
     at android.app.Activity.performCreate(Activity.java:5133) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389) 
     at android.app.ActivityThread.access$600(ActivityThread.java:153) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5289) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:525) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.solvek.test.MyClass" on path: DexPathList[[zip file "/data/app/com.example.jartest-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.jartest-2, /vendor/lib, /system/lib]] 
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)              

回答

0

我用「機器人庫」 gradle這個插件,而不是「Java」的解決了這個。它不會在運行時崩潰,但IDE(Android Studio中)不會從我的圖書館認識的類(但它是建立罰款)

我添加了這樣的任務到搖籃文件:

task jar(type: Jar) { 
    from android.sourceSets.main.java 
} 

解決方案被發現here

0

爲Eclipse: -

如果你已經正確地創建了罐子,做以下操作: -

  1. 拷貝到您的項目的libs文件夾的JAR文件。
  2. 通過進入項目屬性並選擇java構建路徑將此項目添加爲jar。
  3. 清理項目並構建。

對於創建jar,你只能導出項目的源代碼,沒有別的。像drawables,values,layouts等所有其他資源必須相應地複製到您的項目資源中。

告訴我,如果它的工作,如果需要幫助告訴我。