修改并重新签名的应用程序不会检索文件名

时间:2014-11-02 15:19:47

标签: android livecode jarsigner apktool

我已将旧Mac“更新”到Mac OS X 10.7.5。我在这台Mac上安装了JDK 1.7.0_72。我正在尝试在Android版本2.3.3的旧Android平板电脑上使用LiveCode独立应用程序。

使用“仅用于开发的标志”选项构建的未经修改的独立版在我的平板电脑上正常运行,但视频无法显示。

首先,我使用LiveCode 6.6.2 for Windows构建Android应用程序。然后我把它复制到我的Mac上。我用了

$ java -jar apktool.jar decode /Volumes/Macintosh\ HD/Users/User/Desktop/apk\ tool/MyApp.apk app

反编译apk文件。它出现在我的主目录中名为“app”的文件夹中,子目录为:

app
    AndroidManifest.xml
    apktool.yml
    assets/
        doc/
        links.txt
        pic/
        vid/
            Demos/
            Examples/
            Other/
                Simple Animation.mp4
                Vimeo Pro Example.html
            Tutorials/
                SQL.html
    build/
    lib/
    res/
    smali/

资产文件夹的内容包含在LiveCode的独立构建器中。我在项目开发期间创建了所有这些文件和文件夹。 vid文件夹中的文件夹包含多个HTML文件和一个mp4文件。我在文件树中只列出了一些html文件。

我通过替换行

更改了文件AndroidManifest.xml
<application android:label="MyApp" android:debuggable="false">

<application android:label="MyApp" android:debuggable="false" android:hardwareAccelerated="true">

在此之后,我再次使用apktool重建了应用程序。我使用sudo,因为here它说我必须使用sudo:

$ sudo java -jar /Volumes/Macintosh\ HD/Users/User/Desktop/apk\ tool/apktool_1.5.2.jar b -a /Volumes/Macintosh\ HD/Developer/android-s-d-k-mac_x86/platform-tools/aapt

看来如果你使用sudo一次,你必须一直使用sudo。所以,现在我必须使用

签名
$ sudo jarsigner -verbose -sigalg SHAwithRSA -digestalg SHA1 -keystore /Volumes/Macintosh\ HD/Users/User/app/dist/MyApp.apk myalias

我确认已签名并更改了文件名,然后对齐了文件

/Volumes/Macintosh HD/Users/User/app/dist/MyApp.apk

/Volumes/Macintosh HD/Users/User/app/dist/MyApp_unaligned.apk

我使用

对齐文件
$ zipalign -v 4 /Volumes/Macintosh\ HD/Users/User/app/dist/MyApp_unaligned.apk /Volumes/Macintosh\ HD/Users/user/app/dist/MyApp.apk

此文件应该适用于我的Android平板电脑。我可以启动并运行该文件,但我的应用程序没有看到文件夹vid/的子文件夹中的任何文件,Simple Animation.mp4除外。但是,它 注意到有文件。检查文件夹vid/中所有文件夹中的文件的重复循环会创建一个列表,但列表中的行是空的,每个文件一行,这意味着它无法确定文件的名称是什么。不用说,我检查了所有文件都包含在新的apk文件中。

可能导致这种情况的原因是什么?

如果您想知道文件路径:我从外部磁盘启动了Mac并使用了内部磁盘上的文件。因此,/ Volumes / Macintosh HD不是此处的系统磁盘。

0 个答案:

没有答案