2016-12-22 2 views
0

Wir haben ein Android-Projekt, das durch Hinzufügen von Android-support-v7-AppCompat- und Google-Play-Services_lib-Bibliotheken aktualisiert werden sollte. Wir fügten sie zu Ant-Skript:Hinzufügen von AppCompat- und GooglePlayServices-Bibliotheken zu Ant-Projekt

<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> 

und Projekt Eclipse. Wir können unsere Anwendung ohne Probleme mit Eclipse installieren und ausführen. Aber .apk, die von Ant gebaut wurde, können wir einfach installieren. Nach versuchen installierte Software öffnen wir mit Ausnahme in logcat gegenüber:

java.lang.RuntimeException: Kann Aktivität ComponentInfo {com.my.android/com.my.android.Program} starten: java. lang.NullPointerException bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2184) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2233) bei android.app.ActivityThread.access $ 800 (ActivityThread.java : 135) um android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1196) bei android.os.Handler. dispatchMessage (Handler.java:102) um android.os.Looper.loop (Looper.java:136) um android.app.ActivityThread.main (ActivityThread.java:5001) um java.lang.reflect.Method. invokeNative (Native Methode) um java.lang.reflect.Method.invoke (Methode.java:515) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) bei com.android .internal.os.ZygoteInit.main (ZygoteInit.java:601) bei dalvik.system.NativeStart.main (native Methode)

verursacht durch: java.lang.NullPointerException bei android.support.v7.app. AppCompatDelegateImplV7.createSubDecor (AppCompatDelegateImplV7.java:457) bei android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor (AppCompatDelegateImplV7.java:279) bei android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:244) bei android.support.v7. app.AppCompatActivity.setContentView (AppCompatActivity.java:114) bei com.my.android.Program.onCreate (Program.java:180) um android.app.Activity.performCreate (Activity.java:5231) um android. app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087) bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2148)

In gegebener Zeile rufen wir setContentView (Splash); Wir überprüften, ob die Bilddatei in Geltendmachung und Bitmap und ImageView korrekt initialisiert war.

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 

Was haben wir für Ant-Skript vermisst?

Antwort

0

Sie können diese blog überprüfen und überprüfen, ob Sie etwas verpasst haben.

Die Play-Bibliothek hat in Ihrem project.properties aufgenommen werden Datei wie android.library.reference.1=../google-play-services_lib weil es Ressourcen, die einbezogen werden müssen. Ant schlägt jedoch fehl, da Google keine build.xml für die Play-Bibliothek mehr bereitstellt.Sie können build.xml in der Play-Bibliothek generieren, indem Sie android update lib-project --path <playlib_path> ausführen.

Normalerweise Ihr Fehler kann super.onCreate()onCreate() Methode der innerhalb der Aktivität vor dem Aufruf durch Hinzufügen eines Anrufs zu getWindow().getDecorView() fixiert werden. Sie können es überprüfen, here und in diesem fixed bug zuvor berichtet.

+0

Ich habe bereits Ressourcen von google-play-services_lib und android-support-v7-appcompat, nicht nur bu Referenzpfad, sondern durch Ausführen von aapt.exe mit dem Erzeugen von R, Manifest.java Dateien aus Ressourcen. Es ist also nicht notwendig, build.xml für diese beiden Projekte zu generieren. Ich habe versucht, Ihrem zweiten Vorschlag zu folgen, aber ich sehe immer noch mit demselben Fehler :( – user809808

Verwandte Themen