2012-07-19 6 views
0

나는 비디오를 캡처 한 다음 Kaltura 사이트에 업로드하는 Android API 레벨 10 애플리케이션을 작성 중입니다. Kaltura가 Java 클라이언트 라이브러리 (here)를 제공하고 "Kaltura Android SDK 참조 응용 프로그램 구현 가이드"라는 제목의 문서에서 Java 클라이언트 라이브러리를 사용한다고 말하면서 간단해야합니다. (here)Android 용 Kaltura Java 클라이언트 라이브러리

Java 클라이언트 라이브러리 "libs"폴더에 포함 된 모든 빌드 참조를 포함하여 Kaltura가 (첫 번째 링크에서) 보여주는 Java 클라이언트 라이브러리 예제와 동일한 예비 Kaltura 업로드 클래스를 작성한 후

W/dalvikvm(8232): VFY: array-length on non-array 
W/dalvikvm(8232): VFY: rejecting opcode 0x21 at 0x000a 
W/dalvikvm(8232): VFY: rejected Lorg/apache/log4j/config/PropertySetter;.getPropertyDescriptor (Ljava/lang/String;)Ljava/beans/PropertyDescriptor; 
W/dalvikvm(8232): Verifier rejected class Lorg/apache/log4j/config/PropertySetter; 
W/dalvikvm(8232): Exception Ljava/lang/VerifyError; thrown while initializing Lorg/apache/log4j/LogManager; 
W/dalvikvm(8232): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Lcom/kaltura/client/KalturaClientBase; 
D/AndroidRuntime(8232): Shutting down VM 
W/dalvikvm(8232): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
E/AndroidRuntime(8232): FATAL EXCEPTION: main 
E/AndroidRuntime(8232): java.lang.ExceptionInInitializerError 
E/AndroidRuntime(8232):  at com.mysite.myapp.kaltura.KalturaUploader.<init>(KalturaUploader.java:32) 
E/AndroidRuntime(8232):  at com.mysite.myapp.storage.LoginActivity.invokeKaltura(LoginActivity.java:105) 
E/AndroidRuntime(8232):  at com.mysite.myapp.storage.LoginActivity.access$2(LoginActivity.java:102) 
E/AndroidRuntime(8232):  at com.mysite.myapp.storage.LoginActivity$3.onClick(LoginActivity.java:81) 
E/AndroidRuntime(8232):  at android.view.View.performClick(View.java:2506) 
E/AndroidRuntime(8232):  at android.view.View$PerformClick.run(View.java:9112) 
E/AndroidRuntime(8232):  at android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime(8232):  at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(8232):  at android.os.Looper.loop(Looper.java:130) 
E/AndroidRuntime(8232):  at android.app.ActivityThread.main(ActivityThread.java:3835) 
E/AndroidRuntime(8232):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(8232):  at java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(8232):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864) 
E/AndroidRuntime(8232):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
E/AndroidRuntime(8232):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(8232): Caused by: java.lang.ExceptionInInitializerError 
E/AndroidRuntime(8232):  at org.apache.log4j.Logger.getLogger(Logger.java:118) 
E/AndroidRuntime(8232):  at com.kaltura.client.KalturaClientBase.<clinit>(KalturaClientBase.java:45) 
E/AndroidRuntime(8232):  ... 15 more 
E/AndroidRuntime(8232): Caused by: java.lang.VerifyError: org.apache.log4j.config.PropertySetter 
E/AndroidRuntime(8232):  at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:684) 
E/AndroidRuntime(8232):  at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647) 
E/AndroidRuntime(8232):  at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:544) 
E/AndroidRuntime(8232):  at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:440) 
E/AndroidRuntime(8232):  at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:476) 
E/AndroidRuntime(8232):  at  org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471) 
E/AndroidRuntime(8232):  at org.apache.log4j.LogManager.<clinit>(LogManager.java:125) 
E/AndroidRuntime(8232):  ... 17 more 
I/Process(8232): Sending signal. PID: 8232 SIG: 9 

: 안드로이드가 이미 가지고 있기 때문에 JUnit을 제외하고 내 프로젝트에 앱이 새로운 KalturaClient 개체의 건설 중에 java.lang.VerifyError를 던졌습니다 (실패 빌드 자신의 JUnit 원인 포함) 자신의 JUnit의 그래서 Log4J가 추가 래퍼 클래스 (code.google.com/p/android-logging-log4j)없이 Android에서 정확히 작동하지 않기 때문에 위와 같은 현상이 발생했을 것입니다. Android의 로깅 기능을 사용하려면 Kaltura를 odify 하시겠습니까?

Java 클라이언트가 작성되지 않았지만 대신 생성되므로, android-logging-log4j를 지원하는 코드를 수동으로 편집하는 것이 순진 할 것이라고 나는 읽었습니다 (Kaltura의 문서에서). 또한, Eclipse에서 Kaltura Java Client 소스를 열면 빌드 경로에서 누락 된 몇 가지 클래스가 있습니다. 내가 처음 발견 한 것은 sun.misc.BASE64Encoder ... 안드로이드는 자신의 Base64Encoder를 가지고 있으며 호환성이 있습니까?

누구에게 내가 무엇을해야하는지에 대한 제안이 있습니까? 아무도 Android에서 실행중인 Kaltura Java 클라이언트 라이브러리를 얻었습니까? 두 번째 링크에 샘플 애플리케이션은 어디에 설명되어 있습니까? 보조 노트로

, 내 빌드 경로에 제공된 JAR의 포함 프로젝트 빌드 할 때 나는 또한 내 이클립스 콘솔에서 이러한 많은 메시지를 참조하십시오 도움에 미리

