我有一个问题来获取android:apk的描述:我必须在java中获取它,以便在加载apk时将此信息放入我的数据库中。我使用aapt -l a x.apk |来编码引用grep android:description。 在解压缩的apk中,这个引用是在manifest.xml中访问值为fr的strings.xml(示例为value-
java -jar \ apktool.jar d \ x.apk
示例:
<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="330" android:versionName="4.0.3-239410" package="com.google.android.talk"
xmlns:android="http://schemas.android.com/apk/res/android">
…
<application android:label="@string/app_label" android:icon="@mipmap/ic_launcher_google_talk" android:name="TalkApp" android:taskAffinity="android.task.googletalk" android:hardwareAccelerated="true">
…
<service android:name="com.google.android.videochat.VideoChatService" android:description="@string/videochatservice_description"> android:permission="com.google.android.talk.permission.VIDEO_CHAT_SERVICE">
</service>
…
</application>
</manifest>
然后在res \ values-fr \ strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
…
<string name="videochatservice_description">"Talk Service."</string>
…
</resources>
我的目标是在java中获取字符串“Talk Service”。
到现在为止,我认为不使用apktool可以做我想做的事。如果有人有更快的解决方案,我会看看它。假设我们使用这个apktool命令:java -jar \ apktool.jar d .apk使用ProcessBuilder。获取信息的最简单方法是什么?我使用sax来解析xml。
答案 0 :(得分:0)
你所要求的并不完全清楚。如果您只想从资源中读取字符串值,则可以执行此操作。
String s = getResources().getString(R.string.videochatservice_description);