2014-11-20 6 views
3

장치에서 현재 Android 프로젝트를 실행하는 데 문제가 있습니다. 이 프로젝트는 (받는다는와) 아무하는 오류로 구축,하지만 난 실행할 때이 오류가 발생한다 :지원 라이브러리가 pom.xml에 포함되어있는 경우 Android 프로젝트가 장치에서 실행되지 않습니다.

:

package org.hello; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentTabHost; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.MenuInflater; 

public class MainActivity extends FragmentActivity { 
    private FragmentTabHost mTabHost; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); 
     mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 

     mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"), Tab1Fragment.class, null); 
     mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"), Tab2Fragment.class, null); 
     mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab3"), Tab3Fragment.class, null); 
     mTabHost.addTab(mTabHost.newTabSpec("tab4").setIndicator("Tab4"), Tab4Fragment.class, null); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle presses on the action bar items 
     switch (item.getItemId()) { 
      case R.id.action_search: 
       openSearch(); 
       return true; 
      case R.id.action_settings: 
       openSettings(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    public void openSearch() { 
     // 
    } 

    public void openSettings() { 
     // 
    } 
} 

내 pom.xml 파일은 즉 :

E/AndroidRuntime(12097): FATAL EXCEPTION: main 
E/AndroidRuntime(12097): Process: org.hello, PID: 12097 
E/AndroidRuntime(12097): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.hello/org.hello.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "org.hello.MainActivity" on path: DexPathList[[zip file "/data/app/org.hello-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.hello-1, /vendor/lib, /system/lib]] 
E/AndroidRuntime(12097):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2124) 
E/AndroidRuntime(12097):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 
E/AndroidRuntime(12097):  at android.app.ActivityThread.access$800(ActivityThread.java:139) 
E/AndroidRuntime(12097):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
E/AndroidRuntime(12097):  at android.os.Handler.dispatchMessage(Handler.java:102) 
E/AndroidRuntime(12097):  at android.os.Looper.loop(Looper.java:136) 
E/AndroidRuntime(12097):  at android.app.ActivityThread.main(ActivityThread.java:5086) 
E/AndroidRuntime(12097):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(12097):  at java.lang.reflect.Method.invoke(Method.java:515) 
E/AndroidRuntime(12097):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
E/AndroidRuntime(12097):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
E/AndroidRuntime(12097):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(12097): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.hello.MainActivity" on path: DexPathList[[zip file "/data/app/org.hello-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.hello-1, /vendor/lib, /system/lib]] 
E/AndroidRuntime(12097):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
E/AndroidRuntime(12097):  at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
E/AndroidRuntime(12097):  at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
E/AndroidRuntime(12097):  at android.app.Instrumentation.newActivity(Instrumentation.java:1084) 
E/AndroidRuntime(12097):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115) 
E/AndroidRuntime(12097):  ... 11 more 
W/ActivityManager( 916): Force finishing activity org.hello/.MainActivity 

내 MainActivity 클래스이다

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.hello</groupId> 
    <artifactId>basic-tabs</artifactId> 
    <version>0.1.0</version> 
    <packaging>apk</packaging> 

    <properties> 
     <!-- use UTF-8 for everything --> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <android.sdk.path>/home/kleber/android-sdk-linux/</android.sdk.path> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>com.google.android</groupId> 
      <artifactId>android</artifactId> 
      <version>4.1.1.4</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.google.android</groupId> 
      <artifactId>support-v4</artifactId> 
      <version>20.0.0</version> 
      <scope>system</scope> 
      <systemPath>/home/kleber/android-sdk-linux/extras/android/support/v4/android-support-v4.jar</systemPath> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>3.9.0-rc.1</version> 
       <configuration> 
        <sdk> 
         <platform>19</platform> 
        </sdk> 
        <deleteConflictingFiles>true</deleteConflictingFiles> 
        <undeployBeforeDeploy>true</undeployBeforeDeploy> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <showDeprecation>true</showDeprecation> 
        <showWarnings>true</showWarnings> 
        <executable>/home/kleber/jdk1.7.0_55/bin/javac</executable> 
        <fork>true</fork> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

MainActivity 클래스는 내 프로젝트의 올바른 디렉토리에 배치됩니다 (문제없이 실행되는 다른 프로젝트와 동일).

종속성 support-v4 (및이 라이브러리의 클래스 코드에 언급 된 모든 항목)을 제거하면이 프로젝트를 실행할 때 아무런 문제가 없습니다.

누구나 내가 여기에서 놓친 것을 볼 수 있습니까? https://github.com/klebermo/basic_tab2

답변

1

프로젝트를 청소하고 프로젝트의 디렉토리 아래 /gen/bin 폴더를 삭제 한 후 다시 작성 :

추신 : 문제와이 프로젝트는 이것이다!

+0

나는 (빌드 프로세스가 목표 디렉토리를 생성한다. 대신에 maven을 사용한다.) 작동하지 않는다. –

2

정확하게 기억할 수는 없지만 해당 support-v4 라이브러리를 사용하면 오류가 발생했으며 Maven을 사용하지 않았습니다. 그러나 당신이 정말로 도움이 절실히 필요하기 때문에 여기에 제 문제가 수정되었다고 생각하는 아이디어가 있습니다. Eclipse가있는 경우 (다른 IDE에 대해 잘 모르는 경우) 빌드 경로로 이동하여 주문 및 내보내기로 이동하여 support-v4 라이브러리에서 내보내기를 제거하거나 설정하십시오.

+0

Eclipse는 사용하지 않지만 코딩은 Atom이고 빌드/패키지/배포는 Maven입니다. 프로젝트에서 사용하는 라이브러리 중 일부는이 라이브러리에서만 사용할 수 있기 때문에 android suport 라이브러리를 제거 할 수 없습니다. –

+0

어떨까요? 위에 표시된 것 대신 다음 중 하나를 사용하십시오. 버전 20.0.0에서 지원 -v4 및 v13은 jar 대신 aar로 패키지됩니다. 이것을 사용하십시오 : aar -v4 지원 의존성 : https://github.com/mosabua/maven-android-sdk-deployer – mobilepotato7

+0

여기 내 시스템에서 라이브러리는 jar 파일로 패키지됩니다. –

1

프로젝트에 직접 병을 넣으려고했는지 확인해 보았습니까?

관련 문제