如何从apk中得到version code
来源:互联网 发布:域名邮箱怎么弄 编辑:程序博客网 时间:2024/05/27 06:12
Android中用Package 这个类来代表一个apk。
final Package pkg = parseBaseApk(baseApk, assets, flags);
我们Package 是由parseBaseApk 来赋值的,我们看看parseBaseApk是如何得到version code
可以看到1389行的实现com.android.internal.R.styleable.AndroidManifest_versionCode
原来version code是R文件中的一个常量
String[] outError) throws XmlPullParserException, IOException {
1356 final boolean trustedOverlay = (flags & PARSE_TRUSTED_OVERLAY) != 0;
1357
1358 AttributeSet attrs = parser;
1359
1360 mParseInstrumentationArgs = null;
1361 mParseActivityArgs = null;
1362 mParseServiceArgs = null;
1363 mParseProviderArgs = null;
1364
1365 final String pkgName;
1366 final String splitName;
1367 try {
1368 Pair<String, String> packageSplit = parsePackageSplitNames(parser, attrs, flags);
1369 pkgName = packageSplit.first;
1370 splitName = packageSplit.second;
1371 } catch (PackageParserException e) {
1372 mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME;
1373 return null;
1374 }
1375
1376 int type;
1377
1378 if (!TextUtils.isEmpty(splitName)) {
1379 outError[0] = "Expected base APK, but found split " + splitName;
1380 mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME;
1381 return null;
1382 }
1383
1384 final Package pkg = new Package(pkgName);
1385 boolean foundApp = false;
1386
1387 TypedArray sa = res.obtainAttributes(attrs,
1388 com.android.internal.R.styleable.AndroidManifest);
1389 pkg.mVersionCode = pkg.applicationInfo.versionCode = sa.getInteger(
1390 com.android.internal.R.styleable.AndroidManifest_versionCode, 0);
1391 pkg.baseRevisionCode = sa.getInteger(
1392 com.android.internal.R.styleable.AndroidManifest_revisionCode, 0);
1393 pkg.mVersionName = sa.getNonConfigurationString(
1394 com.android.internal.R.styleable.AndroidManifest_versionName, 0);
1395 if (pkg.mVersionName != null) {
1396 pkg.mVersionName = pkg.mVersionName.intern();
1397 }
}
final Package pkg = parseBaseApk(baseApk, assets, flags);
我们Package 是由parseBaseApk 来赋值的,我们看看parseBaseApk是如何得到version code
可以看到1389行的实现com.android.internal.R.styleable.AndroidManifest_versionCode
原来version code是R文件中的一个常量
String[] outError) throws XmlPullParserException, IOException {
1356 final boolean trustedOverlay = (flags & PARSE_TRUSTED_OVERLAY) != 0;
1357
1358 AttributeSet attrs = parser;
1359
1360 mParseInstrumentationArgs = null;
1361 mParseActivityArgs = null;
1362 mParseServiceArgs = null;
1363 mParseProviderArgs = null;
1364
1365 final String pkgName;
1366 final String splitName;
1367 try {
1368 Pair<String, String> packageSplit = parsePackageSplitNames(parser, attrs, flags);
1369 pkgName = packageSplit.first;
1370 splitName = packageSplit.second;
1371 } catch (PackageParserException e) {
1372 mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME;
1373 return null;
1374 }
1375
1376 int type;
1377
1378 if (!TextUtils.isEmpty(splitName)) {
1379 outError[0] = "Expected base APK, but found split " + splitName;
1380 mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME;
1381 return null;
1382 }
1383
1384 final Package pkg = new Package(pkgName);
1385 boolean foundApp = false;
1386
1387 TypedArray sa = res.obtainAttributes(attrs,
1388 com.android.internal.R.styleable.AndroidManifest);
1389 pkg.mVersionCode = pkg.applicationInfo.versionCode = sa.getInteger(
1390 com.android.internal.R.styleable.AndroidManifest_versionCode, 0);
1391 pkg.baseRevisionCode = sa.getInteger(
1392 com.android.internal.R.styleable.AndroidManifest_revisionCode, 0);
1393 pkg.mVersionName = sa.getNonConfigurationString(
1394 com.android.internal.R.styleable.AndroidManifest_versionName, 0);
1395 if (pkg.mVersionName != null) {
1396 pkg.mVersionName = pkg.mVersionName.intern();
1397 }
}
0 0
- 如何从apk中得到version code
- Android 逆向apk--从apk中得到java源码
- 得到手机中apk
- 如何从一个APK中启动另一个APK?
- Manifesr中Version code和Version name
- 如何从backing bean中得到当前页面的URL?
- 如何从Faces Context中得到当前的view id?
- 如何从文件路径中得到文件名及其扩展名
- C#中,如何从Image对象得到FileStream
- C++ 如何从指针中得到类型或引用
- Android无SD卡如何从内存中安装apk?
- 如何从Google play商店中下载apk文件
- 如何从UIView 得到 UIViewController
- 如何实现APK的反编译得到APK的源码?
- 如何实现APK的反编译得到APK的源码?
- 如何实现APK的反编译得到APK的源码?
- 从未安装APK中得到APK的Lable/ICON信息
- 从SOCKADDR 中得到IP
- java方法重写和super关键字
- TYZ 8/22 艰难的抉择(非常男女)
- 解决IE8以下浏览器不支持CSS属性opacity的问题
- Mybatis最入门---动态查询(choose,when,otherwise)
- dataguard 下修改主库的数据文件路径
- 如何从apk中得到version code
- 求圆和多边形的面积交
- 使用spark建立逻辑回归(Logistic)模型帮Helen找男朋友
- Linux学习笔记 --- Centos下安装cx_Oracle
- nefu 115 斐波那契的整除 找规律
- 127. Word Ladder(BFS)
- Mybatis最入门---动态查询(where,trim,set)
- SVG简单画图
- 在pycharm中使用anaconda