2016-12-22 2 views
0

우리는 Android-support-v7-AppCompat 및 Google-Play-Services_lib 라이브러리를 추가하여 업그레이드해야하는 Android 프로젝트가 있습니다. 앤트 스크립트 :Ant 프로젝트에 AppCompat 및 GooglePlayServices 라이브러리 추가

<property name="android-support-v7-appcompat-folder" value="../android-support-v7-appcompat"/> 
<property name="android-support-v7-appcompat-src-folder" value="${android-support-v7-appcompat-folder}/src"/> 
<property name="android-support-v7-appcompat-resource-folder" value="${android-support-v7-appcompat-folder}/res"/> 
<property name="android-support-v7-appcompat-libs-folder" value="${android-support-v7-appcompat-folder}/libs"/> 

<property name="google-play-services-folder" value="../google-play-services_lib"/> 
<property name="google-play-services-src-folder" value="${google-play-services-folder}/src"/> 
<property name="google-play-services-resource-folder" value="${google-play-services-folder}/res"/> 
<property name="google-play-services-libs-folder" value="${google-play-services-folder}/libs"/> 

<target name="compile" depends="resource-src, aidl"> 
     <path id="project.javac.classpath"> 
      <path refid="project.all.jars.path" /> 
      <path refid="tested.project.classpath" /> 
     </path> 
    <javac encoding="ascii" target="1.7" source="1.7" 
      debug="true" extdirs="" includeantruntime="false" 
      destdir="${out-classes}" 
      bootclasspath="${android.jar}"> 
     <src path="${source-folder}" /> 
     <src path="${kxml-folder}" /> 
     <src path="${jzlib-folder}" /> 
     <src path="${bouncycastle-folder}" /> 
     <src path="${gen-folder}" /> 
     <src path="${android-support-v7-appcompat-src-folder}" /> 
     <src path="${google-play-services-src-folder}" /> 
     <classpath> 
      <fileset dir="${android-support-v7-appcompat-libs-folder}" includes="*.jar"/> 
      <fileset dir="${google-play-services-libs-folder}" includes="*.jar"/> 
      <fileset dir="${external-libs-folder}" includes="*.jar"/> 
      <fileset dir="${native-libs-folder}" includes="**/*.jar"/> 
      <pathelement path="${main-out-classes}"/> 
     </classpath> 
    </javac> 
</target> 

<target name="dex" depends="compile"> 
    <apply executable="${sdk.buildTools.dir}\dx.bat" failonerror="true" parallel="true"> 
     <arg value="--dex" /> 
     <arg value="--output=${intermediate-dex-location}" /> 
     <arg path="${out-classes-location}" /> 
     <fileset dir="${android-support-v7-appcompat-libs-folder}" includes="*.jar"/> 
     <fileset dir="${google-play-services-libs-folder}" includes="*.jar"/> 
     <fileset dir="${external-libs-folder}" includes="*.jar"/> 
     <fileset dir="${native-libs-folder}" includes="**/*.jar"/> 
    </apply> 
</target> 

및 Eclipse 프로젝트에 추가했습니다. Eclipse를 사용하여 응용 프로그램을 설치하고 실행할 수 있습니다. 그러나 .apk는 우리가 설치할 수있는 Ant에 의해 만들어졌습니다.

java.lang.RuntimeException가 : 후 우리가 로그 캣에서 제외 직면 설치된 응용 프로그램을 열려고 자바 : 활동 ComponentInfo {com.my.android/com.my.android.Program}을 (를) 시작할 수 없습니다. android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2233) android.app.ActivityThread.access $ 800 에서 android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2184) (ActivityThread.java에서 lang.NullPointerException : 135) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1196) android.os.Handler. dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5001) at java.lang.reflect.Method. invokeNative (네이티브 메소드) at java.lang.reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) at com.android android.support.v7.app에서 java.lang.NullPointerException이 : .internal.os.ZygoteInit.main dalvik.system.NativeStart.main (기본 방법)에서 (ZygoteInit.java:601)

는에 의해 발생. AppCompatDelegateImplV7.createSubDecor (AppCompatDelegateImplV7.java:457) android.support.v7에서 android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:244) 에서 android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor (AppCompatDelegateImplV7.java:279)에서 . app.AppCompatActivity.setContentView (AppCompatActivity.java:114) com.my.android.Program.onCreate (Program.java:180) at android.app.Activity.performCreate (Activity.java:5231) at android. app.Instrumentation.callActivityOnCreate android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2148)에서 (Instrumentation.java:1087)

주어진 라인에서

우리는 setContentView (splash)를 호출합니다; 이미지 파일이 존재 함을 확인하고 Bitmap과 ImageView를 올바르게 초기화했습니다.

ImageView splash = new ImageView(this); 
splash.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 

splash.setBackgroundColor(Color.BLACK); 
String splashUri = getSplashScreenUri(); 
Bitmap splashBitmap = ImageUtils.getImage(splashUri); 
splash.setImageBitmap(splashBitmap); 
splash.setScaleType(ScaleType.FIT_XY); 

DebugLog.log("splashUri is " + splashUri); //correct path 
DebugLog.log("splashBitmap is null " + (null == splashBitmap)); //false 
DebugLog.log("splashBitmap height " + splashBitmap.getHeight()); //correct height 

setContentView(splash); //line 180 

개미 스크립트에 대해 우리가 놓친 부분은 무엇입니까?

답변

0

blog을 확인하고 뭔가 빠졌는지 확인할 수 있습니다.

놀이방 도서관은 포함시킬 필요 자원을 가지고 있기 때문에 android.library.reference.1=../google-play-services_lib 같은 파일을 당신의 project.properties에 포함되어야한다. 그러나 Google은 더 이상 Play 라이브러리에 build.xml을 제공하지 않으므로 Ant가 빌드에 실패합니다.android update lib-project --path <playlib_path>을 실행하여 재생 라이브러리에서 build.xml을 생성 할 수 있습니다.

일반적으로, 당신의 오류는 이전 작업의 onCreate() 메소드 내 super.onCreate()를 호출하기 getWindow().getDecorView()에 대한 호출을 추가하여 고정 될 수있다. 이전에보고 된 herefixed bug에서 확인할 수 있습니다.

+0

bu 참조 경로뿐만 아니라 리소스에서 R, Manifest.java 파일을 생성하여 google-play-services_lib 및 android-support-v7-appcompat의 리소스를 이미 포함 시켰습니다. 따라서이 두 프로젝트에 대해 build.xml을 생성 할 필요가 없습니다. 두 번째 제안을 따르려고했지만 여전히 같은 오류가 발생합니다. ( – user809808