[2012-07-18 22:44:37 - MyApp] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class 
(org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory$1) that doesn't come with an 
associated EnclosingMethod attribute. This class was probably produced by a 
compiler that did not target the modern .class file format. The recommended 
solution is to recompile the class from source, using an up-to-date compiler 
and without specifying any "-target" type options. The consequence of ignoring 
this warning is that reflective operations on this class will incorrectly 
indicate that it is *not* an inner class. 

감사합니다!


편집 : Kaltura 코드를 찾아,이 생성 된 라이브러리의 결과이어야 무서운 것들 ...

// =================================================================================================== 
//       _ __  _ _ 
//       | |/ /__ _| | |_ _ _ _ _ __ _ 
//       | ' </ _` | | _| || | '_/ _` | 
//       |_|\_\__,_|_|\__|\_,_|_| \__,_| 
// 
// This file is part of the Kaltura Collaborative Media Suite which allows users 
// to do with audio, video, and animation what Wiki platfroms allow them to do with 
// text. 
// 
// Copyright (C) 2006-2011 Kaltura Inc. 
// 
// This program is free software: you can redistribute it and/or modify 
// it under the terms of the GNU Affero General Public License as 
// published by the Free Software Foundation, either version 3 of the 
// License, or (at your option) any later version. 
// 
// This program is distributed in the hope that it will be useful, 
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
// GNU Affero General Public License for more details. 
// 
// You should have received a copy of the GNU Affero General Public License 
// along with this program. If not, see <http://www.gnu.org/licenses/>. 
// 
// @ignore 
// =================================================================================================== 
package com.kaltura.client.enums; 

/** 
* This class was generated using generate.php 
* against an XML schema provided by Kaltura. 
* @date Wed, 18 Jul 12 07:10:33 -0400 
* 
* MANUAL CHANGES TO THIS CLASS WILL BE OVERWRITTEN. 
*/ 
public enum KalturaFlavorReadyBehaviorType implements KalturaEnumAsInt { 
    NO_IMPACT (0), 
    REQUIRED (1), 
    OPTIONAL (2), 
    INHERIT_FLAVOR_PARAMS (0); 

    public int hashCode; 

    KalturaFlavorReadyBehaviorType(int hashCode) { 
     this.hashCode = hashCode; 
    } 

    public int getHashCode() { 
     return this.hashCode; 
    } 

    public static KalturaFlavorReadyBehaviorType get(int hashCode) { 
     switch(hashCode) { 
      case 0: return NO_IMPACT; 
      case 1: return REQUIRED; 
      case 2: return OPTIONAL; 
      case 0: return INHERIT_FLAVOR_PARAMS; 
      default: return NO_IMPACT; 
     } 
    } 
} 

어떻게가이 코드를 컴파일 않았다 발견? 심지어 합법적 인 Java가 아닙니다. 아마도 100 개의 수업이있을 것입니다. 대부분이 상단에 "이 자동 생성 된"알림이 있습니다. 다른 클래스도 이와 같은 바보 같은 문제가 있습니다 (KalturaNullableBoolean).

현재로서는 Java 클라이언트 라이브러리가 존재하지 않는 것처럼 보일 것입니다. 루비 클라이언트 라이브러리가 존재하며 과거에 안드로이드에서 JRuby로 큰 성공을 거두었습니다. 우리 애플리케이션은 오랜 시간이 걸리는 대용량 파일 만 업로드하기 때문에 오버 헤드가 크게 증가하지 않아야합니다. 공장. 우리는 포함 된 JRuby JAR 덕분에 .APK를 받아 들여야 만합니다 ...

그들은 수백 개의 Java 클래스 대신 2 개의 Ruby 스크립트로 모든 것을 쌓아 놓은 것은 물론 ... 모두 제거하기가 더 쉽습니다. 호환되지 않는 기능이 있다면 Eclipse 프로젝트가 더 이상 Kaltura Java 소스 파일의 정글이되지 않습니다. : D

감사합니다.

답변

0

Kaltura의 API가 업데이트되면 클라이언트가 실제로 자동으로 생성되고 서버는 클라이언트의 최신 기능을 제공하기 위해 모든 업데이트를 생성합니다. 현재 Kaltura의 클라이언트 libs와 발전기에 대한 자세한 내용을보실 수 있습니다 : http://knowledge.kaltura.com/adding-new-kaltura-api-client-library-generator

모든 패치 또는 클라이언트 라이브러리 환영 개선 할 생각 수정, 여기 또는 Kaltura.org에 문제가 스레드에 첨부 해 주시기 바랍니다.

현재 Java 클라이언트는 아직 안드로이드와 호환되지 않으며 순수한 Java 사용을 목표로합니다. Android 특정 버전을 채택하고 작성하는 작업이 있으며 개선을위한 제안이나 패치는 크게 감사하겠습니다.

+0

@ Zohain.Babin이 스레드에 대한 의견이 늦어지는 것을 알고 있습니다. 난 그냥 kaltura SDK를 사용하기 시작하고 그것은 단지 나를 bewilders. 그것은 kaltura 구성을 제공합니다. 그리고 ashctask evry 지금 사용하는 Kalturaclient 클래스를 제공합니다. 라이브러리를 만드는 동안 multithreading은 시골에 보관된다는 것을 의미합니다 .. 나는 kaltura를 사용하는 방법을 알고 싶습니다. 개조 및 기타 도서관. 귀하의 소중한 경험을 공유해주십시오. kaltura develpomen – DevKRos

+0

@saltmiser – DevKRos