2012-02-24 100 views
0

我想从AndroidManifest.xml中获取versionName,versionCode和包名。 这是我到目前为止有:php从androidmanifest.xml获取manifest属性

// Load AndroidManifest.xml 
$xml = simplexml_load_string($manifest); 

//print_r($xml); 

list(,$versionCode) = each($xml->xpath('/manifest/@android:versionCode')); 
list(,$versionName) = each($xml->xpath('/manifest/@android:versionName')); 
list(,$package) = each($xml->xpath('(/manifest/@package)')); 

echo "versionCode: ".$versionCode.", versionName: ".$versionName.", package:".$package."\n"; 

我不知道是否有更好的方式来获得这些元素的值?

样品的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest android:versionCode="1" android:versionName="1.0" package="com.example.bluetoothchat" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="11" /> 
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 
    <uses-permission android:name="android.permission.BLUETOOTH" /> 
    <application android:label="@string/app_name"> 
     <activity android:label="@string/app_name" android:name=".BluetoothChat" android:configChanges="keyboardHidden|orientation"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 
     <activity android:label="@string/select_device" android:name=".DeviceListActivity" android:configChanges="keyboardHidden|orientation" /> 
    </application> 
</manifest> 
+0

您是如何打开apk文件以阅读清单的? – iSun 2012-09-17 16:29:57

+0

如何获取app_name,因为它是来自“Strings.xml”的引用文件 – twlkyao 2014-01-07 13:23:04

+0

@iSun AndroidManifest.xml使用[AXMLPrinter2.jar](https://code.google.com/p/android4me/downloads/详细信息?name = AXMLPrinter2.jar&can = 2&q =),首先解压缩apk文件,然后进入解压目录并运行java -jar AXMLPrinter2.jar AndroidManifest.xml。 @twlkyao我没有必要获得应用程序名称,所以没有答案抱歉! – t0x13 2014-02-06 05:23:15

回答

0

检查,这是预期的结果

<?php 
error_reporting(E_ERROR | E_PARSE); 
$dom = new DOMDocument(); 
$dom->load('AndroidManifest.xml'); 
$xml = simplexml_import_dom($dom); 
$versionName = $xml->xpath('/manifest/@android:versionName'); 
$versionCode =$xml->xpath('/manifest/@android:versionCode'); 
$package = $xml->xpath('/manifest/@package'); 
echo "VERSION NAME :".$versionName[0]->versionName."<br/>"; 
echo "VERSION CODE :".$versionCode[0]->versionCode."<br/>"; 
echo "VERSION PAC :".$package[0]->package."<br/>"; 
?> 
+0

感谢张贴..不幸的是,它失败了:** PHP警告:DOMDocument :: load():I/O警告:未能加载外部实体** – t0x13 2012-02-24 19:21:15

+0

@ t0x13检查出来,现在它不会通过Warning错误,,,在此之前,你需要有你的清单文件在相同的目录.. – 2012-02-25 04:11:54

+0

它不会抛出一个错误了..但是,xpath似乎没有在不同的机器上正常工作。我的代码现在不工作。它可以获取包,但versionCode和versionName会返回emtpy。它可能是由于不同版本的PHP? – t0x13 2012-03-02 17:27:39