2016-12-22 3 views
0

У нас есть проект Android, который следует обновить, добавив библиотеки Android-support-v7-AppCompat и Google Play-Services_lib. Мы добавили их в Ant сценария:Добавить библиотеки AppCompat и GooglePlayServices в проект Ant

<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, мы можем просто установить. После того, как попытаться открыть установленное приложение мы обращенную с исключением в LogCat:

java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {com.my.android/com.my.android.Program}: Java. lang.NullPointerException на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2184) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2233) в android.app.ActivityThread.access $ 800 (ActivityThread.java : 135) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1196) at android.os.Handler. dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:136) на android.app.ActivityThread.main (ActivityThread.java:5001) на java.lang.reflect.Method. invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:515) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) at com.android .internal.os.ZygoteInit.main (ZygoteInit.java:601) при dalvik.system.NativeStart.main (метод Native)

Вызванный: java.lang.NullPointerException на android.support.v7.app. AppCompatDelegateImplV7.createSubDecor (AppCompatDelegateImplV7.java:457) на android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor (AppCompatDelegateImplV7.java:279) на android.support.v7.app.AppCompatDelegateImplV7.setContentView (AppCompatDelegateImplV7.java:244) на android.support.v7. app.AppCompatActivity.setContentView (AppCompatActivity.java:114) на com.my.android.Program.onCreate (Program.java:180) на android.app.Activity.performCreate (Activity.java:5231) на android. app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2148)

В данной строке мы вызываем setContentView (всплеск); Мы проверили, что файл изображения присутствует в утверждениях, а 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 

Что мы пропустили для Ant-скрипта?

ответ

0

Вы можете проверить это blog и проверить, не пропустили ли вы что-то.

библиотека Слушать должен быть включен в вашем project.properties файл как android.library.reference.1=../google-play-services_lib , потому что есть ресурсы, которые должны быть включены. Тем не менее, Ant выйдет из строя, потому что Google больше не предоставляет build.xml для библиотеки Play.Вы можете создать build.xml в библиотеке Play, запустив android update lib-project --path <playlib_path>.

Обычно, ваша ошибка может быть исправлена ​​путем добавления вызова getWindow().getDecorView() до вызова super.onCreate() в onCreate() методы Activity в. Вы можете проверить его here и в этом fixed bug, о котором сообщалось ранее.

+0

Я уже включил ресурсы из google-play-services_lib и android-support-v7-appcompat, а не только путь ссылки bu, но запустил aapt.exe с генерацией файлов R, Manifest.java из ресурсов. Поэтому не нужно создавать build.xml для этих двух проектов. Я попытался следовать вашему второму предложению, но я все еще сталкиваюсь с той же ошибкой :( – user809808

Смежные вопросы