Android 如何从源代码构建股票安卓4.3浏览器?

Android 如何从源代码构建股票安卓4.3浏览器?,android,browser,android-source,Android,Browser,Android Source,类似于,如何从源代码构建股票Android 4.3浏览器应用程序 当我在Eclipse中导入源代码()的签出时,我无法构建它,因为依赖内部和隐藏的Android API会导致很多错误。我第一次尝试使用另一个问题()链接到的Ievgenii Nazaruk的指令,但我陷入了第二部分,因为我的Nexus 7(2013)平板电脑的framework.jar不包含classes.dex条目。Ievgenii Nazaruk解决了大部分问题()。我只是更新了他关于运行安卓4.3的Nexus7(2013)平

类似于,如何从源代码构建股票Android 4.3浏览器应用程序

当我在Eclipse中导入源代码()的签出时,我无法构建它,因为依赖内部和隐藏的Android API会导致很多错误。我第一次尝试使用另一个问题()链接到的Ievgenii Nazaruk的指令,但我陷入了第二部分,因为我的Nexus 7(2013)平板电脑的
framework.jar
不包含
classes.dex
条目。

Ievgenii Nazaruk解决了大部分问题()。我只是更新了他关于运行安卓4.3的Nexus7(2013)平板电脑的说明,以及最新版本的

要开始,请执行以下操作:

  • 确保您已经安装了带有最新ADT插件和最新Android SDK的Eclipse。在撰写本文时,最新的Android SDK版本是22.3

    Mac用户提示:有一个Android SDK软件包,可以安装:
    brew安装android sdk

  • 在Eclipse中,打开Android SDK管理器并安装Android 4.3(API 18)SDK平台。还可以在“Extras”下安装Android支持库

  • 使用USB电缆将Android 4.3设备连接到您的计算机上,如果尚未安装,请进行设置。通过运行:
    adb设备
  • 安装。在撰写本文时,
    smali
    /
    baksmali
    的当前版本是2.0.2
  • 安装。自制用户:
    brew安装dex2jar
  • 安装。自制用户:
    brew安装bbe
在下面的内容中,我使用
$ANDROID_HOME
来引用ANDROID SDK的位置

访问Android的内部/隐藏API
$android\u HOME/platforms/android-18/
中的
android.jar
去掉了所有内部android类和隐藏API,其中一些是构建浏览器所需的。我们将按照Ievgenii-Nazaruk的说明创建一个定制的Android SDK平台,该平台包含所有内部/隐藏的API

  • 创建一个临时文件夹并将
    cd
    放入其中

  • 在临时文件夹中创建
    framework
    文件夹,并从设备的
    /system/framework
    文件夹中复制
    bouncycastle.odex
    core.odex
    ext.odex
    framework.odex

    mkdir framework && cd framework adb pull /system/framework/bouncycastle.odex adb pull /system/framework/core-junit.odex adb pull /system/framework/core.odex adb pull /system/framework/ext.odex adb pull /system/framework/framework.odex cd .. 这些命令将在临时文件夹中创建一个
    out/
    文件夹

  • 我们将使用
    smali
    创建一个DEX文件,但首先我们需要删除
    out/
    目录中生成的一些smali文件,因为smali要处理的文件太多(“意外的顶级异常:org.jf.util.ExceptionWithContext:未签名的短值超出范围”):

  • 现在我们想创建我们定制的安卓4.3平台的
    Android.jar
    。要做到这一点,我们需要一些来自真实Android 4.3平台的
    Android.jar

    mkdir android_jar && cd android_jar unzip $ANDROID_HOME/platforms/android-18/android.jar resources.arsc unzip $ANDROID_HOME/platforms/android-18/android.jar 'com/google/common/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'java/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/net/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/security/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/sql/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/xml/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'org/apache/http/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'res/*' unzip ../android-dex2jar.jar
  • 在文本编辑器中打开
    $ANDROID\u HOME/platforms/ANDROID-18-custom/build.prop
    。您需要更改两行:

    ro.build.version.sdk=-18 ro.build.version.release=4.3-custom 跑步
    现在来看有趣的部分。首先清理项目,然后作为->Android应用程序运行。你现在应该在你的Android 4.3设备上有一个功能齐全的股票浏览器应用程序

    如果你要引用某人的话,那么你可能应该链接到原来的帖子:) d2j-dex2jar android.dex mkdir android_jar && cd android_jar unzip $ANDROID_HOME/platforms/android-18/android.jar resources.arsc unzip $ANDROID_HOME/platforms/android-18/android.jar 'com/google/common/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'java/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/net/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/security/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/sql/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'javax/xml/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'org/apache/http/*' unzip $ANDROID_HOME/platforms/android-18/android.jar 'res/*' unzip ../android-dex2jar.jar cp -R $ANDROID_HOME/platforms/android-18 $ANDROID_HOME/platforms/android-18-custom unlink $ANDROID_HOME/platforms/android-18-custom/android.jar jar cf $ANDROID_HOME/platforms/android-18-custom/android.jar * ro.build.version.sdk=-18 ro.build.version.release=4.3-custom unzip com.android.ide.eclipse.adt_*.jar mv com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class.bak bbe -e 's~internal/**~Internal/**~' -o com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class.bak jar uf com.android.ide.eclipse.adt_*.jar com/android/ide/eclipse/adt/internal/project/AndroidClasspathContainerInitializer.class